這篇文章主要講解了“如何用nginx + keepAlive 實(shí)現(xiàn)高可用主從配置”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何用nginx + keepAlive 實(shí)現(xiàn)高可用主從配置”吧!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、臺(tái)江網(wǎng)站維護(hù)、網(wǎng)站推廣。
Keepalived軟件起初是專為L(zhǎng)VS負(fù)載均衡軟件設(shè)計(jì)的,用來管理并監(jiān)控LVS集群系統(tǒng)中各個(gè)服務(wù)節(jié)點(diǎn)的狀態(tài),后來又加入了可以實(shí)現(xiàn)高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協(xié)議)功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(wù)(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件
Keepalived高可用服務(wù)對(duì)之間的故障切換轉(zhuǎn)移,是通過 VRRP 來實(shí)現(xiàn)的。在 Keepalived服務(wù)正常工作時(shí),主 Master節(jié)點(diǎn)會(huì)不斷地向備節(jié)點(diǎn)發(fā)送(多播的方式)心跳消息,用以告訴備Backup節(jié)點(diǎn)自己還活著,當(dāng)主 Master節(jié)點(diǎn)發(fā)生故障時(shí),就無法發(fā)送心跳消息,備節(jié)點(diǎn)也就因此無法繼續(xù)檢測(cè)到來自主 Master節(jié)點(diǎn)的心跳了,于是調(diào)用自身的接管程序,接管主Master節(jié)點(diǎn)的 IP資源及服務(wù)。而當(dāng)主 Master節(jié)點(diǎn)恢復(fù)時(shí),備Backup節(jié)點(diǎn)又會(huì)釋放主節(jié)點(diǎn)故障時(shí)自身接管的IP資源及服務(wù),恢復(fù)到原來的備用角色
關(guān)于怎么安裝這里不做敘述,首先配置 master 節(jié)點(diǎn)
! Configuration File for keepalived global_defs { router_id ip地址 #路由器標(biāo)識(shí),最好寫主機(jī)名或者IP地址,用于標(biāo)識(shí) } vrrp_script chk_nginx { #配置檢查方式,chk_nginx為自定義名稱 script "/etc/keepalived/nginx_check.sh" #腳本的文件地址 interval 2 weight 20 #此值需要大于MASTER的priority減去BACKUP的priority } vrrp_instance VI_1 { state MASTER #主節(jié)點(diǎn)為:MASTER,備節(jié)點(diǎn)為:BACKUP interface eth0 #當(dāng)前虛擬機(jī)網(wǎng)卡 virtual_router_id 51 # 虛擬路由編號(hào),主從要一直 priority 100 #優(yōu)先級(jí) 數(shù)值越大,獲取處理請(qǐng)求的優(yōu)先級(jí)越高 advert_int 1 authentication { #此為認(rèn)證方式,MASTER和BACKUP統(tǒng)一 auth_type PASS auth_pass 1314 } track_script { #調(diào)用上面的檢查腳本 chk_nginx } virtual_ipaddress { #設(shè)定VIP地址 18.50.129.74/24 } }
繼續(xù)配置slave節(jié)點(diǎn)。從節(jié)點(diǎn)backup配置和主節(jié)點(diǎn)一樣,只是state要改成backup, priority 值要比master小點(diǎn)即可。
! Configuration File for keepalived global_defs { router_id ip地址 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight 20 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1314 } track_script { chk_nginx } virtual_ipaddress { 18.50.129.74/24 } }
最后編寫腳本 nginx_check.sh
#!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ]; then /usr/local/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then pkill keepalived fi fi
腳本說明:
腳本邏輯為檢測(cè)進(jìn)程如果沒有nginx就嘗試啟動(dòng)一次,然后等礴兩秒,再檢測(cè),如果還沒有上進(jìn)程就結(jié)束keepalived進(jìn)程。這樣VIP就會(huì)移動(dòng)到備份節(jié)點(diǎn)
我這里是yum安裝的Nginx,所以直接使用nginx命令可以啟動(dòng)nginx,如果你是源碼安裝,或者需要配置下環(huán)境變量或者更改下啟動(dòng)命令和絕對(duì)路徑,并測(cè)試是否能正常啟動(dòng)
如果覺得等待兩秒的時(shí)候過長(zhǎng)可以更改為1秒
測(cè)試:
查看兩個(gè)節(jié)點(diǎn)的Nginx服務(wù)是否啟動(dòng)成功,如果keepalived啟動(dòng)成功會(huì)調(diào)用啟動(dòng)Nginx,前提需要保證Nginx能正常啟動(dòng)
在Master故意更改錯(cuò)Nginx配置文件,并停止Nginx服務(wù)過幾秒查看VIP是否已經(jīng)移動(dòng)至BACKUP,正常是會(huì)移動(dòng)到BACKUP節(jié)點(diǎn)
恢復(fù)Master節(jié)點(diǎn),查看VIP是否回到Master,正常VIP會(huì)綁定到Master
感謝各位的閱讀,以上就是“如何用nginx + keepAlive 實(shí)現(xiàn)高可用主從配置”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何用nginx + keepAlive 實(shí)現(xiàn)高可用主從配置這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!