HAProxy+keepalived+MySQL實現MHA中slave集群的負載均衡的高可用
Ip地址划分:
240 mysql_b2
242 mysql_b1
247 haproxy1
249 haproxy2
243 VIP
248 client
1、安裝HAProxy
yum install gcc -y
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
cp /usr/src/haproxy/haproxy-1.5.3/examples/haproxy.cfg /usr/local/haproxy/
cp /usr/src/haproxy/haproxy-1.5.3/examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
ln -s /usr/local/haproxy/sbin/* /usr/sbin/
mkdir /etc/haproxy
mkdir /usr/share/haproxy
ln -s /usr/local/haproxy/haproxy.cfg /etc/haproxy/
cd ..
1.2 設置配置文件
1.2.1 拷貝配置文件
[root@HAProxy_247 haproxy]# cp haproxy.cfg /usr/local/haproxy/
cp: overwrite `/usr/local/haproxy/haproxy.cfg'? y
1.2.2 編輯配置文件
[root@HAProxy_247 haproxy]# vim /usr/local/haproxy/haproxy.cfg
注意修改RS的IP:
1.3 啟動HAProxy服務
[root@HAProxy_247 haproxy]# service haproxy start
1.4 訪問HAProxy的網頁
http://localhost:8899/admin-status
用戶名密碼查看配置文件設置
1.5 客戶端測試
2、安裝配置keepalived
2.1 修改yum倉庫
[aa]
baseurl=file:///mnt/LoadBalancer
gpgcheck=0
ebabled=1
2.2 安裝keepalived
yum install keepalived -y
2.3 修改247上配置文件(覆蓋原配置文件即可)
注:keepalived工作機制--同一組(virtual_router_id)的keepalived互相檢測存活,優先級高的作用時,優先級低的沉睡。當優先級高的宕掉時,優先級低的頂替其工作。
vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived vrrp_script chk_haproxy { script "/etc/keepalived/chk.sh" interval 2 } vrrp_instance VI_1 { state BACKUP nopreempt interface eth0 virtual_router_id 51 #定義分組ID,同一組ID相同 priority 100 #優先級 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.18.243 #VIP } track_script { chk_haproxy } notify_backup "/etc/init.d/haproxy restart" //切換主/備/出錯時執行的腳本 notify_fault "/etc/init.d/haproxy stop" }
2.4 修改249上的主配置文件
! Configuration File for keepalived vrrp_script chk_haproxy { script "/etc/keepalived/chk.sh" interval 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass abcd } virtual_ipaddress { 192.168.18.243 } track_script { chk_haproxy } notify_backup "/etc/init.d/haproxy restart" notify_fault "/etc/init.d/haproxy stop" }
2.5 編寫腳本,並放到指定位置
vim /etc/keepalived/chk.sh
#!/bin/bash if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then #判斷haproxy是否存活,如果宕了,停止keepalived服務 /etc/init.d/keepalived stop fi
chmod +x chk.sh
2.6 開啟keepalived並驗證
service keepalived restart
在247上關閉HAProxy后:
2.7 客戶端測試
MHA中failover后,進入HAProxy配置文件中將new_master從HAProxy分發列表中剔除