1.1 haproxy服务部署
1. 上传haproxy安装包到服务器/opt下并解压安装
#tar –zxvf haproxy-1.4.19.tar.gz
#cd haproxy-1.4.19
#make TARGET=linux26
#make install
#mkdir –p /usr/local/haproxy
#cp examples/haproxy.cfg /usr/local/haproxy/haproxy.cfg
2. 编辑配置haproxy.cfg(详见3.3章节添加反向代理主机内容)
#vi /usr/local/haproxy/haproxy.cfg
3. 将haproxy.init配置文件复制到/etc/init.d目录下
4. 添加haproxy开机启动chkconfig haproxy on
5. 启动/停止haproxy服务service haproxy start/stop/restart
1.2 keepalived服务部署
1. 上传keepalived安装包到/opt下并解压安装
#tar -zxvf keepalived-1.1.20.tar.gz
#./configure --prefix=/usr/local/keepalived
# make
# make install
2. 安装成功做成服务模式
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
3. 配置双机热备
#mkdir -p /etc/keepalived/
#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
#chmod +x /etc/init.d/keepalived
#vi /etc/keepalived/keepalived.conf
#监测haproxy进程状态,每2秒执行一次
vrrp_script chk_haproxy {
script "/etc/keepalived/chk_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER #从服务器为BACKUP
interface eth1
virtual_router_id 51
priority 100 #从服务器要低于100
advert_int 1
mcast_src_ip 192.168.100.1 #MASTER服务器IP,从服务器写从服务器的IP
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_haproxy #监测haproxy进程状态
}
virtual_ipaddress {
192.168.100.3 #虚拟IP
}
}
4. 添加keepalived开机启动chkconfig keepalived on
5. 启动/停止haproxy服务service keepalived start/stop/restart
1.3 添加反向代理主机
编辑/usr/local/haproxy目录下的haproxy.cfg配置文件,添加修改后的以下信息
listen ark_7001 0.0.0.0:8003 #修改上一行端口内容
mode http
cookie SRV insert indirect nocache
balance source
option httpclose
option forwardfor
server ark1-http 192.168.100.30:8003 cookie app1inst1 check inter 2000 rise 2 fall 5 #修改上一行IP和端口内容
监控措施
通过配置keepalived.conf文件加入对haproxy进程的监控提高系统可用性,逻辑关系为:当haproxy服务进程无法启动时,主动关闭keepalived服务进程,完成VIP由MASTER服务器漂移至BACKUP服务器以保证链路连通性。
将监控脚本chk_haproxy.sh上传至/etc/keepalived/下,另配置/etc/keepalived/下的haproxy.conf文件加入以下内容:
#监测haproxy进程状态,每2秒执行一次
vrrp_script chk_haproxy {
script "/etc/keepalived/chk_haproxy.sh"
interval 2
weight 2
}
chk_haproxy.sh脚本内容:
status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
if [ "${status}" = "0" ]; then
/etc/init.d/haproxy start
status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)
if [ "${status2}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi