Redis+twemproxy+keepalive+ sentinel实现完整的redis集群方案
Redis:缓存服务器
Twemproxy:redis的负载均衡代理服务器,主要对redis的多主从复制集群进行负载均衡
Keepalive:主要作用是对twemproxy进行容灾,实现twemproxy的高可用
Sentinel:主要作用于redis的主从复制集群的master故障后从新选举新的master
主从集群
服务器(redis) |
146 |
147 |
148 |
149 |
Master(一) |
是 |
|
|
|
- Slave1(6479) |
是 |
|
|
|
- Slave2(6378) |
|
|
是 |
|
Master(二) |
|
是 |
|
|
- Slave1(6379) |
|
是 |
|
|
- Slave2(6378) |
|
|
|
是 |
Twemproxy |
|
|
是 |
是 |
Keepalive |
|
|
是 |
是 |
1. 安装
2. 缺少gcc编译器
3. 依赖软件
yum install wget make gcc gcc-c++
yum -y install tcl
4. Make 编译包不对
5. 安装完测试
//安装完成后,会/usr/local/redis/bin/目录下生成5个可执行文件,
. ls /usr/local/redis/bin/
– redis-benchmark redis-check-aof redis-check-dump redis-cliredis-server
– redis-server:Redis服务器的daemon启动程序
– redis-cli:Redis命令行操作工具。
– redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性
能
– redis-benchmark -h 10.6.2.245 -p 6379 -q -d 500
– redis-check-dump: 检查file.rdb 文件
– redis-check-aof:检查file.aof 文件
. http://blog.chinaunix.net/uid-790245-id-3766268.html
--安装完成后
上面的执行文件,可能直接在redis/src下
6. 四台服务器全部安装
1. 下载安装包
git clonehttps://github.com/twitter/twemproxy.git
cd twemproxy/
CFLAGS="-ggdb3 -O0" autoreconf-fvi && ./configure --prefix=/usr/local/twemproxy --enable-debug=log
2. 编译的时候报错
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
configure.ac:8: error: Autoconf version2.64 or higher is required
configure.ac:8: the top level
autom4te: /usr/bin/m4 failed with exitstatus: 63
aclocal: autom4te failed with exit status:63
autoreconf: aclocal failed with exitstatus: 63
原因是autoconf版本过低 http://www.aiuxian.com/article/p-879159.html
3. 升级之后再次编译安装成功
# make & make test & make install
# /usr/local/twemproxy/sbin/nutcracker -t
nutcracker: configuration file'conf/nutcracker.yml' syntax is ok
cp conf/nutcracker.yml/usr/local/twemproxy/
4. 启动命令
调试启动
/usr/local/twemproxy/sbin/nutcracker -c /usr/local/twemproxy/nutcracker.yml
以守护进程启动
/usr/local/twemproxy/sbin/nutcracker -d -c/usr/local/twemproxy/nutcracker.yml
5. 编辑/usr/local/twemproxy/nutcracker.yml
1. yum -y installkeepalived ipvsadm
2. 配置/etc/keepalived/keepalived.conf文件
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server smtp.yeah.net
smtp_connect_timeout 30
router_id redis_twemproxy
}
vrrp_instance VIP_1 {
interface eth3
state MASTER #文档上说如果都改为BACKUP可以避免抢ip的问题
virtual_router_id 55
priority 100 #优先级设置为不同
virtual_ipaddress {
192.168.118.100/24 dev eth3 label eth3:1
}
}
virtual_server 192.168.118.100 6379 {
delay_loop 3
lb_algo wrr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 22121
real_server 192.168.118.148 22121 {
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.118.149 22121 {
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3. 启动keepalived
/etc/init.d/keepalivedstart
4. 验证keepalived
1. 所有redis启动后配置slave
#在一台slave服务器上执行,以那台服务器为master
slaveof 192.168.146 6379
#将一台slave服务器还原为master
SLAVEOF NO ONE
2. 配置
#工作目录
dir ./tmp
#配置主从服务集群的名字,并且配置master地址,1为slave数据copy的数量,越大master压力越大,但是同步的效果越差
sentinel monitor mymaster 192.168.118.1466379 1
#master超时时间,则进行master选举
sentinel down-after-milliseconds mymaster5000
sentinel parallel-syncs mymaster 1
#选举时间
sentinel failover-timeout mymaster15000
3. 参考文件
http://blog.csdn.net/kelong_xhu/article/details/41846355
4. 启动命令
nohup redis-sentinel ../sentinel.conf >outputlog.txt 2>&1 &
5. 查看信息
Redis实例上查看
– Info Replication
redis-cli -h 192.168.33.111 -p 26379
– info sentinel
– sentinel slaves mymaster(组名)
6. 参考文档
http://www.aiuxian.com/article/p-879159.html
http://www.aiuxian.com/article/p-879158.html
http://www.cnblogs.com/haoxinyue/p/redis.html
http://www.iyunv.com/thread-39985-1-1.html