Flare安装配置手记
??Flare是一个高性能的key-value存储数据库,网上有很多这方面的资料,这里不再描述。在安装配置Flare的过程中遇到了一些问题,现记录下来,安装环境为CentOS release 5.5。
?
??首先去?http://labs.gree.jp/Top/OpenSource/Flare/Download-en.html?下载两个安装文件,由于官方不提供rpm包,只有deb和源码下载,所以只好下载源码自己编译安装。下载?Tokyo Cabinet?很顺利,下载flare的时候遇到了问题,用Chrome下载下来的包大小为0字节,所以最后还是直接在服务器上面wget下载,一切正常。
?
??安装?Tokyo Cabinet?也比较简单,configure&make&make install一路下来就OK了,由于不想把路径装得乱七八糟,在configure的时候加上了 --prefix /opt/tokyocabinet 参数。flare需要boost支持,所以需要安装boost,用yum安装比较方便:yum install boost,注意boost一定不能用源码编译安装,否则很可能导致flare编译的时候出现
?
undefined reference to `boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code, char const*, char const*)'
?这种错误,如果很不幸的已经出现了这个错误,解决办法为:先yum remove boost*,再删除boost手工安装时产生的头文件/usr/local/include/boost*,然后再重新yum安装boost:yum install boost*。由于自定义了TC的安装路径,所以需要告诉flare,在configure的时候应加上路径:
?
$ ./configure --with-tokyocabinet=/opt/tokyocabinet --prefix=/opt/flare
?然后make&make install搞定安装。
?
这时候启动flare很可能起不来,提示找不到libtokyocabinet.so.8这个文件,由于/opt下面的路径不会自动加载到动态链接库的查找路径中,因此需要手动添加,修改/etc/ld.so.conf这个文件,在其中加入/opt/tokyocabinet/lib,执行ldconfig,然后flare应该就可以正常启动了。
?
在flare的bin目录下面新建4个配置文件:flare-index,flare-proxy,flare-master,flare-slave,其中flare-index和flare-master这两个配置文件是必须的,也可以根据需要建更多的配置文件。配置文件的名称可以任意定义。为每个配置文件建立一个目录来存放数据。
flare-index(flarei)的配置内容如下:
?
# data directorydata-dir = /opt/flare/data# syslog facilitylog-facility = local0# max connections to acceptmax-connection = 512# node down thresholdmonitor-threshold = 3# node monitoring interval (index server sends "ping" w/ this interval)monitor-interval = 1# server name of myself,一定要写成可以解析的域名或者IPserver-name = 172.16.3.120# server port of myselfserver-port = 12120# max thread pool sizethread-pool-size = 8
?其他配置内容如下(flared)
?
# data directorydata-dir = /opt/flare/datap# name of index server (sync this to "server-name" of flarei.conf)index-server-name = 172.16.3.120# port number of index server (sync this to "server-port" of flarei.conf)index-server-port = 12120# syslog facilitylog-facility = local0# max-connections to acceptmax-connection = 1024# number of lock slots to access recordsmutex-slot = 64# number of proxy request concurrencyproxy-concurrency = 2# server name of myself,一定要写成可以解析的域名或者IPserver-name = 172.16.3.120# server port of myselfserver-port = 12121# stack size of each thread (kb)stack-size = 128# storage optionsstorage-ap = 4storage-bucket-size = 16777216# storage-compress =# storage-large = true# storage type (currently only "tch" is available)storage-type = tch# max number of thread poolthread-pool-size = 16
?然后建一个启动脚本,例如:
?
./flarei -f flarei.conf --daemonizesleep 3./flared -f flarep.conf --daemonize./flared -f flared0.conf --daemonize./flared -f flared1.conf --daemonize
?执行这个脚本即可启动4个flare进程,其中flarei相当于一个hub,让其余的flared进行识别和通信,执行flare的系统命令时,需要登陆到flarei上面。flared可以有许多角色,例如proxy,master,slave,其中proxy用来和客户端直接通信,将客户端的请求分发到后台的nodes上去,master为主节点,slave为从节点,主从节点的具体区别可以去查询flare的官方文档。
??启动好几个flare后,telnet到flarei的监听端口,输入stats nodes命令,可以看到当前flare的节点状态:
?
STAT 172.16.3.120:12121:role proxySTAT 172.16.3.120:12121:state activeSTAT 172.16.3.120:12121:partition -1STAT 172.16.3.120:12121:balance 0STAT 172.16.3.120:12121:thread_type 18STAT 172.16.3.120:12122:role proxySTAT 172.16.3.120:12122:state activeSTAT 172.16.3.120:12122:partition -1STAT 172.16.3.120:12122:balance 0STAT 172.16.3.120:12122:thread_type 16STAT 172.16.3.120:12123:role proxySTAT 172.16.3.120:12123:state activeSTAT 172.16.3.120:12123:partition -1STAT 172.16.3.120:12123:balance 0STAT 172.16.3.120:12123:thread_type 17
?
?可见,默认的flared为proxy角色,现在我们只需要一个proxy:
?
node role 172.16.3.120 12122 master 1 0node role 172.16.3.120 12123 slave 1 0
?
然后再执行stats nodes看看改变是否成功,注意balance=0的node(proxy不属于node)实际上是不会使用的,因此需要把balance=0的nodes设置一下:
?
node role 172.16.3.120 12123 slave 1
node role这个命令的格式为:
node role [node server name] [node server port] [role=(master|slave|proxy)] [balance] ([partition])
?其中balance为0表示不使用,值越大使用频率越高,partition为分区,多个master之间可以自动由proxy将数据分区存放,master中存放的数据与其对应分区的slave中是完全一致的,slave其实相当于该分区master数据的一个备份。
?
$ telnet 172.16.3.120 12121...set key1 0 0 4testSTOREDget key1VALUE key1 0 4testEND
?如果能顺利插入数据,表示flare已经安装并启动成功了。
?
1 楼 ling凌yue月 2011-06-14 问一下:flare应该安装到web服务器上捏? 还是安装到mysql服务器上捏?