daemon nbproc 1 group nobody user nobody
pidfile /usr/local/haproxy/run/haproxy.pid ulimit-n 65536 #spread-checks 5m #stats timeout 5m #stats maxconn 100
######## 默认配置 ############ defaults
mode tcp #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
retries 3 #两次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 32000 #默认的最大连接数 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时 #timeout check 2000 #心跳检测超时
log 127.0.0.1 local3 err #[err warning info debug]
######## proxy 配置################# listen proxy_status bind 0.0.0.0:45001 mode tcp
balance roundrobin
server codis_proxy_1 192.168.43.130:19000 weight 1 maxconn 10000 check inter 10s
server codis_proxy_2 192.168.43.131:19000 weight 1 maxconn 10000 check inter 10s
server codis_proxy_3 192.168.43.132:19000 weight 1 maxconn 10000 check inter 10s
######## 统计页面配置 ######## listen admin_stats
bind 0.0.0.0:8099 #监听端口
mode http #http的7层模式 option httplog #采用http日志格式 #log 127.0.0.1 local0 err maxconn 10
stats refresh 30s #统计页面自动刷新时间 stats uri /stats #统计页面url
stats realm XingCloud\\ Haproxy #统计页面密码框上提示文本 stats auth admin:admin #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息 stats admin if TRUE
8. 配置keepalived.conf配置文件 ( 43.130 上配置,43.132备用配置主要修改参数已经标注 )
[root@vmware-130 ~]# vim /data/keepalived/conf/keepalived.conf ! Configuration File for keepalived
global_defs {
notification_email { lwz_benet@163.com }
notification_email_from lwz_benet@163.com
smtp_connect_timeout 30 smtp_server 127.0.0.1 router_id HAProxy_DEVEL }
vrrp_script chk_haproxy {
script \-0 haproxy\ interval 2 }
vrrp_instance HAProxy_HA { state BACKUP interface eth0 virtual_router_id 80 priority 100 #备用为90 advert_int 2
nopreempt #设置不强占,防止业务来回切换。
authentication { auth_type PASS
auth_pass KJj23576hYgu23IP }
track_interface { eth0 }
virtual_ipaddress { 192.168.43.100 }
track_script { chk_haproxy }
#状态通知
notify_master \master\ notify_backup \backup\ notify_fault \fault\ }
\\\\拷贝主上面的keepalived.conf到从上,只需修改priority值参数即可。
创建/data/keepalived/scripts/mail_notify.py邮件通知程序: 详细请访问:http://liweizhong.blog.51cto.com/1383716/1639917 \\\\最后修改下通知信息为英文,中文内容可能会投递失败。
# 配置haproxy日志
[root@vmware-130 ~]# vim /etc/rsyslog.d/haproxy.conf $ModLoad imudp $UDPServerRun 514
local3.* /data/haproxy/logs/haproxy.log local0.* /data/haproxy/logs/haproxy.log
[root@vmware-130 ~]# vim /etc/sysconfig/rsyslog SYSLOGD_OPTIONS=\
[root@vmware-130 ~]# service rsyslog restart
9. 启动haproxy、keepalived服务。(先启动两个haproxy服务,然后在依次启动master、backup上的keepalived服务)
[root@vmware-130 ~]# service haproxy start ( 先启动 haproxy 服务 )
[root@vmware-130 ~]# service keepalived start
10. 测试redis-cli客户端访问
[root@vmware-130 ~]# redis-cli -h 192.168.43.130 -p 45001
备注:redis-cli 命令,codis里面是没有的,我是安装redis服务的,只是用codis而已。
到这里,整个架构已经全部部署完成啦!!!
五、Codis 群集架构故障测试
备注:由于本环境在本地虚拟机上部署,占不涉及到性能测试。codis性能测试可使用redis-benchmark工具
1.停止任意zookeeper节点,检查codis-proxy,dashboard是否正常.
[root@vmware-132 scripts]# zkServer.sh status JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader \\\\目前此节点提供服务
[root@vmware-132 scripts]# zkServer.sh stop \\\\停止此服务,模拟leader挂掉。
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
检查zookeeper其他节点是否重新选取 leader。 [root@vmware-131 ~]# zkServer.sh status JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader \\\\可以看到,vmware-131已经选举为leader.
[root@vmware-130 ~]# zkServer.sh status JMX enabled by default