riak 的安装和使用

不管是源码编译还是用包安装,riak 的安装不难,只不源码编译安装的通病是不可少:对其它工具的依赖
官方的文档 说明也很清楚了,仔细看看,跟着操作,一般不会出现什么异常。

自己在 CentOS7 上尝试过两次:一次在 aliyun 上源码安装,一次在本地用下载好的包安装,测试时均不发现什么异常。
如果是源码安装,在编译的时候执行

make rel

将会生在一个结点的程序,而如果执行

make devrel

则生成 8 个结点的程序,官方的文档说是 4 个,可能还没来得及更新,实际操作的结果是生成 8 个,可在 Makefile 文件里面修改个数。
之后在 build 目录出现生成的文件。
运行前可考滤使用哪一种格式的配置文件:riak.config或者app.config,默认是使用 etc 下的riak.config, 若要使用app.config
先运行

riak config generate

会生成两个文件:app.xxx.configvm.xxx.args, 把这两个文件移动或者复制到 riak.config 相同目录下即可。
运行 riak 时,app.config 的配置将会覆盖 riak.config 的配置。
运行后可通过执行

riak-admin test

来查看是否可用,如出现:
>Successfully completed 1 read/write cycle to ‘[email protected]

这样的信息说明 ok 了。默认下通过 http 方式使用 riak 服务时,app.config 中限制了只能使用本地 ip, 即如果 127.0.0.1, 如不更改只能在本机中使用,可通过设置成{http,[{"0.0.0.0",8089}]}来取消这一限制
接下来可以通过http 端口tcp 端口 (pb:protobuf)去测试:
* http 方式

curl -XPUT HTTP://192.168.100.44:8098/riak/images/1.jpg  \-H  "Content-type: image/jpeg" --data-binary @file

无错误返回,说明成功把文件上传到 riak, 然后就可以在浏览器中使用HTTP://192.168.100.44:8098/riak/images/1.jpg链接查看。
在这里ipContent-type根据实际情况选择,这里只是测试用。
* tcp 方式
riak 提供了不同语言的 client,在这里使用 go 的第三方 riak 客户端进行测试。

package demo

import (
	"io/ioutil"
	"os"

	"github.com/tpjg/goriakpbc"
)

func JustDemo() {
	println("<<<JustDemo start---------------------------")

	filePath := "/Users/Jialin/Desktop/c.png"
	f, err := os.Open(filePath)
	if err != nil {
		panic(err.Error())
		return

	}
	defer f.Close()
	thisb, err := ioutil.ReadAll(f)
	if err != nil {
		panic(err.Error())
		return
	}
	err = SaveFile("demo", "picd.png", thisb)
	if err != nil {
		panic(err.Error())
		return
	}

	println("-----------------------------JustDemo end>>>")
	return
}

//visit data via http url:    domain:port/riak/bucketName/key
func SaveFile(bucketName, key string, p []byte) error {
	address := "192.168.100.44:8087"
	// var DefaultClient *riak.Client
	DefaultClient := riak.NewClient(address)
	if err := DefaultClient.Connect(); err != nil {
		panic("Cannot Connect to Riak Server:" + address)
	}
	defer DefaultClient.Close()
	bucket, err := DefaultClient.NewBucket(bucketName)
	if err != nil {
		return err
	}

	obj := bucket.NewObject(key)
	// obj.ContentType = "application/octet-stream"
	obj.ContentType = "image/png"
	obj.Data = p
	return obj.Store()
}

正常情况,就可以通过192.168.100.44:8098/riak/demo/picd.png
这个地址访问刚刚上传的图片 (ip:port/riak/bucket name/file name)
本来也想在 freeBSD 上试一下,不过可以是因为装了太新的版本 (freeBSD 10.2,riak 2.1.3), 不官是真接用官方编译好的二进制
程序(无法运行)还是编译安装 (缺少插件) 都没成功。
网上有一些博客作了安装和使用说明,官方也有必要的说明文档(可能更新不够及时,但安装和使用没什么问题), 但自己自己亲自操作过一遍后,以后再次安装或者实际使用过程能顺畅的查找到关键点,不至于再慢慢的看文档。

2015-12-12