MySQL从库集群方案之HAProxy篇
来源:晓辉 责任编辑:admin 发表时间:2013-07-01 11:45 点击:次
【51CTO独家特稿】HAProxy反向代理服务器支持双机热备支持虚拟主机,其配置简单,拥有非常不错的服务器健康检查功能。当其代理的后端服务器出现故障,HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。
这里有两台HAProxy机器,分别安装keepalived,组成热备形式。作用:当一台有问题,另一台可以在1秒内接管。
xinetd服务的作用是检测端口,本文中使用8890端口。HAProxy用http协议检测这个端口是否正常。
MySQL同步状态脚本,是放在从库本地,由xinetd服务来激活脚本,正常就会输出200状态码给HAProxy,证明从库正常;否则,就剔除。(这里就可以加上短信报警了)
系统架构图

使用软件
- HAProxy 1.4.16
- Keepalived 1.1.20
- Xinetd 2.3.14
- MySQL 同步状态脚本 0.2
一、系统约定
系统环境
- OS:CentOS 5.6 x86_64
- MASTER:192.168.1.65
- BACKUP:192.168.1.66
- VIP:192.168.1.67
- serivce Port:3306
工作流程
准备工作:应用配置好slave的VIP 192.168.1.67 端口3306
(1)应用服务器
(2)连接HAProxy的vip 192.168.1.67:3306,根据算法,分配到一台slave。
(3)检测slave的8890端口是否返回http 200状态码。
(4)返回200 状态码,HAProxy 返回正常,继续服务。
(5)返回503,剔除该slave,并将mysql请求转发到另外一台slave。
(6)有问题的slave,发送短信报警,相关人员检查。
二、Keepalived 1.1.20的安装于配置
#cd /var/tmp/
#wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz
#tar zxvf keepalived-1.1.20.tar.gz
#cd keepalived-1.1.20
#./configure –prefix=/usr
#make && make install
#cp /usr/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
coralzd@gmail.com
}
notification_email_from coralzd@gmail.com
smtp_server 192.168.1.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_HAProxy {
script "killall -0 HAProxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 50
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_interface {
eth0
}
virtual_ipaddress {
192.168.1.67
}
track_script {
chk_HAProxy
}
}
三、HAProxy 1.4.16的安装与配置
#cd /var/tmp/
#wget http://HAProxy.1wt.eu/download/1.4/src/HAProxy-1.4.16.tar.gz
#tar -zxvf HAProxy-1.4.16.tar.gz
#cd HAProxy-1.4.16
#make install
#mkdir -p /usr/local/HAProxy/etc
#mkdir -p /usr/local/HAProxy/sbin
#cp examples/HAProxy.cfg /usr/local/HAProxy/etc
#ln -s /usr/local/sbin/HAProxy /usr/local/HAProxy/sbin/HAProxy
#mkdir /usr/share/HAProxy
/etc/HAProxy/HAProxy.cfg
global
log 127.0.0.1 local1 notice
maxconn 4096
chroot /usr/share/HAProxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
#option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen DZW_MYSQL_SLAVE 192.168.1.67:3306
#cookie SERVERID rewrite
mode tcp
maxconn 200
balance roundrobin
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
server mysql_192_168_1_23 192.168.1.23:3306 check port 8890 inter 5s rise 2 fall 3
server mysql_192_168_1_24 192.168.1.24:3306 check port 8890 inter 5s rise 2 fall 3
srvtimeout 20000
listen admin
相关新闻>>
- 发表评论
-
- 最新评论 进入详细评论页>>





