云計(jì)算集群技術(shù)及應(yīng)用 課件 第7章-HAProxy七層負(fù)載集群_第1頁
云計(jì)算集群技術(shù)及應(yīng)用 課件 第7章-HAProxy七層負(fù)載集群_第2頁
云計(jì)算集群技術(shù)及應(yīng)用 課件 第7章-HAProxy七層負(fù)載集群_第3頁
云計(jì)算集群技術(shù)及應(yīng)用 課件 第7章-HAProxy七層負(fù)載集群_第4頁
云計(jì)算集群技術(shù)及應(yīng)用 課件 第7章-HAProxy七層負(fù)載集群_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第7章

HAProxy七層負(fù)載集群7.1HAProxy簡介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ù)載,對所有的請求一視同仁,按指定的算法進(jìn)行調(diào)度。實(shí)際上,一成不變的事物并不能持久適應(yīng)社會的發(fā)展。為了滿足業(yè)務(wù)發(fā)展智能化的需求,現(xiàn)階段的網(wǎng)站在OSI參考模型的基礎(chǔ)上創(chuàng)新實(shí)現(xiàn)了七層負(fù)載均衡,對用戶的請求進(jìn)行智能分類,再交由對應(yīng)的集群進(jìn)行處理,提高效率的同時實(shí)現(xiàn)了系統(tǒng)的“人性化”。本章將介紹七層負(fù)載均衡技術(shù)HAProxy,以及該技術(shù)在實(shí)際中的應(yīng)用。7.1HAProxy簡介HAProxy概念HAProxy的特點(diǎn)負(fù)載均衡的性能對比HAproxy是一款高性能的負(fù)載均衡應(yīng)用,能夠完美支撐萬級并發(fā),因其專注于負(fù)載均衡,因此與Nginx相比在負(fù)載均衡方面做更好,更專業(yè)。7.1

HAProxy簡介HAProxy是一款由C語言開發(fā),基于TCP(第四層)和HTTP(第七層)應(yīng)用的負(fù)載均衡軟件,與LVS一樣,是一個專業(yè)的高性能負(fù)載均衡,并且是免費(fèi)、快速并且可靠的一種解決高負(fù)載的方案。HAProxy特別適用于負(fù)載特大的Web站點(diǎn),最高極限支持10Gbps的并發(fā),可靠性和穩(wěn)定性非常好,可以與硬件級的負(fù)載均衡設(shè)備F5相媲美。7.1

HAProxy簡介7.1.1

HAProxy概念用戶訪問網(wǎng)站時后端服務(wù)器會生成Session用來存儲用戶信息。HAProxy有3種方式保持客戶端和服務(wù)端Session的親緣性,具體如下所示。1.用戶IP識別HAProxy將用戶IP經(jīng)過Hash算法計(jì)算后固定到真實(shí)服務(wù)器上。2.Cookie識別HAProxy將Web服務(wù)器IP發(fā)送到客戶端的Cookie中,然后在客戶端的Cookie中插入HAProxy定義的后端服務(wù)器的CookieID。3.Session識別HAProxy將后端服務(wù)器產(chǎn)生的Session和后端服務(wù)器標(biāo)識存在HAProxy的一張表中,客戶端請求時首先查詢該表。7.1

HAProxy簡介7.1.1

HAProxy概念HAProxy的優(yōu)勢如下所示。免費(fèi)開源,負(fù)載均衡功能較為豐富,能夠支持TCP/HTTP兩種協(xié)議層的負(fù)載均衡,穩(wěn)定性極好。支持8種左右的負(fù)載均衡算法,這些負(fù)載均衡算法幾乎能夠滿足各種需求。支持基于事件驅(qū)動的鏈接處理模式與單進(jìn)程處理模式(與Nginx類似),使性能更加卓越。擁有功能豐富的監(jiān)控頁面,能夠使用戶實(shí)時了解系統(tǒng)的當(dāng)前狀況。具備功能強(qiáng)大的ACL(訪問控制列表)支持,提供給用戶極大的方便。7.1

HAProxy簡介7.1.2

