twemproxy的安裝要求autoconf的版本在2.64以上,需要先安裝新版autoconf
autoconf安裝
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure
make && make install
cd ..
twemproxy的安裝
git clone https://github.com/twitter/twemproxy.git
autoreconf -fvi #生成configure檔案
./configure --prefix=/opt/twemproxy/ --enable-debug=log
mkdir -p /opt/twemproxy/{run,conf} /data/logs/twemproxy/
ln -s /opt/twemproxy/sbin/nutcracker /usr/bin/
vim conf/nutcracker.yml #編輯配置檔案
alpha:
listen: 172.16.175.106:6379 #監聽端口
hash: fnv1a_64 #key值hash算法,預設fnv1a_64
distribution: ketama #分布算法
#ketama一緻性hash算法;modula非常簡單,就是根據key值的hash值取模;random随機分布
auto_eject_hosts: true #摘除後端故障節點
redis: true #是否是redis緩存,預設是false
timeout: 400 #代理與後端逾時時間,毫秒
server_retry_timeout: 200000 #摘除故障節點後重新連接配接的時間,毫秒
server_failure_limit: 1 #故障多少次摘除
servers:
- 172.16.175.145:6379:1
- 172.16.175.122:6379:1
- 172.16.175.85:6379:1
- 172.16.175.168:6379:1
nutcracker -t -c /opt/twemproxy/conf/nutcracker.yml
#測試配置檔案 如果不加-c 預設是檢測conf/nutcracker.yml
nutcracker -d -c /opt/twemproxy/conf/nutcracker.yml -p /opt/twemproxy/run/redisproxy.pid -o /data/logs/twemproxy/redisproxy.log #啟動
twemproxy測試
1.後端加機器會導緻部分key丢失,機器加的越多,丢失率越高
2.自動摘除故障機器是根據配置來的:server_retry_timeout 是失敗後間隔多少毫秒再連接配接;server_failure_limit 是失敗多少次摘除(有個問題,摘除故障節點後,分布到此節點的key會分布到其他節點,當故障節點恢複後,key還是重新分布到故障節點)
3.如果啟動多個nutcracker程序,需要-s指定監控端口,預設是22222