日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HAproxy部署配置

發(fā)布時(shí)間:2023/11/29 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HAproxy部署配置 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HAproxy部署配置

拓?fù)鋱D

說(shuō)明:

haproxy服務(wù)器IP:172.16.253.200/16 (外網(wǎng))、192.168.29.140/24(內(nèi)網(wǎng)) 博客服務(wù)器組IP:192.168.29.130/24、192.168.29.131/24 網(wǎng)站服務(wù)器組IP:192.168.29.120/24、192.168.29.121/24 默認(rèn)服務(wù)器組IP:192.168.29.110/24、192.168.29.111/24

一 HAProxy主機(jī)配置

[root@local ~]# yum install haproxy -y [root@local ~]# vim /etc/haproxy/haproxy.cfg

1 global部分

用來(lái)設(shè)定全局配置參數(shù),屬于進(jìn)程級(jí)的配置,通常和操作系統(tǒng)配置有關(guān)。

globallog 127.0.0.1 local2 info ##全局日志配置,local2為日志設(shè)備,info為日志級(jí)別chroot /var/lib/haproxypidfile /var/run/haproxy.pid ##指定HAProxy進(jìn)程的Pid文件,啟動(dòng)進(jìn)程的用戶必須有訪問(wèn)次文件的權(quán)限maxconn 4000 ##設(shè)定每個(gè)進(jìn)程可接受的最大并發(fā)連接數(shù)user haproxy ##設(shè)置運(yùn)行haproxy進(jìn)程的用戶,可使用UID代替group haproxy ##設(shè)置運(yùn)行haproxy進(jìn)程的組,可使用GID代替daemon ##設(shè)置haproxy進(jìn)程進(jìn)入后臺(tái)運(yùn)行stats socket /var/lib/haproxy/stats

2 default部分

默認(rèn)參數(shù)的配置部分。在次部分配置的參數(shù)值,默認(rèn)會(huì)自動(dòng)引用到下面frontend、backend、listen部分中,因此,如果某些參數(shù)屬于公共的配置,只需在default部分添加一次即可。而如果在frontend、backend、和listen部分也配置了與default部分一樣的參數(shù),那么default部分的參數(shù)對(duì)應(yīng)的值自動(dòng)被覆蓋。

defaultsmode http ##設(shè)置haproxy實(shí)例默認(rèn)運(yùn)行模式,有tcp、http、health三個(gè)值log global ##option httplogoption dontlognulloption http-server-closeoption forwardfor except 127.0.0.0/8option redispatchretries 3 ##設(shè)置后端服務(wù)器的失敗重試次數(shù)timeout http-request 10s ##timeout queue 1mtimeout connect 5stimeout client 10s ##設(shè)置連接客戶端發(fā)送數(shù)據(jù)時(shí)的最長(zhǎng)等待時(shí)間,默認(rèn)單位為毫秒timeout server 10s ##設(shè)置服務(wù)器端回應(yīng)客戶端數(shù)據(jù)發(fā)送的最長(zhǎng)等待時(shí)間,默認(rèn)單位為毫秒timeout http-keep-alive 10s ##持久連接的持久時(shí)長(zhǎng)timeout check 2s ##設(shè)置對(duì)后端服務(wù)器的監(jiān)測(cè)超時(shí)時(shí)間,默認(rèn)單位為毫秒 maxconn 3000

3 listen部分

此部分是frontend和backend部分的結(jié)合體

listen admin_statsbind 0.0.0.0:19088 ##設(shè)置監(jiān)控統(tǒng)計(jì)頁(yè)面的監(jiān)聽(tīng)的IP和端口mode httplog 127.0.0.1 local2 errstats refresh 30s ##設(shè)置哈haproxy監(jiān)控統(tǒng)計(jì)頁(yè)面的自動(dòng)刷新時(shí)間stats uri /haproxy-status ##設(shè)置haproxy監(jiān)控統(tǒng)計(jì)頁(yè)面的URL路徑,可隨意指定,例如“stats uri /haproxy-status”,就可以通過(guò)http://IP:PORT//haproxy-status查看stats realm welcome login\ Haproxy ##設(shè)置登錄haproxy統(tǒng)計(jì)頁(yè)面是密碼框上的提示信息stats auth admin:admin ##設(shè)置登錄統(tǒng)計(jì)頁(yè)面的用戶名和密碼,可同時(shí)設(shè)置多個(gè),每行一個(gè)stats hide-version ##用來(lái)隱藏統(tǒng)計(jì)頁(yè)面上haproxy的版本信息stats admin if TRUE ##通過(guò)設(shè)置此選項(xiàng),可以在監(jiān)控頁(yè)面上手工啟動(dòng)或者禁用后端服務(wù)器

4 frontend部分

此部分用于設(shè)置接收用戶請(qǐng)求的前端虛擬節(jié)點(diǎn)。frontend可以根據(jù)ACL規(guī)則直接指定要使用的后端backend。
(1)frontend部分