HAProxy的特點(diǎn)HAProxy是基于單進(jìn)程模式進(jìn)行處理的,實(shí)際上,HAProxy的處理模式不僅有單進(jìn)程,還有多線程處理模式。這兩種模式的區(qū)別如表。7.1

HAProxy簡介7.1.2

HAProxy的特點(diǎn)處理模式說明單進(jìn)程所有客戶端連接全部都由同一個服務(wù)進(jìn)程來處理,目標(biāo)就是等待連接,來一個分配一個,主要消耗CPU多線程多線程模式消耗內(nèi)存,會限制并發(fā)而且多線程需要進(jìn)程間通信,也會消耗相當(dāng)多的cpu資源七層負(fù)載均衡和四層負(fù)載均衡最主要的區(qū)別是,七層負(fù)載均衡可以獲得客戶請求的HTTP頭部信息。HTTP請求頭信息包含用戶訪問的IP、HTTP請求類型(GETPOST)、域名主機(jī)地址、瀏覽器的類型以及請求的URL明細(xì)等。七層負(fù)載均衡的工作原理也是根據(jù)HTTP請求頭進(jìn)行的判斷和轉(zhuǎn)發(fā)。7.1

HAProxy簡介7.1.2

HAProxy的特點(diǎn)HAProxy七層負(fù)載均衡的原理架構(gòu)圖。HAProxy的工作原理主要有以下4步。(1)客戶端將請求發(fā)送到負(fù)載均衡服務(wù)器,此時請求報文源地址是CIP,目標(biāo)地址并不是DIP+IP端口,而是URL;(2)負(fù)載均衡服務(wù)器收到報文后,代替客戶端與RS建立TCP連接,報文的源地址則為DIP,將客戶端請求報文的目標(biāo)IP地址改為后端服務(wù)器的RIP地址,并且還有不變的目標(biāo)URL;(3)請求報文發(fā)送到后端服務(wù)器后,由于報文的目標(biāo)地址是真實(shí)服務(wù)器,所以會響應(yīng)該請求,并將響應(yīng)報文返還給負(fù)載均衡服務(wù)器;(4)最后再由負(fù)載均衡服務(wù)器將此報文重新打包,然后將源地址修改為CIP地址并發(fā)送給客戶端。簡而言之,HAProxy七層負(fù)載能夠獲取應(yīng)用層HTTP的請求內(nèi)容。7.1

HAProxy簡介7.1.2

HAProxy的特點(diǎn)HAProxy作為七層負(fù)載均衡的應(yīng)用場景有以下幾種。由于HAProxy七層負(fù)載是在應(yīng)用層,那么只能與Tomcat、PHP等Web服務(wù)器做負(fù)載均衡。HAProxy七層負(fù)載支持虛擬主機(jī)功能,即可以通過請求域名對后端服務(wù)器就行訪問。比如,客戶端訪問RS1域名,該請求則會被轉(zhuǎn)發(fā)至RS1服務(wù)器;客戶端訪問RS2域名,該請求則會被轉(zhuǎn)發(fā)至RS2服務(wù)器。HAProxy七層負(fù)載可以根據(jù)URL進(jìn)行請求轉(zhuǎn)發(fā),比如,客戶端請求訪問的URL中包含A目錄,該請求則會發(fā)送至A服務(wù)器;客戶端請求訪問的URL中包含B目錄,該請求則會發(fā)送至B服務(wù)器。HAProxy七層負(fù)載可以根據(jù)瀏覽器類型進(jìn)行請求轉(zhuǎn)發(fā),比如,客戶端使用火狐瀏覽器請求,該請求則會發(fā)送至A服務(wù)器;客戶端使用火狐谷歌瀏覽器請求,該請求則會發(fā)送至B服務(wù)器。7.1

HAProxy簡介7.1.2

HAProxy的特點(diǎn)LVS、Nginx和HAProxy是目前企業(yè)集群中最常用的3種負(fù)載均衡軟件,也是本書講解的重點(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ā)級別如表所示。7.1

HAProxy簡介7.1.3

