




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章
HAProxy七層負(fù)載集群7.1HAProxy簡(jiǎn)介7.2HAProxy配置文件解析7.3HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.4HAProxy日志配置策略熟悉HAProxy的特點(diǎn)熟悉HAProxy配置文件的組成部分掌握HAProxy七層負(fù)載集群的搭建了解HAProxy的日志配置策略引言第6章提到的四層負(fù)載均衡技術(shù)主要是根據(jù)IP+端口的方式進(jìn)行負(fù)載,對(duì)所有的請(qǐng)求一視同仁,按指定的算法進(jìn)行調(diào)度。實(shí)際上,一成不變的事物并不能持久適應(yīng)社會(huì)的發(fā)展。為了滿(mǎn)足業(yè)務(wù)發(fā)展智能化的需求,現(xiàn)階段的網(wǎng)站在OSI參考模型的基礎(chǔ)上創(chuàng)新實(shí)現(xiàn)了七層負(fù)載均衡,對(duì)用戶(hù)的請(qǐng)求進(jìn)行智能分類(lèi),再交由對(duì)應(yīng)的集群進(jìn)行處理,提高效率的同時(shí)實(shí)現(xiàn)了系統(tǒng)的“人性化”。本章將介紹七層負(fù)載均衡技術(shù)HAProxy,以及該技術(shù)在實(shí)際中的應(yīng)用。7.1HAProxy簡(jiǎn)介HAProxy概念HAProxy的特點(diǎn)負(fù)載均衡的性能對(duì)比HAproxy是一款高性能的負(fù)載均衡應(yīng)用,能夠完美支撐萬(wàn)級(jí)并發(fā),因其專(zhuān)注于負(fù)載均衡,因此與Nginx相比在負(fù)載均衡方面做更好,更專(zhuān)業(yè)。7.1
HAProxy簡(jiǎn)介HAProxy是一款由C語(yǔ)言開(kāi)發(fā),基于TCP(第四層)和HTTP(第七層)應(yīng)用的負(fù)載均衡軟件,與LVS一樣,是一個(gè)專(zhuān)業(yè)的高性能負(fù)載均衡,并且是免費(fèi)、快速并且可靠的一種解決高負(fù)載的方案。HAProxy特別適用于負(fù)載特大的Web站點(diǎn),最高極限支持10Gbps的并發(fā),可靠性和穩(wěn)定性非常好,可以與硬件級(jí)的負(fù)載均衡設(shè)備F5相媲美。7.1
HAProxy簡(jiǎn)介7.1.1
HAProxy概念用戶(hù)訪問(wèn)網(wǎng)站時(shí)后端服務(wù)器會(huì)生成Session用來(lái)存儲(chǔ)用戶(hù)信息。HAProxy有3種方式保持客戶(hù)端和服務(wù)端Session的親緣性,具體如下所示。1.用戶(hù)IP識(shí)別HAProxy將用戶(hù)IP經(jīng)過(guò)Hash算法計(jì)算后固定到真實(shí)服務(wù)器上。2.Cookie識(shí)別HAProxy將Web服務(wù)器IP發(fā)送到客戶(hù)端的Cookie中,然后在客戶(hù)端的Cookie中插入HAProxy定義的后端服務(wù)器的CookieID。3.Session識(shí)別HAProxy將后端服務(wù)器產(chǎn)生的Session和后端服務(wù)器標(biāo)識(shí)存在HAProxy的一張表中,客戶(hù)端請(qǐng)求時(shí)首先查詢(xún)?cè)摫怼?.1
HAProxy簡(jiǎn)介7.1.1
HAProxy概念HAProxy的優(yōu)勢(shì)如下所示。免費(fèi)開(kāi)源,負(fù)載均衡功能較為豐富,能夠支持TCP/HTTP兩種協(xié)議層的負(fù)載均衡,穩(wěn)定性極好。支持8種左右的負(fù)載均衡算法,這些負(fù)載均衡算法幾乎能夠滿(mǎn)足各種需求。支持基于事件驅(qū)動(dòng)的鏈接處理模式與單進(jìn)程處理模式(與Nginx類(lèi)似),使性能更加卓越。擁有功能豐富的監(jiān)控頁(yè)面,能夠使用戶(hù)實(shí)時(shí)了解系統(tǒng)的當(dāng)前狀況。具備功能強(qiáng)大的ACL(訪問(wèn)控制列表)支持,提供給用戶(hù)極大的方便。7.1
HAProxy簡(jiǎn)介7.1.2
HAProxy的特點(diǎn)HAProxy是基于單進(jìn)程模式進(jìn)行處理的,實(shí)際上,HAProxy的處理模式不僅有單進(jìn)程,還有多線程處理模式。這兩種模式的區(qū)別如表。7.1
HAProxy簡(jiǎn)介7.1.2
HAProxy的特點(diǎn)處理模式說(shuō)明單進(jìn)程所有客戶(hù)端連接全部都由同一個(gè)服務(wù)進(jìn)程來(lái)處理,目標(biāo)就是等待連接,來(lái)一個(gè)分配一個(gè),主要消耗CPU多線程多線程模式消耗內(nèi)存,會(huì)限制并發(fā)而且多線程需要進(jìn)程間通信,也會(huì)消耗相當(dāng)多的cpu資源七層負(fù)載均衡和四層負(fù)載均衡最主要的區(qū)別是,七層負(fù)載均衡可以獲得客戶(hù)請(qǐng)求的HTTP頭部信息。HTTP請(qǐng)求頭信息包含用戶(hù)訪問(wèn)的IP、HTTP請(qǐng)求類(lèi)型(GETPOST)、域名主機(jī)地址、瀏覽器的類(lèi)型以及請(qǐng)求的URL明細(xì)等。七層負(fù)載均衡的工作原理也是根據(jù)HTTP請(qǐng)求頭進(jìn)行的判斷和轉(zhuǎn)發(fā)。7.1
HAProxy簡(jiǎn)介7.1.2
HAProxy的特點(diǎn)HAProxy七層負(fù)載均衡的原理架構(gòu)圖。HAProxy的工作原理主要有以下4步。(1)客戶(hù)端將請(qǐng)求發(fā)送到負(fù)載均衡服務(wù)器,此時(shí)請(qǐng)求報(bào)文源地址是CIP,目標(biāo)地址并不是DIP+IP端口,而是URL;(2)負(fù)載均衡服務(wù)器收到報(bào)文后,代替客戶(hù)端與RS建立TCP連接,報(bào)文的源地址則為DIP,將客戶(hù)端請(qǐng)求報(bào)文的目標(biāo)IP地址改為后端服務(wù)器的RIP地址,并且還有不變的目標(biāo)URL;(3)請(qǐng)求報(bào)文發(fā)送到后端服務(wù)器后,由于報(bào)文的目標(biāo)地址是真實(shí)服務(wù)器,所以會(huì)響應(yīng)該請(qǐng)求,并將響應(yīng)報(bào)文返還給負(fù)載均衡服務(wù)器;(4)最后再由負(fù)載均衡服務(wù)器將此報(bào)文重新打包,然后將源地址修改為CIP地址并發(fā)送給客戶(hù)端。簡(jiǎn)而言之,HAProxy七層負(fù)載能夠獲取應(yīng)用層HTTP的請(qǐng)求內(nèi)容。7.1
HAProxy簡(jiǎn)介7.1.2
HAProxy的特點(diǎn)HAProxy作為七層負(fù)載均衡的應(yīng)用場(chǎng)景有以下幾種。由于HAProxy七層負(fù)載是在應(yīng)用層,那么只能與Tomcat、PHP等Web服務(wù)器做負(fù)載均衡。HAProxy七層負(fù)載支持虛擬主機(jī)功能,即可以通過(guò)請(qǐng)求域名對(duì)后端服務(wù)器就行訪問(wèn)。比如,客戶(hù)端訪問(wèn)RS1域名,該請(qǐng)求則會(huì)被轉(zhuǎn)發(fā)至RS1服務(wù)器;客戶(hù)端訪問(wèn)RS2域名,該請(qǐng)求則會(huì)被轉(zhuǎn)發(fā)至RS2服務(wù)器。HAProxy七層負(fù)載可以根據(jù)URL進(jìn)行請(qǐng)求轉(zhuǎn)發(fā),比如,客戶(hù)端請(qǐng)求訪問(wèn)的URL中包含A目錄,該請(qǐng)求則會(huì)發(fā)送至A服務(wù)器;客戶(hù)端請(qǐng)求訪問(wèn)的URL中包含B目錄,該請(qǐng)求則會(huì)發(fā)送至B服務(wù)器。HAProxy七層負(fù)載可以根據(jù)瀏覽器類(lèi)型進(jìn)行請(qǐng)求轉(zhuǎn)發(fā),比如,客戶(hù)端使用火狐瀏覽器請(qǐng)求,該請(qǐng)求則會(huì)發(fā)送至A服務(wù)器;客戶(hù)端使用火狐谷歌瀏覽器請(qǐng)求,該請(qǐng)求則會(huì)發(fā)送至B服務(wù)器。7.1
HAProxy簡(jiǎn)介7.1.2
HAProxy的特點(diǎn)LVS、Nginx和HAProxy是目前企業(yè)集群中最常用的3種負(fù)載均衡軟件,也是本書(shū)講解的重點(diǎn)。負(fù)載均衡的選用與企業(yè)規(guī)模息息相關(guān),大型網(wǎng)站或并發(fā)大的業(yè)務(wù),優(yōu)先考慮LVS;中小型的Web業(yè)務(wù),優(yōu)先選用Nginx和HAProxy;云端上的業(yè)務(wù)可考慮選用SLB負(fù)載均衡。不同負(fù)載均衡支持的并發(fā)級(jí)別如表所示。7.1
HAProxy簡(jiǎn)介7.1.3
負(fù)載均衡的性能對(duì)比負(fù)載均衡類(lèi)型支持并發(fā)數(shù)Tomcat1KApache3K~5KIIS0.5W~1W七層(Nginx、HAProxy、SLB)2W~5W四層(Nginx、HAProxy)10W~50WLVS-NAT模式50W~100WLVS-DR模式100W~400W硬件負(fù)載均衡(F5、Netscaler)400W~800W7.2HAProxy配置文件解析globaldefaultsfrontendbackendHAProxy的安裝非常簡(jiǎn)便,通過(guò)YUM源下載HAProxy軟件時(shí),其配置文件的默認(rèn)路徑為/etc/haproxy/haproxy.cfg。HAProxy的默認(rèn)基本配置包含4個(gè)部分,分別為global、defaults、frontend和backend,并且每個(gè)部分的配置指令需要縮進(jìn)。(1)global該部分位于配置文件的頂部,表示全局配置,用于設(shè)定全局配置參數(shù),一般與操作系統(tǒng)配置、進(jìn)程管理、安全相關(guān),屬于進(jìn)程級(jí)的配置。7.2
HAProxy配置文件解析(1)global7.2
HAProxy配置文件解析global部分默認(rèn)的配置代碼。globallog
local2chroot
/var/lib/haproxypidfile
/var/run/haproxy.pidmaxconn
4000user
haproxygroup
haproxydaemon每個(gè)選項(xiàng)的含義如下所示。log:全局的日志配置。使用log指定使用上的rsyslog服務(wù)中的local2日志設(shè)備,后面還可以指定日志級(jí)別,比如err、warning、info和debug。chroot:修改HAProxy的工作目錄至指定的目錄,HAProxy的運(yùn)行路徑。pidfile:設(shè)置HAProxy進(jìn)程的pid文件。maxconn:設(shè)定每個(gè)HAProxy進(jìn)程的最大連接數(shù)。user/group:user同uid,指定用戶(hù)和組運(yùn)行HAProxy。daemon:設(shè)置HAProxy以守護(hù)進(jìn)程的方式在后臺(tái)運(yùn)行。(2)defaults該部分表示默認(rèn)配置,用于為后續(xù)的配置部分設(shè)置公用的默認(rèn)值。換句話說(shuō),此處的參數(shù)值,將會(huì)自動(dòng)引用到后續(xù)的frontent、backend以及l(fā)isten部分中。。7.2
HAProxy配置文件解析defaults部分默認(rèn)的配置代碼。defaultsmodehttplogglobaloptionhttplogoptiondontlognulloptionhttp-server-closeoptionforwardforexcept/8optionredispatchretries3timeouthttp-request10stimeoutqueue1mtimeoutconnect10stimeoutclient1mtimeoutserver1mtimeouthttp-keep-alive10stimeoutcheck10smaxconn3000(2)defaults7.2
HAProxy配置文件解析主要選項(xiàng)的含義如下所示。mode:設(shè)置HAProxy實(shí)例的運(yùn)行模式,可選HTTP或TCP模式。option:設(shè)置為httplog參數(shù),表示日志類(lèi)別為HTTP日志類(lèi)型;設(shè)置為dontlognull參數(shù),表示不記錄健康檢查日志信息;設(shè)置為redispatch,表示故障轉(zhuǎn)移,與后端服務(wù)器會(huì)話失敗后,將會(huì)話轉(zhuǎn)移至其它健康機(jī)器。optionhttp-server-close:表示當(dāng)客戶(hù)端超時(shí)保持長(zhǎng)連接時(shí),服務(wù)器主動(dòng)斷開(kāi)連接。optionforwardfor:可在HTTPHeader中配置參數(shù),使得后端服務(wù)器獲取客戶(hù)端IP。retries:設(shè)置與后端服務(wù)器嘗試連接的最大次數(shù),超過(guò)此值就認(rèn)為后端服務(wù)器不可用。timeouthttp-request:當(dāng)客戶(hù)端發(fā)起連接但不請(qǐng)求數(shù)據(jù)時(shí),關(guān)閉客戶(hù)端連接。timeoutqueue:等待的最大時(shí)長(zhǎng)。timeoutconnect:設(shè)置將客戶(hù)端請(qǐng)求轉(zhuǎn)發(fā)至后端服務(wù)器所需要等待的超時(shí)時(shí)長(zhǎng)。timeoutclient:客戶(hù)端非活動(dòng)時(shí)連接的超時(shí)時(shí)間。timeoutserver:服務(wù)器非活動(dòng)時(shí)回應(yīng)客戶(hù)端連接的超時(shí)時(shí)間。timeouthttp-keep-alive:設(shè)置新的http請(qǐng)求連接建立的最大超時(shí)時(shí)間。timeoutcheck:設(shè)置對(duì)后端服務(wù)器的健康檢測(cè)的超時(shí)時(shí)間。maxconn:最大并發(fā)連接數(shù)。(3)frontend該部分表示前端部分,用于設(shè)置客戶(hù)端可以連接的IP地址和端口。frontend部分可以依據(jù)ACL規(guī)則指定后端backend。7.2
HAProxy配置文件解析frontend部分默認(rèn)的配置代碼。frontendmain*:5000aclurl_staticpath_beg-i/static/images/javascript/stylesheetsaclurl_staticpath_end-i.jpg.gif.png.css.jsuse_backendstaticifurl_staticdefault_backendapp第1條規(guī)則名字為url_static,通過(guò)path_beg方法定義了若客戶(hù)端在請(qǐng)求的URL中以/static、/images、/javascript、/stylesheets路徑開(kāi)頭時(shí),返回TRUE;第2條規(guī)則名字為url_static,通過(guò)path_end方法定義了若客戶(hù)端在請(qǐng)求的URL中以.jpg、.gif、.png、.css、.js結(jié)尾時(shí),返回TRUE。(3)frontendACL規(guī)則常在frontend部分中被使用,幫助HAProxy實(shí)現(xiàn)了兩種主要的功能,如下所示。①通過(guò)使用ACL規(guī)則可檢查客戶(hù)端的請(qǐng)求是否合法,若符合ACL規(guī)則,則放行,否則直接中斷請(qǐng)求。②符合ACL規(guī)則的請(qǐng)求將被轉(zhuǎn)發(fā)至后端真實(shí)服務(wù)器,實(shí)現(xiàn)基于ACL規(guī)則的負(fù)載均衡。7.2
HAProxy配置文件解析(3)frontend7.2
HAProxy配置文件解析ACL規(guī)則的使用格式如下所示。acl
自定義的ACL名稱(chēng)
acl方法
-i
[匹配的路徑或文件]acl關(guān)鍵字表示由此開(kāi)始定義ACL規(guī)則;acl方法表示實(shí)現(xiàn)ACL的方法,常用的有path_beg、path_end、url_sub、url_dir、hdr_reg(host)、hdr_dom(host)、hdr_beg(host);-i參數(shù)表示不區(qū)分大小寫(xiě)。與acl規(guī)則搭配使用的還有use_backend關(guān)鍵字和default_backend關(guān)鍵字,關(guān)鍵字后面加上backend實(shí)例名。use_backend的意義是滿(mǎn)足ACL規(guī)則的請(qǐng)求,使用指定的后端backend;default_backend的意義是若不滿(mǎn)足ACL規(guī)則默認(rèn)使用的后端backend。(4)backend該部分表示后端部分,用于配置后端真實(shí)服務(wù)器集群,以響應(yīng)前端用戶(hù)請(qǐng)求。一個(gè)backend部分可添加一個(gè)或多個(gè)真實(shí)服務(wù)器。7.2
HAProxy配置文件解析backend部分默認(rèn)的配置代碼backendstaticbalanceroundrobinserverstatic:4331checkbackendappbalanceroundrobinserverapp1:5001checkserverapp2:5002checkserverapp3:5003checkserverapp4:5004check(4)backend7.2
HAProxy配置文件解析主要選項(xiàng)的含義如下所示。balance:設(shè)置負(fù)載均衡的算法。HAProxy支持多種負(fù)載均衡的算法,常用的算法如下所示。①roundrobin:基于權(quán)重的輪詢(xún)調(diào)度算法,是最簡(jiǎn)單、最常用、最公平最合理的調(diào)度算法。②source:基于請(qǐng)求源IP的調(diào)度算法。此算法能夠使同一個(gè)客戶(hù)端IP訪問(wèn)后端某臺(tái)特定的服務(wù)器。③static-rr:基于權(quán)重進(jìn)行輪詢(xún)的調(diào)度算法,屬于靜態(tài)方法。④leastconn:是指最小連接數(shù)算法。使用此算法,新的請(qǐng)求會(huì)被發(fā)送至具有最小連接數(shù)的后端節(jié)點(diǎn),適用于會(huì)話時(shí)間長(zhǎng)的請(qǐng)求,如數(shù)據(jù)庫(kù)負(fù)載均衡器。⑤uri:此算法根據(jù)請(qǐng)求的部分或整個(gè)URI進(jìn)行hash運(yùn)算,然后與服務(wù)器的總權(quán)重相除,最后匹配并發(fā)送至后端服務(wù)器。⑥uri_param:表示根據(jù)請(qǐng)求的URL參數(shù)進(jìn)行轉(zhuǎn)發(fā),使得同一用戶(hù)的請(qǐng)求可以發(fā)送至同一臺(tái)后端節(jié)點(diǎn)。⑦h(yuǎn)dr(<name>):此算法根據(jù)HTTP請(qǐng)求頭對(duì)HTTP請(qǐng)求進(jìn)行鎖定以及轉(zhuǎn)發(fā)。server:定義多臺(tái)后端真實(shí)服務(wù)器,不可定義在defaults和frontend中。Server的使用格式如下。server<name><address>[:port][param*]上述代碼中,各個(gè)參數(shù)含義如下所示。①<name>:為后端服務(wù)器自定義一個(gè)內(nèi)部名稱(chēng)。②<address>:后端服務(wù)器的IP地址或者主機(jī)名。③[:port]:指定后端服務(wù)器提供服務(wù)的端口,即提供連接的目標(biāo)端口。④[param*]:為后端服務(wù)器設(shè)定的參數(shù),如check、inter、cookie等。除此之外,還有一個(gè)配置部分—listen部分,表示監(jiān)聽(tīng)部分,結(jié)合了前端和后端功能。在目前的HAProxy中,兩種方式任選其一即可。7.2
HAProxy配置文件解析listen部分的配置代碼。listenstatusbind:1080modehttplogglobalstatsrefresh30sstatsuri/admin?statsstatsrealmPrivatelandsstatsauthadmin:passwordstatshide-version主要選項(xiàng)的含義如下所示。bind:監(jiān)聽(tīng)端口。statsrefresh:監(jiān)控頁(yè)面刷新的間隔時(shí)間。statsuri:監(jiān)控頁(yè)面的url訪問(wèn)路徑。statsrealm:監(jiān)控頁(yè)面的提示信息。statsauth:監(jiān)控頁(yè)面的用戶(hù)和密碼。statshide-version:隱藏統(tǒng)計(jì)頁(yè)面上的HAproxy版本信息。7.3HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例環(huán)境準(zhǔn)備拓?fù)浣Y(jié)構(gòu)搭建部署本節(jié)之前介紹了HAProxy的相關(guān)知識(shí),本節(jié)則通過(guò)一個(gè)實(shí)戰(zhàn)案例演示HAProxy的使用方法。準(zhǔn)備3臺(tái)VM虛擬機(jī)(或者物理服務(wù)器),1臺(tái)作為HAProxy負(fù)載均衡器(haproxy),2臺(tái)作為Web集群7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.1
環(huán)境準(zhǔn)備服務(wù)器角色I(xiàn)P地址服務(wù)配置haproxy32HAproxy1核1Gweb130Apache1核1Gweb231Apache1核1Gclient40無(wú)1核1G說(shuō)明:提前關(guān)閉防火墻及SELinux(過(guò)程不再贅述)。若以真機(jī)作為客戶(hù)端,模擬對(duì)網(wǎng)站進(jìn)行訪問(wèn)。真機(jī)發(fā)出的請(qǐng)求首先會(huì)經(jīng)過(guò)HAproxy進(jìn)行判斷,判斷之后再確定將其移交給web1處理還是web2處理。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.2
拓?fù)浣Y(jié)構(gòu)本節(jié)HAProxy負(fù)載均衡實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu)圖。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署1.在操作前,建議為這4臺(tái)服務(wù)器互相做域名解析,便于通信。域名解析可以使用修改本地hosts文件的方式,也可以使用DNS服務(wù)器解析。這里采取修改hosts文件的方式,分別在4臺(tái)服務(wù)器的/etc/hosts文件中添加以下代碼。2.為了保證各服務(wù)器的時(shí)間一致,對(duì)所有服務(wù)器進(jìn)行時(shí)間校對(duì)。32haproxy30web131web2[root@localhost~]#ntpdate-u13.查看操作系統(tǒng)及內(nèi)核版本。[root@localhost~]#cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)[root@localhost~]#uname-r3.10.0-957.el7.x86_64[root@localhost~]#uname-mx86_64做完域名解析之后,可以使用ping命令進(jìn)行檢測(cè),若無(wú)丟包現(xiàn)象,說(shuō)明解析成功。為了便于讀者觀察實(shí)驗(yàn)操作對(duì)象,這里分別將服務(wù)器的主機(jī)名修改為haproxy、web1、web2。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署1.部署web集群分別為提供網(wǎng)站服務(wù)的服務(wù)器web1及web2創(chuàng)建測(cè)試頁(yè)面,以便后續(xù)觀察HAProxy的調(diào)度結(jié)果。//web1[root@web1~]#yum-yinstallhttpd……安裝過(guò)程省略……Installed:httpd.x86_640:2.4.6-97.el7.centos.4Complete![root@web1~]#systemctlstarthttpd[root@web1~]#systemctlenablehttpd[root@web1~]#echoweb1>/var/www/html/index.html//web2[root@web2~]#yum-yinstallhttpd[root@web2~]#systemctlstarthttpd[root@web2~]#systemctlenablehttpd[root@web2~]#echoweb2>/var/www/html/index.html7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署2.部署HAProxy負(fù)載均衡在負(fù)載均衡器上安裝HAproxy軟件,該軟件可以通過(guò)自配HAproxyYum源的方式下載安裝,也可以從EPEL源中獲取,本實(shí)驗(yàn)采用第二種方式。(1)首先在服務(wù)器上安裝EPEL源。[root@haproxy~]#yum-yinstallepel-release(2)使用Yum的方式獲取HAProxy。[root@haproxy~]#yum-yinstallhaproxy……省略安裝過(guò)程……Installed:haproxy.x86_640:1.5.18-9.el7_9.1Complete!EPEL源安裝完成后,可以使用ls命令查看服務(wù)器現(xiàn)有源,若出現(xiàn)epel.repo,說(shuō)明EPEL源成功安裝。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署2.部署HAProxy負(fù)載均衡(3)安裝HAProxy后,編輯其配置文件/etc/haproxy/haproxy.cfg,修改部分參數(shù)。修改完成后,配置文件的主要內(nèi)容:global#全局配置 loglocal3info#日志配置 maxconn4096
#最大連接限制(優(yōu)先級(jí)低)uidnobody#uid99gidnobody#gid99 daemon nbproc1
#處理HAProxy進(jìn)程的數(shù)量defaults log global mode http maxconn2048 retries 3 option redispatch stats uri/haproxy #設(shè)計(jì)統(tǒng)計(jì)頁(yè)面的URI為/haproxy7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署2.部署HAProxy負(fù)載均衡(3)安裝HAProxy后,編輯其配置文件/etc/haproxy/haproxy.cfg,修改部分參數(shù)。修改完成后,配置文件的主要內(nèi)容 statsauthqianfeng:123 #設(shè)置統(tǒng)計(jì)頁(yè)面認(rèn)證的用戶(hù)與密碼# statshide-version #隱藏統(tǒng)計(jì)頁(yè)面上的HAProxy版本信息 contimeout 5000 #重傳計(jì)時(shí)器 clitimeout 50000 #向后長(zhǎng)連接 srvtimeout 50000 #向前長(zhǎng)連接# timeoutconnect5000# timeoutclient50000# timeoutserver50000frontendhttp-in bind:80 modehttp #定義為HTTP模式 logglobal #繼承g(shù)lobal中l(wèi)og的定義 optionhttplog #啟用日志記錄HTTP請(qǐng)求 optionhttpclose #每次請(qǐng)求完畢后主動(dòng)關(guān)閉http通道,HAproxy不支持keep-alive模式aclhtmlurl_reg-i\.html$7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署2.部署HAProxy負(fù)載均衡(3)安裝HAProxy后,編輯其配置文件/etc/haproxy/haproxy.cfg,修改部分參數(shù)。修改完成后,配置文件的主要內(nèi)容use_backendhtml-serverifhtmldefault_backendhtml-serverbackendhtml-server modehttp balanceroundrobin optionhttpchkGET/index.html cookieSERVERIDinsertindirectnocache serverhtml-Aweb1:80weight1cookie3checkinter2000rise2fall5 serverhtml-Bweb2:80weight1cookie4checkinter2000rise2fall5(4)配置完成后啟動(dòng)HAProxy。[root@haproxy~]#systemctlstarthaproxy7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署3.客戶(hù)端測(cè)試(1)在之前準(zhǔn)備用作客戶(hù)端的服務(wù)器上安裝網(wǎng)頁(yè)測(cè)試工具Elinks,再進(jìn)行訪問(wèn)。[root@qfedu~]#yum-yinstallelinks[root@qfedu~]#elinks--dump32web1[root@qfedu~]#elinks--dump32web2[root@qfedu~]#elinks--dump32web1[root@qfedu~]#elinks--dump32web2[root@qfedu~]#elinks--dump32web1[root@qfedu~]#elinks--dump32web27.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署3.客戶(hù)端測(cè)試(2)使用Windows瀏覽器進(jìn)行訪問(wèn)。刷新頁(yè)面只能看到同一個(gè)頁(yè)面,這是因?yàn)閃indows瀏覽器自帶緩存功能。若想在Windows瀏覽器中觀察到明顯的實(shí)驗(yàn)結(jié)果,可以在瀏覽器設(shè)置中禁用緩存功能。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署4.HAProxy監(jiān)控平臺(tái)至此,HAProxy已經(jīng)實(shí)現(xiàn)了服務(wù)的故障轉(zhuǎn)移功能,但HAProxy的功能并不止于此。HAProxy擁有一個(gè)基于Web的監(jiān)控平臺(tái),這一點(diǎn)對(duì)于及時(shí)性要求很高的業(yè)務(wù)來(lái)說(shuō)非常便利,當(dāng)服務(wù)中斷或者主機(jī)故障后,可及時(shí)告知運(yùn)維人員。(1)在客戶(hù)端瀏覽器中輸入http://haproxy服務(wù)器地址/haproxy即可觀察到HAproxy的當(dāng)前狀態(tài),Web監(jiān)控頁(yè)面。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署4.HAProxy監(jiān)控平臺(tái)HAProxy的Web監(jiān)控頁(yè)面通過(guò)不同顏色顯示故障信息,通過(guò)表格展示每項(xiàng)資源的監(jiān)控參數(shù),并且可以劃分為8個(gè)類(lèi)別。(1)QueueCur:代表當(dāng)前隊(duì)列的請(qǐng)求數(shù)量。Max:代表當(dāng)前隊(duì)列最大的請(qǐng)求數(shù)量。Limit:代表隊(duì)列的限制數(shù)量。(2)SessionrateCur:代表每秒會(huì)話連接數(shù)量。Max:代表每秒會(huì)話量最大值。Limit:代表每秒會(huì)話量的限制值。(3)SessionsTotal:代表全部會(huì)話數(shù)量。Curl:代表當(dāng)前的會(huì)話數(shù)量。Max:代表最大會(huì)話數(shù)量。Limit:代表會(huì)話連接限制。LbTot:代表選中一臺(tái)服務(wù)器所用的總時(shí)間。Last:代表最后一次會(huì)話時(shí)間。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署4.HAProxy監(jiān)控平臺(tái)(4)BytesIn:代表網(wǎng)絡(luò)會(huì)話輸入字節(jié)數(shù)總量。Out:代表網(wǎng)絡(luò)會(huì)話輸出字節(jié)數(shù)總量。(5)DeniedReq:代表被拒絕的會(huì)話請(qǐng)求數(shù)量。Resp:代表拒絕回應(yīng)的請(qǐng)求數(shù)量。(6)ErrorsReq:代表錯(cuò)誤的請(qǐng)求數(shù)量。Conn:代表錯(cuò)誤連接數(shù)量。Resp:代表錯(cuò)誤響應(yīng)數(shù)量。(7)WarningsRetr:代表重新嘗試連接的請(qǐng)求數(shù)量。Redis:代表重新發(fā)送的請(qǐng)求數(shù)量。(8)Serverstatus:代表后端服務(wù)器狀態(tài),存在有UP和DOWN兩種狀態(tài)。LastChk:代表持續(xù)檢查后端服務(wù)器的時(shí)間。Wght:代表服務(wù)器權(quán)重。Act:代表活動(dòng)后端服務(wù)器數(shù)量。Bck:代表后端備份服務(wù)器的數(shù)量。Down:代表狀態(tài)為Down的后端服務(wù)器數(shù)量。Downtime:代表服務(wù)器總的Downtime時(shí)間。Throttle:代表狀態(tài)Backup變?yōu)锳ctive的服務(wù)器數(shù)量。7.3
HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3
搭建部署4.HAProxy監(jiān)控平臺(tái)從HAproxy狀態(tài)頁(yè)面可以觀察到該軟件的進(jìn)程號(hào)、運(yùn)行時(shí)間、系統(tǒng)最大連接數(shù)、當(dāng)前連接數(shù)、運(yùn)行中的任務(wù)及系統(tǒng)的空閑度等參數(shù),還可以觀察到現(xiàn)在管理的兩個(gè)后端服務(wù)器的實(shí)時(shí)狀況。在生產(chǎn)環(huán)境中,可根據(jù)該頁(yè)面隨時(shí)觀察服務(wù)器的狀況,實(shí)時(shí)修復(fù)異常。7.4
HAProxy日志配置策略HAProxy服務(wù)默認(rèn)情況下是沒(méi)有配置日志的。由于HAProxy服務(wù)節(jié)省讀寫(xiě)I/O消耗的性能,使得在默認(rèn)情況下,HAProxy沒(méi)有配置日志功能。運(yùn)維人員為了更加方便的維護(hù)和調(diào)試HAProxy,需要配置HAProxy的日志的輸出功能。本書(shū)使用的是CentOS7系統(tǒng),其默認(rèn)的日志管理工具是rsyslog。rsyslog能夠?qū)崿F(xiàn)UDP日志的接收,日志寫(xiě)入文件,以及日志寫(xiě)入數(shù)據(jù)庫(kù)等功能。接下來(lái)將講解HAProxy日志的配置策略。1.查看系統(tǒng)中是否已經(jīng)安裝rsyslog軟件包。[root@haproxy~]#rpm-qarsyslogrsyslog-8.24.0-34.el7.x86_642.修改rsyslog的配置文件。[root@haproxy~]#vim/etc/rsyslog.conf#ProvidesUDPsyslogreception$ModLoadimudp$UDPServerRun514local2.*/var/log/haproxy.log指定了一種日志類(lèi)型,以及日志的輸出類(lèi)型。第一行的imudp模塊表示支持UDP協(xié)議;第二行代碼表示使用514端口監(jiān)聽(tīng)UPD,接收通過(guò)UDP和TCP協(xié)議轉(zhuǎn)發(fā)過(guò)來(lái)的日志。7.4
HAProxy日志配置策略3.修改/etc/sysconfig/rsyslog文件。[root@haproxy~]#vim/etc/sysconfig/rsyslog#Optionsforrsyslogd#Syslogdoptionsaredeprecatedsincersyslogv3.#Ifyouwanttousethem,switchtocompatibilitymode2by"-c2"#Seersyslogd(8)formoredetailsSYSLOGD_OPTIONS="-c4-r-m0"4.默認(rèn)情況下,rsyslog服務(wù)是開(kāi)機(jī)自啟的,修改完配置文件需要重新啟動(dòng)rsyslog。[root@haproxy~]#systemctlrestartrsyslog參數(shù)含義如下所示。-c:表示指定rsyslog運(yùn)行的版本號(hào)。-r:表示監(jiān)控514端口,接收遠(yuǎn)程日志消息。-m:表示修改syslog的內(nèi)部消息的寫(xiě)入間隔時(shí)間(0表示關(guān)閉)。7.4
HAProxy日志配置策略5.若要實(shí)現(xiàn)將HAProxy的日志寫(xiě)入相應(yīng)的日志文件中,還需要在HAProxy的配置文件中進(jìn)行對(duì)應(yīng)的說(shuō)明,比如7.3節(jié)案例中HAProxy的配置文件。7.4
HAProxy日志配置策略global loglocal2info#配置日志記錄 maxconn4096uidnobody#uid99gidnobody#gid99 daemon nbproc1 defaults log global
#配置日志記錄 mode http maxconn2048 retries 3 option redispatch stats uri/haproxy statsauthqianfeng:123 # statshide-version contimeout 5000 clitimeout 50000 5.若要實(shí)現(xiàn)將HAProxy的日志寫(xiě)入相應(yīng)的日志文件中,還需要在HAProxy的配置文件中進(jìn)行對(duì)應(yīng)的說(shuō)明,比如7.3節(jié)案例中HAProxy的配置文件。7.4
HAProxy日志配置策略 srvtimeout 50000 # timeoutconnect5000# timeoutclient50000# timeoutserver50000frontendhttp-in bind:80 modehttp logglobal #配置日志記錄 optionhttplog optionhttpclose aclhtmlurl_reg-i\.html$use_backendhtml-serverifhtmldefault_backendhtml-serverbackendhtml-server modehttp balanceroundrobin optionhttpchkGET/index.html cookieSERVERIDinsertindirectnocache serverhtml-Aweb1:80weight1cookie3checkinter2000rise2fall5 serverhtml-Bweb2:80weight1cookie4checkinter2000rise2fall56.使用瀏覽器或者其他客戶(hù)端訪問(wèn)HAProxy負(fù)載均衡器,然后查看日志。7.4
HAProxy日志配置策略[root@haproxy~]#cat/var/log/haproxy.log2022-04-01T10:51:33+08:00localhosthaproxy[12264]::62283[01/Apr/2022:10:51:33.225]http-inhtml-server/html-A0/0/0/2/2304141----VN0/0/0/0/00/0"GET/HTTP/1.1"2022-04-01T10:51:33+08:00localhosthaproxy[12264]::62283[01/Apr/2022:10:51:33.225]http-inhtml-server/html-A0/0/0/2/2304141----VN0/0/0/0/00/0"GET/HT
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 切磋武藝合同范例
- 冷凍庫(kù)租賃合同范例
- 行政管理激勵(lì)機(jī)制試題及答案
- 公共關(guān)系學(xué)語(yǔ)言藝術(shù)試題及答案
- 公共關(guān)系學(xué)與企業(yè)形象管理的關(guān)聯(lián)性題目及試題及答案
- 公共關(guān)系學(xué)備考的獨(dú)特視角試題及答案
- 中級(jí)經(jīng)濟(jì)師試題及答案在線輔導(dǎo)
- 保養(yǎng)機(jī)械合同范例
- 關(guān)于商業(yè)模式創(chuàng)新的中級(jí)經(jīng)濟(jì)師試題及答案
- 出口合同范例中英
- 施今墨對(duì)藥臨床經(jīng)驗(yàn)集
- STEM教師培養(yǎng)的國(guó)際比較研究以中 美 英 德為例
- 西門(mén)子S7-1500通過(guò)報(bào)文111實(shí)現(xiàn)對(duì)匯川SV660F伺服驅(qū)動(dòng)器位置控制
- 自動(dòng)控制原理課件8狀態(tài)空間分析法
- 2024年湖北三新供電服務(wù)有限公司招聘筆試參考題庫(kù)含答案解析
- 鋼絲繩吊裝時(shí)最大允許吊裝重物對(duì)應(yīng)表
- 浙江農(nóng)村振興報(bào)告
- (完整版)Conners-兒童行為問(wèn)卷-常模和題目
- 素養(yǎng)導(dǎo)向的表現(xiàn)性評(píng)價(jià)
- 國(guó)貿(mào)特色專(zhuān)業(yè)申報(bào)匯報(bào)
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊(cè)
評(píng)論
0/150
提交評(píng)論