ps:百度你咋还不死, 不信你搜索一个flare和google比一下,

 ps2:政府真是蛋疼,翻个墙很累。

 

吸一口气,贴一张图,翻过墙写的图片传不上去,不知51cto咋地了?

 

 如果想要玩懂flare估计要懂memcache 废话不多少,不服你去百度。


 

地址: http://labs.gree.jp/Top/OpenSource/Flare/Document/Installation-en.html


wget 'http://labs.gree.jp/data/source/flare-1.0.11.tgz'

tar zxvf flare-1.0.11.tgz

cd flare-1.0.11

./configure --with-boost=/usr/local/boost --with-tokyocabinet=/usr/local/tokyocabinet --prefix=/usr/local/flare

make

make install


配置:

mkdir /usr/local/flare/etc

cp etc/* /usr/local/flare/etc/


启动:

/usr/local/flare/bin/flarei --daemonize  -f /usr/local/flare/etc/flarei.conf


概念

Flare有几个概念,需要理解

index server

这是索引服务器,用于控制node server的状态

注意,client并不直接和index server进行交互。

node server

这是实际存储节点. node有3种role:

master/slave/proxy

master是主节点,slave是分流节点,用于同步复制master

proxy则将client的请求转发到当前合适的节点(包括master/slave)。

有的人不太理解为什么要用proxy,是否多此一举,而实际测试表明,

通过proxy转发的请求的确要比直接connect到实际节点速度差很多。

这是因为,flare是一个集群,其中的node server是可以动态添加,删除的。

当某个node down后,index server会检测到,并标志其state为down。

此外,master 支持partition,因此通过proxy节点,client无需处理这些复杂问题。

根据作者的建议, proxy node应该和client本地运行,这样可以减少多余的tcp请求。


下面是我写的一个脚本,用于搭建一个典型的测试场景:

1个index server

2个master node,启用partition

1个slave,启用balance

由于flare把ip:port作为一个node,因此只需要1个ip,不同的port就可以快速实现测试需要的环境。


$./start_flare.sh

配置文件开始:


#!/bin/sh

#启动index server,监听 127.0.0.1:12120

flarei='/usr/local/flare/bin/flarei'

flarei_config='/usr/local/flare/etc/flarei.conf'

flared='/usr/local/flare/bin/flared'

flared_config='/usr/local/flare/etc/flared.conf'

data='/data/httpd/flare'

cmd="$flarei --daemonize -f $flarei_config"

echo "$cmd"

$cmd

sleep 0.5

#proxy

cmd="$flared --daemonize --data-dir $data/d0 --index-server-name 127.0.0.1 --index-server-port 12120 --server-name 127.0.0.1 --server-port 12121"

echo $cmd

$cmd

sleep 0.5

#master1 node

cmd="$flared --daemonize --data-dir $data/d1 --index-server-name 127.0.0.1 --index-server-port 12120 --server-name 127.0.0.1 --server-port 12122"

echo  $cmd

$cmd

sleep 0.5

#slave node

cmd="$flared --daemonize --data-dir $data/d2 --index-server-name 127.0.0.1 --index-server-port 12120 --server-name 127.0.0.1 --server-port 12123"

echo $cmd

$cmd

sleep 0.5

#master2

cmd="$flared --daemonize --data-dir $data/d3 --index-server-name 127.0.0.1 --index-server-port 12120 --server-name 127.0.0.1 --server-port 12124"

echo $cmd

$cmd

echo "waiting dameon startup…"

sleep 3

echo "set nodes role…."

#exit 1

# 当某个node加入时,默认是proxy role,因此需要修改这些role

# 通过telnet到index server,可以执行这些命令,我们在脚本中可以使用

# nc来自动执行

# node role的命令格式:

# node role server port master|slave|proxy balance partiion

echo "node role 127.0.0.1 12122 master 1 0"|nc 127.0.0.1 12120

# 设置为slave, balance 为2,给于2倍read权重

echo "node role 127.0.0.1 12123 slave 2 0"|nc 127.0.0.1 12120

# 第2个master node,将partition设置为1,表明这是第2个partion,允许

#将部分数据从原来的master 同步过来

echo "node role 127.0.0.1 12124 master 1 1"|nc 127.0.0.1 12120

sleep 2

echo "stats nodes"|nc 127.0.0.1 12120


配置文件结束