6.nginx 與 keepalived 實現(xiàn)高可用一

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 }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容