keepalived軟件起初是為LVS負載均衡設計的,用來管理并監(jiān)控LVS集群系統(tǒng)中各個節(jié)點的狀態(tài),后來又加入了可以實現(xiàn)高可用的VRRP功能,因此keepalived除了能夠管理LVS軟件以外,還可以作為(Nginx,mysql)的高可用解決方案。
我們本章要介紹的就是使用keepalived實現(xiàn)Nginx的高可用。
keepalived
keepalived軟件主要是通過VRRP協(xié)議實現(xiàn)高可用功能的,VRRP是Virtual Router Redundancy Protocol (虛擬路由冗余協(xié)議)的縮寫。VRRP出現(xiàn)的目的就是為了解決靜態(tài)路由單點故障問題的,它能夠保證個別節(jié)點宕機后,整個網(wǎng)絡可以不間斷運行,在華為和cisco的交換機上使用的很多。
原理
兩臺主機同時安裝好keepalived并啟動服務,開始正常工作時,由角色為Master的主機獲得所有資源并對用戶提供服務,角色為Backup的主機作為Master主機的熱備,當Master主機失效或者故障時,角色為Backup的主機將自動接管Master主機的所有工作,包括接管VIP資源及相應資源服務。
而當Master主機故障修復后,又會自動接管回來它原來處理的工作,角色為Backup的主機則同時釋放工作,此時兩臺主機恢復到最初啟動時各自的原始角色,這也叫做不搶占原則
keepalived 搭建
官網(wǎng)
官網(wǎng)比較簡陋,我們安裝keepalived一般都是直接使用yum安裝
yum install -y keepalived
[root@bogon ~]# rpm -qa keepalived
keepalived-1.3.5-1.el7.x86_64
[root@bogon ~]# rpm -ql keepalived
/etc/keepalived
/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/lib/systemd/system/keepalived.service
/usr/libexec/keepalived
/usr/sbin/keepalived
啟動
service keepalived start
但是這時候啟動是不成功的,因為你的配置文件使用默認的是錯誤的
如果你偏要啟動,可以tailf -n 200 /var/log/message 查看
keepalived 配置文件說明
etc/keepalived/keepalived.conf
keepalived 軟件是為LVS設置的,所以里面有些配置是LVS用的,我們只使用其高可用部分的配置
全局定義部分
1 ! Configuration File for keepalived
2
3 global_defs {
4 notification_email { #是定義服務故障時的Email地址,可以定義多個
5 acassen@firewall.loc
6 failover@firewall.loc
7 sysadmin@firewall.loc
8 }
9 notification_email_from Alexandre.Cassen@firewall.loc。#指定發(fā)送郵件的發(fā)件人
10 smtp_server 192.168.200.1 #指定發(fā)送郵件的SMTP服務器,如果本機開啟了sendmail或者postfix,那么就可以使用上面的配置發(fā)送郵件
11 smtp_connect_timeout 30 #超時時間
12 router_id LVS_DEVEL #是指keepalived服務器的路由標識,在一個局域網(wǎng)內(nèi),這個標示是唯一的。
13 vrrp_skip_check_adv_addr
14 #vrrp_strict #這條一定要注釋,不然VIP 無法被ping通
15 vrrp_garp_interval 0
16 vrrp_gna_interval 0
}
大括號{} 用來分隔區(qū)塊,要成對出現(xiàn),如果漏寫了半個大括號,keepalived運行時不會報錯,但是也不會產(chǎn)生預期的結果
VRRP實例定義部分
19 vrrp_instance VI_1 { #表示定義了一個實例VI_1,注意這個實例在備節(jié)點也要存在
20 state MASTER #只有MASTER和BACKUP兩種狀態(tài),需要大寫
21 interface eth0 #網(wǎng)絡通信接口,對外提供服務的網(wǎng)絡接口
22 virtual_router_id 51 #虛擬路由ID,需要是數(shù)字,并且在一個keepalived.conf文件中是唯一的,但是MASTER與BACKUP配置中又必須是相同的,否則腦裂
23 priority 100 #數(shù)字越大,優(yōu)先級越高,MASTER的要高于BACKUP的,一般建議差別大與50
24 advert_int 1 #同步通知間隔,MASTER與BACKUP之間通信檢查的時間間隔,單位為s,默認為1
25 authentication {
26 auth_type PASS # 認證權限配置,包括認證類型auth_type和認證密碼auth_pass
#認證類型有PASS(simple password,推薦這個)和AH(IPSEC)兩種
#官方推薦使用PASS,驗證密碼使用明文方式,最好長度不要超過8個字符,,MASTER與BACKUP要使用相同的密碼才能通信
27 auth_pass 1111
28 }
29 virtual_ipaddress { #虛擬地址,可以多個,這就是VIP,會漂移的那個,這個IP原本是不存在的,是硬生生的被你造出來的
#所以這種IP地址最好在設計網(wǎng)絡的時候單獨設計一個網(wǎng)段,確保這個網(wǎng)段在你的真實網(wǎng)絡中能夠通信
30 192.168.200.16
31 192.168.200.17
32 192.168.200.18
33 }
34 }