frontend wwwbind *:80 ##此選項(xiàng)只能在frontend和listen部分使用,用于定義一個(gè)或多個(gè)監(jiān)聽(tīng)的套接字。格式為:bind [<address>:<port_range>] interface <interface>mode http ##實(shí)例的運(yùn)行模式option httplog ##啟用日志記錄http請(qǐng)求。默認(rèn)haproxy日志不記錄http請(qǐng)求option forwardfor ##在由haproxy發(fā)往后端主機(jī)的請(qǐng)求報(bào)文中添加“X-Forwarded-For”首部,其值前端客戶端的地址;用于向后端主發(fā)送真實(shí)的客戶端IP option httpclose ##次選項(xiàng)表示在客戶端和服務(wù)器端完成一次連接請(qǐng)求后,haproxy自動(dòng)關(guān)閉此TCP連接log global ##表示使用全局的日志級(jí)別,引用global部分定義的log配置

(2)通過(guò)haproxy的ACL規(guī)則實(shí)現(xiàn)智能負(fù)載均衡
haproxy通過(guò)ACL完成兩個(gè)主要的功能:

1)通過(guò)設(shè)置ACL的規(guī)則檢查客戶端請(qǐng)求是否合法。如果符合ACL規(guī)則要求,那么將放行,如果不符合規(guī)則,則直接中斷請(qǐng)求。2)符合ACL規(guī)則要求的請(qǐng)求將被提交到后端的backend服務(wù)器集群,進(jìn)而實(shí)現(xiàn)基于ACL規(guī)則的負(fù)載均衡3)haproxy的ACL規(guī)則通常用在frontend部分中

格式為:acl 自定義的acl名稱 acl方法 -i [ 匹配的路徑或文件]

acl:為關(guān)鍵字,表示定義ACL規(guī)則的開(kāi)始,后面跟上自定義的ACL名稱。acl方法:這個(gè)字段定義ACL的方法,haproxy定義了很多ACL方法,常用的有hdr_reg(host)、hdr_dom(host)、hdr_beg(host)、url_sub、url_dir、path_beg、path_end等-i:表示不區(qū)分大小寫(xiě),后面跟上要匹配的路徑、文件或正則表達(dá)式。說(shuō)明:與ACL規(guī)則一起使用的haproxy參數(shù)還有use_backend,use_backend 后面跟實(shí)例名,表示在滿足ACL規(guī)則后去哪里請(qǐng)求哪個(gè)backend實(shí)例acl host_www hdr_reg(host) -i ^(www.tb.com|tb.com) ##正則表達(dá)式匹配,表示如果開(kāi)都有www.tb.com或tb.com acl host_blog hdr_beg(host) -i blog. ##表示如果前綴包含blog.字符,則匹配use_backend server_www if host_www ##表示如果滿足host_www 則去請(qǐng)求后端的server_www主機(jī)use_backend server_blog if host_blogdefault_backend server_default ##表示如果前面都不匹配,則去請(qǐng)求server_default主機(jī)

5 backend部分

此部分用于設(shè)置后端服務(wù)器集群的配置,也是用來(lái)添加一組真實(shí)服務(wù)器,以處理客戶端的請(qǐng)求。

backend server_default 定義后端主機(jī),格式為:backend SERVER_NAMEmode http ##實(shí)例的運(yùn)行模式option redispatch ##次參數(shù)用于cookie保持的環(huán)境中option abortonclose ##自動(dòng)結(jié)束當(dāng)前隊(duì)列中處理時(shí)間較長(zhǎng)的進(jìn)程balance roundrobin ##定義負(fù)載均衡算法,roundrobin為加權(quán)輪詢算法cookie SERVERID ##表示允許向cookie中插入SERVERIDoption httpchk GET /check_status.html ##啟用http的服務(wù)監(jiān)測(cè)功能,采用GET方式,通過(guò)監(jiān)測(cè)check_status,html頁(yè)面的狀態(tài)來(lái)確定服務(wù)器的狀態(tài)server default1 192.168.29.110:80 cookie default1 weight 2 check inter 2000 rise 2 fall 3 server default2 192.168.29.111:80 cookie default2 weight 2 check inter 2000 rise 2 fall 3 定義后端主機(jī),格式為:server <name> <address>[:port] [param*] param為一系列參數(shù),cookie為當(dāng)前server指定其cookie值,用于實(shí)現(xiàn)基于cookie的會(huì)話黏性weight 設(shè)置后端服務(wù)器的權(quán)重,check表示啟用后端服務(wù)器執(zhí)行健康狀態(tài)監(jiān)測(cè),rise設(shè)置從故障狀態(tài)轉(zhuǎn)換到正常狀態(tài)需要成功檢查的次數(shù),fall設(shè)置后端服務(wù)器從從正常狀態(tài)轉(zhuǎn)換為不可以狀態(tài)需要檢查的次數(shù)disabled:標(biāo)記為不可用;redir <prefix>:將發(fā)往此server的所有GET和HEAD類的請(qǐng)求重定向至指定的URL backend server_wwwmode httpoption redispatchoption abortonclosebalance source ##定義負(fù)載均衡算法,source為基于源IP 的算法,可以使同一客戶端IP的請(qǐng)求始終被轉(zhuǎn)發(fā)至某臺(tái)特定的后端服務(wù)器cookie SERVERID option httpchk GET /check_status.jspserver www1 192.168.29.120:80 cookie www1 weight 6 check inter 2000 rise 2 fall 3server www2 192.168.29.121:80 cookie www2 weight 6 check inter 2000 rise 2 fall 3 backend server_blogmode httpoption redispatchoption abortonclosebalance roundrobincookie SERVERID option httpchk GET /check_blog.phpserver blog1 192.168.29.130:80 cookie blog1 weight 5 check inter 2000 rise 2 fall 3server blog2 192.168.29.131:80 cookie blog2 weight 5 check inter 2000 rise 2 fall 3

