Keepalived
由于在生產環境使用了mysqlcluster,需要實現高可用負載均衡,這里提供了keepalived+haproxy來實現.
keepalived主要功能是實現真實機器的故障隔離及負載均衡器間的失敗切換.可在第3,4,5層交換.它通過VRRPv2(Virtual Router Redundancy Protocol) stack實現的.
Layer3:Keepalived會定期向服務器群中的服務器.發送一個ICMP的數據包(既我們平時用的Ping程序),如果發現某臺服務的IP地址沒有激活,Keepalived便報告這臺服務器失效,并將它從服務器群中剔除,這種情況的典型例子是某臺服務器被非法關機。Layer3的方式是以服務器的IP地址是否有效作為服務器工作正常與否的標準。
Layer4:主要以TCP端口的狀態來決定服務器工作正常與否。如web server的服務端口一般是80,如果Keepalived檢測到80端口沒有啟動,則Keepalived將把這臺服務器從服務器群中剔除。
Layer5:在網絡上占用的帶寬也要大一些。Keepalived將根據用戶的設定檢查服務器程序的運行是否正常,如果與用戶的設定不相符,則Keepalived將把服務器從服務器群中剔除。
Software Design

keepalived啟動后會有單個進程
| 8352 ? Ss 0:00 /usr/sbin/keepalived8353 ? S 0:00 /_ /usr/sbin/keepalived8356 ? S 0:01 /_ /usr/sbin/keepalived |
父進程:內存管理,子進程管理等等
子進程:VRRP子進程
子進程:Healthchecking 子進程
實例
2臺mysqlcluster 10.1.6.203 master 10.1.6.205 backup
vip 10.1.6.173
目的訪問10.1.6.173 3366端口 分別輪詢通過haproxy轉發到10.1.6.203 3306 和10.1.6.205 3306
mysqlcluster搭建參照之前博客,這里在2臺機上安裝keepalived
| root@10.1.6.203:~# apt-get install keepalivedroot@10.1.6.203:~# cat /etc/keepalived/keepalived.conf vrrp_script chk_haproxy { script "killall -0 haproxy" # verify the pid existance interval 2 # check every 2 seconds weight -2 # add 2 points of prio if OK} vrrp_instance VI_1 { interface eth1 # interface to monitor state MASTER virtual_router_id 51 # Assign one ID for this route priority 101 # 101 on master, 100 on backup nopreempt debug virtual_ipaddress { 10.1.6.173 } track_script { #注意大括號空格 chk_haproxy } notify_master /etc/keepalived/scripts/start_haproxy.sh #表示當切換到master狀態時,要執行的腳本 notify_fault /etc/keepalived/scripts/stop_keepalived.sh #故障時執行的腳本 notify_stop /etc/keepalived/scripts/stop_haproxy.sh #keepalived停止運行前運行notify_stop指定的腳本 } |