負(fù)載均衡的性能對比負(fù)載均衡類型支持并發(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的安裝非常簡便,通過YUM源下載HAProxy軟件時,其配置文件的默認(rèn)路徑為/etc/haproxy/haproxy.cfg。HAProxy的默認(rèn)基本配置包含4個部分,分別為global、defaults、frontend和backend,并且每個部分的配置指令需要縮進(jìn)。(1)global該部分位于配置文件的頂部,表示全局配置,用于設(shè)定全局配置參數(shù),一般與操作系統(tǒng)配置、進(jìn)程管理、安全相關(guān),屬于進(jìn)程級的配置。7.2

HAProxy配置文件解析(1)global7.2

HAProxy配置文件解析global部分默認(rèn)的配置代碼。globallog

local2chroot

/var/lib/haproxypidfile

/var/run/haproxy.pidmaxconn

4000user

haproxygroup

haproxydaemon每個選項(xiàng)的含義如下所示。log:全局的日志配置。使用log指定使用上的rsyslog服務(wù)中的local2日志設(shè)備,后面還可以指定日志級別,比如err、warning、info和debug。chroot:修改HAProxy的工作目錄至指定的目錄,HAProxy的運(yùn)行路徑。pidfile:設(shè)置HAProxy進(jìn)程的pid文件。maxconn:設(shè)定每個HAProxy進(jìn)程的最大連接數(shù)。user/group:user同uid,指定用戶和組運(yùn)行HAProxy。daemon:設(shè)置HAProxy以守護(hù)進(jìn)程的方式在后臺運(yùn)行。(2)defaults該部分表示默認(rèn)配置,用于為后續(xù)的配置部分設(shè)置公用的默認(rèn)值。換句話說,此處的參數(shù)值,將會自動引用到后續(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ù),表示日志類別為HTTP日志類型;設(shè)置為dontlognull參數(shù),表示不記錄健康檢查日志信息;設(shè)置為redispatch,表示故障轉(zhuǎn)移,與后端服務(wù)器會話失敗后,將會話轉(zhuǎn)移至其它健康機(jī)器。optionhttp-server-close:表示當(dāng)客戶端超時保持長連接時,服務(wù)器主動斷開連接。optionforwardfor:可在HTTPHeader中配置參數(shù),使得后端服務(wù)器獲取客戶端IP。retries:設(shè)置與后端服務(wù)器嘗試連接的最大次數(shù),超過此值就認(rèn)為后端服務(wù)器不可用。timeouthttp-request:當(dāng)客戶端發(fā)起連接但不請求數(shù)據(jù)時,關(guān)閉客戶端連接。timeoutqueue:等待的最大時長。timeoutconnect:設(shè)置將客戶端請求轉(zhuǎn)發(fā)至后端服務(wù)器所需要等待的超時時長。timeoutclient:客戶端非活動時連接的超時時間。timeoutserver:服務(wù)器非活動時回應(yīng)客戶端連接的超時時間。timeouthttp-keep-alive:設(shè)置新的http請求連接建立的最大超時時間。timeoutcheck:設(shè)置對后端服務(wù)器的健康檢測的超時時間。maxconn:最大并發(fā)連接數(shù)。(3)frontend該部分表示前端部分,用于設(shè)置客戶端可以連接的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,通過path_beg方法定義了若客戶端在請求的URL中以/static、/images、/javascript、/stylesheets路徑開頭時,返回TRUE;第2條規(guī)則名字為url_static,通過path_end方法定義了若客戶端在請求的URL中以.jpg、.gif、.png、.css、.js結(jié)尾時,返回TRUE。(3)frontendACL規(guī)則常在frontend部分中被使用,幫助HAProxy實(shí)現(xiàn)了兩種主要的功能,如下所示。①通過使用ACL規(guī)則可檢查客戶端的請求是否合法,若符合ACL規(guī)則,則放行,否則直接中斷請求。②符合ACL規(guī)則的請求將被轉(zhuǎn)發(fā)至后端真實(shí)服務(wù)器,實(shí)現(xiàn)基于ACL規(guī)則的負(fù)載均衡。7.2

HAProxy配置文件解析(3)frontend7.2

HAProxy配置文件解析ACL規(guī)則的使用格式如下所示。acl

自定義的ACL名稱

acl方法

-i

[匹配的路徑或文件]acl關(guān)鍵字表示由此開始定義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ū)分大小寫。與acl規(guī)則搭配使用的還有use_backend關(guān)鍵字和default_backend關(guān)鍵字,關(guān)鍵字后面加上backend實(shí)例名。use_backend的意義是滿足ACL規(guī)則的請求,使用指定的后端backend;default_backend的意義是若不滿足ACL規(guī)則默認(rèn)使用的后端backend。(4)backend該部分表示后端部分,用于配置后端真實(shí)服務(wù)器集群,以響應(yīng)前端用戶請求。一個backend部分可添加一個或多個真實(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)重的輪詢調(diào)度算法,是最簡單、最常用、最公平最合理的調(diào)度算法。②source:基于請求源IP的調(diào)度算法。此算法能夠使同一個客戶端IP訪問后端某臺特定的服務(wù)器。③static-rr:基于權(quán)重進(jìn)行輪詢的調(diào)度算法,屬于靜態(tài)方法。④leastconn:是指最小連接數(shù)算法。使用此算法,新的請求會被發(fā)送至具有最小連接數(shù)的后端節(jié)點(diǎn),適用于會話時間長的請求,如數(shù)據(jù)庫負(fù)載均衡器。⑤uri:此算法根據(jù)請求的部分或整個URI進(jìn)行hash運(yùn)算,然后與服務(wù)器的總權(quán)重相除,最后匹配并發(fā)送至后端服務(wù)器。⑥uri_param:表示根據(jù)請求的URL參數(shù)進(jìn)行轉(zhuǎn)發(fā),使得同一用戶的請求可以發(fā)送至同一臺后端節(jié)點(diǎn)。⑦h(yuǎn)dr(<name>):此算法根據(jù)HTTP請求頭對HTTP請求進(jìn)行鎖定以及轉(zhuǎn)發(fā)。server:定義多臺后端真實(shí)服務(wù)器,不可定義在defaults和frontend中。Server的使用格式如下。server<name><address>[:port][param*]上述代碼中,各個參數(shù)含義如下所示。①<name>:為后端服務(wù)器自定義一個內(nèi)部名稱。②<address>:后端服務(wù)器的IP地址或者主機(jī)名。③[:port]:指定后端服務(wù)器提供服務(wù)的端口,即提供連接的目標(biāo)端口。④[param*]:為后端服務(wù)器設(shè)定的參數(shù),如check、inter、cookie等。除此之外,還有一個配置部分—listen部分,表示監(jiān)聽部分,結(jié)合了前端和后端功能。在目前的HAProxy中,兩種方式任選其一即可。7.2

