Keepalived是一個基於VRRP協議來實現的WEB服務高可用方案,能夠利用其來避免單點故障。一個WEB服務至少會有2臺服務器運行Keepalived,一臺爲主服務器(MASTER),一臺爲備份服務器(BACKUP),可是對外表現爲一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。html
假設兩臺機器,服務器一 : 10.1.1.10 服務器二: 10.1.1.11 ,虛擬ip爲 10.1.1.12 系統爲 linux rhel 5.9mysql
keepalived 安裝與配置linux
./configure --prefix=/usr/local/keepalived make make install 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/ mkdir -p /etc/keepalived cd /etc/keepalived/ # 配置 vi keepalived.conf #/usr/local/keepalived/etc/keepalived/keepalived copy
在服務器一上:sql
global_defs { notification_email { # 郵箱配置,略 } } vrrp_instance VI_1 { state MASTER #備用服務器上改成 BACKUP interface eth0 # 使用 ifconfig 查看ip 屬於哪一個網卡號 virtual_router_id 51 #主備必須一直 priority 100 #備用服務器上改成99 優先級,越大越高 advert_int 1 authentication { #主從服務器驗證方式主備的keepalived這2個配置要同樣。 auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.1.1.12 # 虛擬 IP 主從使用相同的虛擬 ip } }
lvs 相關配置,假設 10 和 11 上有 mysql 服務服務器
virtual_server 10.1.1.12 3306 { delay_loop 6 #每隔6秒檢查一次real_server狀態 lb_algo rr lb_kind NAT nat_mask 255.255.255.0 persistence_timeout 50 #回話保持時間 protocol TCP real_server 10.1.1.10 3306 { weight 1 notify_down "/usr/local/keepalived/mysql.sh" #新建這個mysql.sh文件,輸入 pkill keepalived TCP_CHECK { connect_timeout 3 connect_port 3306 } } }
使用:負載均衡
chkconfig keepalived on service keepalived start
驗證:能夠簡單的 ping 真實IP和虛擬 ip檢查配置是否成功,可使用虛擬ip 訪問真實IP部署的程序oop
查看虛擬在哪一個 ip 上網站
ip a
參考:Keepalived配置與使用
安裝keepalived
Linux下keepalived+mysql實現高可用
【大型網站技術實踐】初級篇:藉助LVS+Keepalived實現負載均衡spa