一.keepalived是什麼mysql
keepalived最初是爲LVS負載均衡設計的,用於監控LVS集羣系統中的各個節點的服務狀態。後來又加入了基於VRRP的高可用功能,因此也能夠做爲nginx,mysql等服務的高可用解決方案使用。nginx
VRRP(Virtual Router Redundancy Protocol)即虛擬路由冗餘協議,VRRP的出現是爲了解決靜態路由單點故障問題的,當網絡中的某一個節點掛掉時,能夠保證路由的正常運行。sql
二.keepalived的組成和原理centos
WatchDog:負責監控Checkers,VRRP進程的狀態,當checkers或VRRP進程被殺掉時,能夠啓動一個新的進程來工做bash
Checkers:負責檢查真實節點的健康狀態,是keepalived的最主要功能。服務器
VRRP Stack:負責master掛掉後的故障切換,保證服務的連續性,減小服務的不可用時間,當只有一個節點提供服務時,該進程能夠不須要網絡
app
Netlink Reflector:用來設定vrrp的vip地址等。負載均衡
keepalived的原理spa
使用keepalived進行VIP的實現。
虛擬路由冗餘協議,
三.安裝配置keepalived
我使用的時centos6.9系統,直接安裝自帶的keepalived
yum -y install keepalived
相關文件以下
/etc/keepalived /etc/keepalived/keepalived.conf #keepalived服務主配置文件 /etc/rc.d/init.d/keepalived #服務啓動腳本
keepalived的運行日誌默認存放在/var/log/messages
四.搭建高可用
(1)準備兩臺主機,一臺master主服務器(192.168.211.113),一臺backup備用服務器(192.168.211.112),在兩臺服務器上都安裝keepalived
(2)修改配置文件
master主機
vrrp_script check_nginx { # 自定義腳本check_nginx.sh,當nginx掛掉時,停掉keepalived,使虛擬IP切換到備機 script /etc/keepalived/check_nginx.sh # 執行check_nginx.sh腳本 interval 3 # 每3s執行一次 } vrrp_instance VI_1 { state MASTER # 標識爲master interface eth0 # 虛擬ip綁定網卡名稱 virtual_router_id 51 # 虛擬路由id,同一組中全部的服務器須要保持一致 nopreempt priority 100 # 優先級,默認越大優先級越高 advert_int 1 authentication { #鑑權配置 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 自定義虛擬ip,不能衝突 192.168.211.201 } track_script { # 跟蹤執行的腳本 check_nginx } unicast_src_ip 192.168.211.113 #發送單播消息的源ip unicast_peer { 192.168.211.112 # 發送單播消息的目的IP } }
backup主機
vrrp_script check_nginx { # 自定義腳本check_nginx.sh,當nginx掛掉時,停掉keepalived,使虛擬IP切換到備機 script /etc/keepalived/check_nginx.sh # 執行check_nginx.sh腳本 interval 3 # 每3s執行一次 } vrrp_instance VI_1 { state BACKUP # 標識爲BACKUP interface eth0 # 虛擬ip綁定網卡名稱 virtual_router_id 51 # 虛擬路由id,同一組中全部的服務器須要保持一致 nopreempt priority 100 # 優先級,默認越大優先級越高 advert_int 1 authentication { #鑑權配置 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 自定義虛擬ip,不能衝突 192.168.211.201 } track_script { # 跟蹤執行的腳本 check_nginx } unicast_src_ip 192.168.211.112 #設置發送單播消息的源ip unicast_peer { 192.168.211.113 # 設置發送單播消息的目的IP } }
/etc/keepalived/check_nginx.sh內容以下,當nginx掛掉時,停掉keepalived,此時虛擬ip會自動切換
#!/bin/bash nginx_status=$(netstat -ntlp|grep :80|wc -l) if [ $nginx_status -eq 0 ];then service keepalived stop fi
(3)啓動兩臺服務器上的keepalived
直接直接keepalived命令便可,通常虛擬ip會掛在先啓動的那臺服務器上
查看虛擬ip以下
master主機(192.168.211.113)上
backup主機(192.168.211.112)上
停掉master主機(192.168.211.113)上的nginx
[root@server04 ~]# service nginx stop
查看此時master上的IP信息
backup主機(192.168.211.112)上ip信息
能夠看到此時虛擬IP已經切換到backuo主機上