HAProxy配置文件解析listen部分的配置代碼。listenstatusbind:1080modehttplogglobalstatsrefresh30sstatsuri/admin?statsstatsrealmPrivatelandsstatsauthadmin:passwordstatshide-version主要選項(xiàng)的含義如下所示。bind:監(jiān)聽端口。statsrefresh:監(jiān)控頁面刷新的間隔時間。statsuri:監(jiān)控頁面的url訪問路徑。statsrealm:監(jiān)控頁面的提示信息。statsauth:監(jiān)控頁面的用戶和密碼。statshide-version:隱藏統(tǒng)計(jì)頁面上的HAproxy版本信息。7.3HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例環(huán)境準(zhǔn)備拓?fù)浣Y(jié)構(gòu)搭建部署本節(jié)之前介紹了HAProxy的相關(guān)知識,本節(jié)則通過一個實(shí)戰(zhàn)案例演示HAProxy的使用方法。準(zhǔn)備3臺VM虛擬機(jī)(或者物理服務(wù)器),1臺作為HAProxy負(fù)載均衡器(haproxy),2臺作為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無1核1G說明:提前關(guān)閉防火墻及SELinux(過程不再贅述)。若以真機(jī)作為客戶端,模擬對網(wǎng)站進(jìn)行訪問。真機(jī)發(fā)出的請求首先會經(jīng)過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臺服務(wù)器互相做域名解析,便于通信。域名解析可以使用修改本地hosts文件的方式,也可以使用DNS服務(wù)器解析。這里采取修改hosts文件的方式,分別在4臺服務(wù)器的/etc/hosts文件中添加以下代碼。2.為了保證各服務(wù)器的時間一致,對所有服務(wù)器進(jìn)行時間校對。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)行檢測,若無丟包現(xiàn)象,說明解析成功。為了便于讀者觀察實(shí)驗(yàn)操作對象,這里分別將服務(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)建測試頁面,以便后續(xù)觀察HAProxy的調(diào)度結(jié)果。//web1[root@web1~]#yum-yinstallhttpd……安裝過程省略……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軟件,該軟件可以通過自配HAproxyYum源的方式下載安裝,也可以從EPEL源中獲取,本實(shí)驗(yàn)采用第二種方式。(1)首先在服務(wù)器上安裝EPEL源。[root@haproxy~]#yum-yinstallepel-release(2)使用Yum的方式獲取HAProxy。[root@haproxy~]#yum-yinstallhaproxy……省略安裝過程……Installed:haproxy.x86_640:1.5.18-9.el7_9.1Complete!EPEL源安裝完成后,可以使用ls命令查看服務(wù)器現(xiàn)有源,若出現(xiàn)epel.repo,說明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)先級低)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ì)頁面的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ì)頁面認(rèn)證的用戶與密碼# statshide-version #隱藏統(tǒng)計(jì)頁面上的HAProxy版本信息 contimeout 5000 #重傳計(jì)時器 clitimeout 50000 #向后長連接 srvtimeout 50000 #向前長連接# timeoutconnect5000# timeoutclient50000# timeoutserver50000frontendhttp-in bind:80 modehttp #定義為HTTP模式 logglobal #繼承g(shù)lobal中l(wèi)og的定義 optionhttplog #啟用日志記錄HTTP請求 optionhttpclose #每次請求完畢后主動關(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)配置完成后啟動HAProxy。[root@haproxy~]#systemctlstarthaproxy7.3

HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3

搭建部署3.客戶端測試(1)在之前準(zhǔn)備用作客戶端的服務(wù)器上安裝網(wǎng)頁測試工具Elinks,再進(jì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.客戶端測試(2)使用Windows瀏覽器進(jìn)行訪問。刷新頁面只能看到同一個頁面,這是因?yàn)閃indows瀏覽器自帶緩存功能。若想在Windows瀏覽器中觀察到明顯的實(shí)驗(yàn)結(jié)果,可以在瀏覽器設(shè)置中禁用緩存功能。7.3

HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3

搭建部署4.HAProxy監(jiān)控平臺至此,HAProxy已經(jīng)實(shí)現(xiàn)了服務(wù)的故障轉(zhuǎn)移功能,但HAProxy的功能并不止于此。HAProxy擁有一個基于Web的監(jiān)控平臺,這一點(diǎn)對于及時性要求很高的業(yè)務(wù)來說非常便利,當(dāng)服務(wù)中斷或者主機(jī)故障后,可及時告知運(yùn)維人員。(1)在客戶端瀏覽器中輸入http://haproxy服務(wù)器地址/haproxy即可觀察到HAproxy的當(dāng)前狀態(tài),Web監(jiān)控頁面。7.3

HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3

搭建部署4.HAProxy監(jiān)控平臺HAProxy的Web監(jiān)控頁面通過不同顏色顯示故障信息,通過表格展示每項(xiàng)資源的監(jiān)控參數(shù),并且可以劃分為8個類別。(1)QueueCur:代表當(dāng)前隊(duì)列的請求數(shù)量。Max:代表當(dāng)前隊(duì)列最大的請求數(shù)量。Limit:代表隊(duì)列的限制數(shù)量。(2)SessionrateCur:代表每秒會話連接數(shù)量。Max:代表每秒會話量最大值。Limit:代表每秒會話量的限制值。(3)SessionsTotal:代表全部會話數(shù)量。Curl:代表當(dāng)前的會話數(shù)量。Max:代表最大會話數(shù)量。Limit:代表會話連接限制。LbTot:代表選中一臺服務(wù)器所用的總時間。Last:代表最后一次會話時間。7.3

HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3

搭建部署4.HAProxy監(jiān)控平臺(4)BytesIn:代表網(wǎng)絡(luò)會話輸入字節(jié)數(shù)總量。Out:代表網(wǎng)絡(luò)會話輸出字節(jié)數(shù)總量。(5)DeniedReq:代表被拒絕的會話請求數(shù)量。Resp:代表拒絕回應(yīng)的請求數(shù)量。(6)ErrorsReq:代表錯誤的請求數(shù)量。Conn:代表錯誤連接數(shù)量。Resp:代表錯誤響應(yīng)數(shù)量。(7)WarningsRetr:代表重新嘗試連接的請求數(shù)量。Redis:代表重新發(fā)送的請求數(shù)量。(8)Serverstatus:代表后端服務(wù)器狀態(tài),存在有UP和DOWN兩種狀態(tài)。LastChk:代表持續(xù)檢查后端服務(wù)器的時間。Wght:代表服務(wù)器權(quán)重。Act:代表活動后端服務(wù)器數(shù)量。Bck:代表后端備份服務(wù)器的數(shù)量。Down:代表狀態(tài)為Down的后端服務(wù)器數(shù)量。Downtime:代表服務(wù)器總的Downtime時間。Throttle:代表狀態(tài)Backup變?yōu)锳ctive的服務(wù)器數(shù)量。7.3

HAProxy七層負(fù)載集群實(shí)戰(zhàn)案例7.3.3

搭建部署4.HAProxy監(jiān)控平臺從HAproxy狀態(tài)頁面可以觀察到該軟件的進(jìn)程號、運(yùn)行時間、系統(tǒng)最大連接數(shù)、當(dāng)前連接數(shù)、運(yùn)行中的任務(wù)及系統(tǒng)的空閑度等參數(shù),還可以觀察到現(xiàn)在管理的兩個后端服務(wù)器的實(shí)時狀況。在生產(chǎn)環(huán)境中,可根據(jù)該頁面隨時觀察服務(wù)器的狀況,實(shí)時修復(fù)異常。7.4

HAProxy日志配置策略HAProxy服務(wù)默認(rèn)情況下是沒有配置日志的。由于HAProxy服務(wù)節(jié)省讀寫I/O消耗的性能,使得在默認(rèn)情況下,HAProxy沒有配置日志功能。運(yùn)維人員為了更加方便的維護(hù)和調(diào)試HAProxy,需要配置HAProxy的日志的輸出功能。本書使用的是CentOS7系統(tǒng),其默認(rèn)的日志管理工具是rsyslog。rsyslog能夠?qū)崿F(xiàn)UDP日志的接收,日志寫入文件,以及日志寫入數(shù)據(jù)庫等功能。接下來將講解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指定了一種日志類型,以及日志的輸出類型。第一行的imudp模塊表示支持UDP協(xié)議;第二行代碼表示使用514端口監(jiān)聽UPD,接收通過UDP和TCP協(xié)議轉(zhuǎn)發(fā)過來的日志。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ù)是開機(jī)自啟的,修改完配置文件需要重新啟動rsyslog。[root@haproxy~]#systemctlrestartrsyslog參數(shù)含義如下所示。-c:表示指定rsyslog運(yùn)行的版本號。-r:表示監(jiān)控514端口,接收遠(yuǎn)程日志消息。-m:表示修改syslog的內(nèi)部消息的寫入間隔時間(0表示關(guān)閉)。7.4

HAProxy日志配置策略5.若要實(shí)現(xiàn)將HAProxy的日志寫入相應(yīng)的日志文件中,還需要在HAProxy的配置文件中進(jìn)行對應(yīng)的說明,比如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的日志寫入相應(yīng)的日志文件中,還需要在HAProxy的配置文件中進(jìn)行對應(yīng)的說明,比如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.使用瀏覽器或者其他客戶端訪問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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論