二 后端服務(wù)器配置

1 默認(rèn)服務(wù)器配置

(1)虛擬主機(jī)配置

[root@local ~]# vim /etc/httpd/conf.d/vhost.conf <VirtualHost 192.168.29.110:80>DocumentRoot "/data/web1" <Directory "/data/web1/">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted </Directory> </VirtualHost>

(2)狀態(tài)監(jiān)測(cè)頁(yè)配置

[root@local ~]# echo "This is check_status.page ip:192.168.29.110" > /data/web1/check_status.html

(3)默認(rèn)頁(yè)面配置

[root@local ~]# echo "This is default page ip:192.168.29.110" > /data/web1/index.html

按照以上方式配置192.168.29.111主機(jī)

2 網(wǎng)站服務(wù)器配置

(1)虛擬主機(jī)配置

[root@local ~]# vim /etc/httpd/conf.d/vhost.conf <VirtualHost 192.168.29.120:80>DocumentRoot "/data/web1"ServerName www.tb.com <Directory "/data/web1/">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted </Directory> </VirtualHost>

(2)狀態(tài)監(jiān)測(cè)頁(yè)配置

[root@local ~]# echo "This is check_status page ip:192.168.29.120" > /data/web1/check_status.jsp

(3)默認(rèn)頁(yè)面配置

[root@local ~]# echo "This is www page ip:192.168.29.120" > /data/web1/index.html

按照以上方式配置192.168.29.121主機(jī)

3 博客服務(wù)器組

(1)配置虛擬主機(jī)

[root@local ~]# vim /etc/httpd/conf.d/vhost.conf <VirtualHost 192.168.29.130:80>DocumentRoot "/data/web1"ServerName www.blog.tb.com <Directory "/data/web1/">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted </Directory> </VirtualHost>

(2)狀態(tài)監(jiān)測(cè)頁(yè)配置

[root@local ~]# echo "This is check_status page ip:192.168.29.130" > /data/web1/check_blog.php

(3)默認(rèn)頁(yè)面配置

[root@local ~]# echo "This is blog page ip:192.168.29.130" > /data/web1/index.html

按照以上方式配置192.168.29.131主機(jī)

三 測(cè)試

1 啟動(dòng)haproxy

[root@local ~]# systemctl start haproxy

2 測(cè)試

(1)訪問(wèn)網(wǎng)站服務(wù)器

[root@local ~]# for i in {1..10} ; do curl www.tb.com ; done This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120 This is www page ip:192.168.29.120

由于有會(huì)話粘性,所有都是用一臺(tái)服務(wù)器響應(yīng)請(qǐng)求
(2)訪問(wèn)blog服務(wù)器

[root@local ~]# for i in {1..10} ; do curl blog.tb.com ; done This is blog page ip:192.168.29.131 This is blog page ip:192.168.29.130 This is blog page ip:192.168.29.131 This is blog page ip:192.168.29.130 This is blog page ip:192.168.29.131 This is blog page ip:192.168.29.130 This is blog page ip:192.168.29.131 This is blog page ip:192.168.29.130 This is blog page ip:192.168.29.131 This is blog page ip:192.168.29.130

可以看到,輪詢算法生效了
(3)測(cè)試默認(rèn)服務(wù)器

[root@local ~]# for i in {1..10} ; do curl 172.16.253.200 ; done This is default page ip:192.168.29.110 This is default page ip:192.168.29.111 This is default page ip:192.168.29.110 This is default page ip:192.168.29.111 This is default page ip:192.168.29.110 This is default page ip:192.168.29.111 This is default page ip:192.168.29.110 This is default page ip:192.168.29.111 This is default page ip:192.168.29.110 This is default page ip:192.168.29.111

成功了

3 haproxy狀態(tài)監(jiān)測(cè)頁(yè)面

(1)輸入http://172.16.253.200:19088/haproxy-status登錄狀態(tài)監(jiān)測(cè)頁(yè)
(2)輸入用戶名密碼

(3)登錄成功

轉(zhuǎn)載于:https://www.cnblogs.com/Sunzz/p/7300777.html

總結(jié)

以上是生活随笔為你收集整理的HAproxy部署配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。