版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1nginx負(fù)載均衡高可用1.1什么是負(fù)載均衡高可用nginx作為負(fù)載均衡器,所有請求都到了nginx,可見nginx處于非常重點的位置,如果nginx服務(wù)器宕機后端web服務(wù)將無法提供服務(wù),影響嚴(yán)重。為了屏蔽負(fù)載均衡服務(wù)器的宕機,需要建立一個備份機。主服務(wù)器和備份機上都運行高可用(HighAvailability)監(jiān)控程序,通過傳送諸如“Iamalive”這樣的信息來監(jiān)控對方的運行狀況。當(dāng)備份機不能在一定的時間收到這樣的信息時,它就接管主服務(wù)器的服務(wù)IP并繼續(xù)提供負(fù)載均衡服務(wù);當(dāng)備份管理器又從主管理器收到“Iamalive”這樣的信息時,它就釋放服務(wù)IP地址,這樣的主服務(wù)器就開始再次提供負(fù)載均衡服務(wù)。1.2keepalived+nginx實現(xiàn)主備1.2.1什么是keepalivedkeepalived是集群管理中保證集群高可用的一個服務(wù)軟件,用來防止單點故障。Keepalived的作用是檢測web服務(wù)器的狀態(tài),如果有一臺web服務(wù)器死機,或工作出現(xiàn)故障,Keepalived將檢測到,并將有故障的web服務(wù)器從系統(tǒng)中剔除,當(dāng)web服務(wù)器工作正常后Keepalived自動將web服務(wù)器加入到服務(wù)器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復(fù)故障的web服務(wù)器。1.2.2keepalived工作原理keepalived是以VRRP協(xié)議為實現(xiàn)基礎(chǔ)的,VRRP全稱VirtualRouterRedundancyProtocol,即虛擬路由冗余協(xié)議。虛擬路由冗余協(xié)議,可以認(rèn)為是實現(xiàn)路由器高可用的協(xié)議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務(wù)的vip(VIP=VirtualIPAddress,虛擬IP地址,該路由器所在局域網(wǎng)其他機器的默認(rèn)路由為該vip),master會發(fā)組播,當(dāng)backup收不到VRRP包時就認(rèn)為master宕掉了,這時就需要根據(jù)VRRP的優(yōu)先級來選舉一個backup當(dāng)master。這樣的話就可以保證路由器的高可用了。keepalived主要有三個模塊,分別是core、check和VRRP。core模塊為keepalived的核心,負(fù)責(zé)主進程的啟動、維護以及全局配置文件的加載和解析。check負(fù)責(zé)健康檢查,包括常見的各種檢查方式。VRRP模塊是來實現(xiàn)VRRP協(xié)議的。詳細(xì)參考:Keepalived權(quán)威指南中文.pdf1.2.3keepalived+nginx實現(xiàn)主備過程初始狀態(tài)主機宕機1.2.4高可用環(huán)境兩臺nginx,一主一備:和兩臺tomcat服務(wù)器:、1.2.5安裝keepalived分別在主備nginx上安裝keepalived,參考“安裝手冊”進行安裝:
I安裝包回1kwepalLmd索裝手冊.■locH1.2.6配置keepalived主nginx修改主nginx下/etc/keepalived/keepalived.conf文件!ConfigurationFileforkeepalived#全局配置global_defs{notification_email{#指定keepalived在發(fā)生切換時需要發(fā)送email到的對象,行一個XXXXXX.}notification_email_fromXXXXXX. #指定發(fā)件人#smtp_serverXXX.smtp.#smtp_connect_timeout30router_idLVS_DEVEL一個標(biāo)識}財指定smtp服務(wù)器地址#指定smtp連接超時時間#財指定smtp服務(wù)器地址#指定smtp連接超時時間#運行keepalived機器的vrrp_instanceVI_1{stateMASTERinterfaceeth0virtual_router_idpriority100advert_int1位是秒authentication{auth_typePASSauth_pass8888}virtual_ipaddress{0051#設(shè)置實例綁定的網(wǎng)卡#同一實例下virtual_router_id必須相同#MASTER權(quán)重要高于BACKUP比如BACKUP為99#設(shè)置認(rèn)證#主從服務(wù)器驗證方式#設(shè)置vip#可以多個虛擬#設(shè)置認(rèn)證#主從服務(wù)器驗證方式#設(shè)置vip#可以多個虛擬IP,換行即可#指定發(fā)件人#指定smtp服務(wù)器地址#指定發(fā)件人#指定smtp服務(wù)器地址#指定smtp連接超時時間#運行keepalived機器的vrrp_instanceVI_1{stateBACKUPinterfaceeth0virtual_router_idpriority99advert_int1位是秒authentication{auth_typePASSauth_pass8888}virtual_ipaddress{00}}51#設(shè)置認(rèn)證#主從服務(wù)器驗證方式#設(shè)置vip#可以多個虛擬IP,換行即可修改備nginx下/etc/keepalived/keepalived.conf文件配置備nginx時需要注意:需要修改 state為BACKUP,priority比MASTER低,virtual_router_id和master的值一致!ConfigurationFileforkeepalived#全局配置global_defs{notification_email{#指定keepalived在發(fā)生切換時需要發(fā)送email到的對象,行一個XXXXXX.}notification_email_fromXXXXXX.#smtp_serverXXX.smtp.#smtp_connect_timeout30router_idLVS_DEVEL一個標(biāo)識}#標(biāo)示狀態(tài)為MASTER備份機為BACKUP#設(shè)置實例綁定的網(wǎng)卡#同一實例下virtual_router_id必須相同#MASTER權(quán)重要高于BACKUP比如BACKUP為99#MASTER與BACKUP負(fù)載均衡器之間同步檢查的時間間隔,單1.2.7測試主備nginx都啟動keepalived及nginx。servicekeepalivedstart./nginx初始狀態(tài)查看主nginx的eth0設(shè)置:vip綁定在主nginx的eth0上。[rt>Dt§server01sbin]#/sbin/ipaddshowethO2:euhO:<EROADCASTrMULTICASTPETPrLO1?ER_UP>KLU.1500qdlSCprirD_ra3LSLdLeunknownqien1000link/ether0D:0c:29:d9:47:5Sbr<iff:ff:ff:ff:ff:ffinet192.1能」皿.3,24brdL9A直MWL25S[吁peglobalethO|inet192,166,101,100/32acopeglobalethO|metfciteeu: :ted.y:i7be/t4acopelimevalid_lft.foreverpreferred_lftforever查看備nginx的eth0設(shè)置:vip沒有綁定在備nginx的eth0上。[root@3ervEr01keepalived]t/sbin/ipaddshowethD七ethD:<BRCADZASTrMULTICASTr7FP1OWEETUP>mtu1530qaiscpfifo_faststateUlIKNOWqlen1000link/emerD0:0c:29:5c:83:cabrdrr:rrirr:rr:rrirfinet192.1£6*101.4/21brd192.1£S.101.255acopeglobalethOinst6feSO::20c:29ff:f^5c:83ca/£4scopelinkvialid_lftforeverpreferred_lftforever訪問ccc.test.,可以訪問。主機宕機將主nginx的keepalived停止或?qū)⒅鱪ginx關(guān)機(相當(dāng)于模擬宕機),查看主nginx的eth0:eth0沒有綁定vip[root@server01sbin]#servicekeepalivedstop悸止keepalived: [磷定][0server01sbin]B:/sbin/ipaddshowethO2xethO:<EROADCASTPMULTICASTfUPPLO}i?EB._UP>mtu1503gdiacpfifD_faatatateUNKliOWqlen1000unk/eLherOD:Dc:29:<is:47:5Si>r-irr:ir:rr:i:r:rr:rrinet192-lS8?lD1.3/24brd55scopeglofcalethOinet;6性臼在d9:VS暨時scopelinkv己lid1ftforeverpreferredLftfor-ever注意這里模擬的是停止keepalived進程沒有模擬宕機,所以還要將nginx進程也停止表示主nginx服務(wù)無法提供。查看備nginx的eth0:vip已經(jīng)漂移到備nginx。[root@3£everOlkeepalived]#/sbin/ipaddstiow=thO2:cthO:<BROADCA5T,MULTICASTrUFr mtu150Dqdiscpzi±0'_za.3tstateUNKIiOWqlen1000link/etheraO:Qc:29:5c:E3:cafcrd=f:z=:=z:z=:=z:z= -inet292.16£.101.-=/24bM192.16^.101.255sczpsjlsbalezhOinet292..101.100/3QDpe"glotalethO|inetGfe80::2Cc:2?zz:ze5c:83cb/64scope1inkvaZid_Zftforeverpreferred^lftzle^vee訪問ccc.test.,可以訪問。主機恢復(fù)將主nginx的keepalived和nginx都啟動。查看主nginx的eth0:查看備nginx的eth0:vip漂移到主nginx。[TDt>t@3erver01sbin]#servicekeepialivedstarL正在啟功keepalived: [確定][root0serverOlsbin]#/abin/ipaddshowethO2:ethO:<BROADCASTrMULTICB5TpUPPLOWER_UP>mtu1500cdiacpfifD_fa.3tstateUNKNOWNql-en1000link/etherOD:Oc:29:d9:4^:58brdff:ff:ff:ff:ff:ffgt; brd192.亶.明5mcgpegloba.1ethO[in丘i; 與i3?]_(]],-icici/gz日ccipeglobaj.£12101 [inet€feSO::20c:29ff:fed9:475B/€43copelinkvalid1ftforeverpreferred1ftforever查看備nginx的eth0:eth0沒有綁定vip[root.0server01ksepialived]#/sbin/ipiadd日howethO2:?thO:BROADCASTPN01IICASTrUPrLOWEB._[TP>mtu1503qdiscpfifo_faststateUNENCWNqlenLOOOlink/ether03:Qc:2S:5c:83:cabrdff:ff:ff:ffinet192.168.101-4/24brd192.168.1C1.255scopeglobalettiOinet6fe30::2Qc:29ff:f^5c:83ca/54scopelinkvialid_lftforeverpreferred_lftforever訪問:ccc.test.,正常訪問。注意:主nginx恢復(fù)時一定要將nginx也啟動(通常nginx啟動要加在開機啟動中),否則即使vip漂移到主nginx也無法訪問。1.2.8解決nginx進程和keepalived不同時存在問題問題描述keepalived是通過檢測keepalived進程是否存在判斷服務(wù)器是否宕機,如果keepalived進程在但是nginx進程不在了那么keepalived是不會做主備切換,所以我們需要寫個腳本來監(jiān)控nginx進程是否存在,如果nginx不存在就將keepalived進程殺掉。nginx進程檢測腳本在主nginx上需要編寫nginx進程檢測腳本(check_nginx.sh),判斷nginx進程是否存在,如果nginx不存在就將keepalived進程殺掉,check_nginx.sh容如下:#!/bin/bash#如果進程中沒有nginx則將keepalived進程kill掉A='ps-Cnginx--no-header|wcT' ##查看是否有nginx進程把值賦給變量Aif[$A-eq0:;then ##如果沒有進程值得為零servicekeepalivedstop ##則結(jié)束keepalived進程fi將check_nginx.sh拷貝至/etc/keepalived下,腳本測試:將nginx停止,將keepalived啟動,執(zhí)行腳本:sh/etc/keepalived/check_nginx.sh[DM-t@server01keepsLived;]ah/etc/keepa1ived/ch&c.k_ri^inx.3h.惇止keepalived: [確£]從執(zhí)行可以看出自動將keepalived進程kill掉了。修改keepalived.conf修改主nginx的keepalived.conf,添加腳本定義檢測:注意下邊紅色標(biāo)識地方:#全局配置global_defs{notification_email{#指定keepalived在發(fā)生切換時需要發(fā)送email到的對象,一行一個XXXXXX.}notification_email_#指定發(fā)件人#smtp_serverXXX.smtp. #指定smtp服務(wù)器地址#smtp_connect_timeout30 #指定smtp連接超時時間router_idLVS_DEVEL #運行keepalived機器的一個標(biāo)識}vrrp_scriptcheck_nginx{script"/etc/keepalived/check_nginx.sh" ##監(jiān)控腳本interval2 ##時間間隔,2秒weight2 ##權(quán)重}
vrrp_instanceVI_1{stateMASTER#標(biāo)示狀態(tài)為MASTER備份
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 百威中國供應(yīng)鏈專員筆試題庫含答案
- 聚美優(yōu)品運營主管面試問題集
- 英語教師面試全攻略教學(xué)技巧與知識測試題
- 2025年城市清潔水源工程可行性研究報告
- 2026屆湖北省云學(xué)聯(lián)盟高三上學(xué)期12月考試歷史試題(含答案)
- 2025年教育國際化合作項目可行性研究報告
- 2025年城市共享單車管理平臺項目可行性研究報告
- 2025年某市水資源綜合利用項目可行性研究報告
- 2026年漳州衛(wèi)生職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及答案詳解一套
- 2026年廣州城建職業(yè)學(xué)院單招綜合素質(zhì)考試題庫及參考答案詳解
- 醫(yī)療器械臨床評價報告模板
- 污染場地調(diào)查評價與修復(fù)
- 生物計算機課件
- 骶神經(jīng)調(diào)節(jié)治療盆底功能障礙性疾病課件
- 浙江省優(yōu)秀安裝質(zhì)量獎創(chuàng)優(yōu)計劃申報表實例
- 新時代背景下企業(yè)人力資源管理的數(shù)字化轉(zhuǎn)型探研共3篇
- 四川綿陽2020年中考語文試題
- 施工進度計劃編制依據(jù)及原則
- 奧的斯電梯toec-40調(diào)試方法
- 化工原理(下)第4章液液萃取
- 重點監(jiān)管的危險化學(xué)品名錄(完整版)
評論
0/150
提交評論