HAproxy部署配置
HAproxy部署配置
拓撲圖
說明:
haproxy服務器IP:172.16.253.200/16 (外網)、192.168.29.140/24(內網) 博客服務器組IP:192.168.29.130/24、192.168.29.131/24 網站服務器組IP:192.168.29.120/24、192.168.29.121/24 默認服務器組IP:192.168.29.110/24、192.168.29.111/24一 HAProxy主機配置
[root@local ~]# yum install haproxy -y [root@local ~]# vim /etc/haproxy/haproxy.cfg1 global部分
用來設定全局配置參數,屬于進程級的配置,通常和操作系統配置有關。
globallog 127.0.0.1 local2 info ##全局日志配置,local2為日志設備,info為日志級別chroot /var/lib/haproxypidfile /var/run/haproxy.pid ##指定HAProxy進程的Pid文件,啟動進程的用戶必須有訪問次文件的權限maxconn 4000 ##設定每個進程可接受的最大并發連接數user haproxy ##設置運行haproxy進程的用戶,可使用UID代替group haproxy ##設置運行haproxy進程的組,可使用GID代替daemon ##設置haproxy進程進入后臺運行stats socket /var/lib/haproxy/stats2 default部分
默認參數的配置部分。在次部分配置的參數值,默認會自動引用到下面frontend、backend、listen部分中,因此,如果某些參數屬于公共的配置,只需在default部分添加一次即可。而如果在frontend、backend、和listen部分也配置了與default部分一樣的參數,那么default部分的參數對應的值自動被覆蓋。
defaultsmode http ##設置haproxy實例默認運行模式,有tcp、http、health三個值log global ##option httplogoption dontlognulloption http-server-closeoption forwardfor except 127.0.0.0/8option redispatchretries 3 ##設置后端服務器的失敗重試次數timeout http-request 10s ##timeout queue 1mtimeout connect 5stimeout client 10s ##設置連接客戶端發送數據時的最長等待時間,默認單位為毫秒timeout server 10s ##設置服務器端回應客戶端數據發送的最長等待時間,默認單位為毫秒timeout http-keep-alive 10s ##持久連接的持久時長timeout check 2s ##設置對后端服務器的監測超時時間,默認單位為毫秒 maxconn 30003 listen部分
此部分是frontend和backend部分的結合體
listen admin_statsbind 0.0.0.0:19088 ##設置監控統計頁面的監聽的IP和端口mode httplog 127.0.0.1 local2 errstats refresh 30s ##設置哈haproxy監控統計頁面的自動刷新時間stats uri /haproxy-status ##設置haproxy監控統計頁面的URL路徑,可隨意指定,例如“stats uri /haproxy-status”,就可以通過http://IP:PORT//haproxy-status查看stats realm welcome login\ Haproxy ##設置登錄haproxy統計頁面是密碼框上的提示信息stats auth admin:admin ##設置登錄統計頁面的用戶名和密碼,可同時設置多個,每行一個stats hide-version ##用來隱藏統計頁面上haproxy的版本信息stats admin if TRUE ##通過設置此選項,可以在監控頁面上手工啟動或者禁用后端服務器4 frontend部分
此部分用于設置接收用戶請求的前端虛擬節點。frontend可以根據ACL規則直接指定要使用的后端backend。
(1)frontend部分
(2)通過haproxy的ACL規則實現智能負載均衡
haproxy通過ACL完成兩個主要的功能:
格式為:acl 自定義的acl名稱 acl方法 -i [ 匹配的路徑或文件]
acl:為關鍵字,表示定義ACL規則的開始,后面跟上自定義的ACL名稱。acl方法:這個字段定義ACL的方法,haproxy定義了很多ACL方法,常用的有hdr_reg(host)、hdr_dom(host)、hdr_beg(host)、url_sub、url_dir、path_beg、path_end等-i:表示不區分大小寫,后面跟上要匹配的路徑、文件或正則表達式。說明:與ACL規則一起使用的haproxy參數還有use_backend,use_backend 后面跟實例名,表示在滿足ACL規則后去哪里請求哪個backend實例acl host_www hdr_reg(host) -i ^(www.tb.com|tb.com) ##正則表達式匹配,表示如果開都有www.tb.com或tb.com acl host_blog hdr_beg(host) -i blog. ##表示如果前綴包含blog.字符,則匹配use_backend server_www if host_www ##表示如果滿足host_www 則去請求后端的server_www主機use_backend server_blog if host_blogdefault_backend server_default ##表示如果前面都不匹配,則去請求server_default主機5 backend部分
此部分用于設置后端服務器集群的配置,也是用來添加一組真實服務器,以處理客戶端的請求。
backend server_default 定義后端主機,格式為:backend SERVER_NAMEmode http ##實例的運行模式option redispatch ##次參數用于cookie保持的環境中option abortonclose ##自動結束當前隊列中處理時間較長的進程balance roundrobin ##定義負載均衡算法,roundrobin為加權輪詢算法cookie SERVERID ##表示允許向cookie中插入SERVERIDoption httpchk GET /check_status.html ##啟用http的服務監測功能,采用GET方式,通過監測check_status,html頁面的狀態來確定服務器的狀態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 定義后端主機,格式為:server <name> <address>[:port] [param*] param為一系列參數,cookie為當前server指定其cookie值,用于實現基于cookie的會話黏性weight 設置后端服務器的權重,check表示啟用后端服務器執行健康狀態監測,rise設置從故障狀態轉換到正常狀態需要成功檢查的次數,fall設置后端服務器從從正常狀態轉換為不可以狀態需要檢查的次數disabled:標記為不可用;redir <prefix>:將發往此server的所有GET和HEAD類的請求重定向至指定的URL backend server_wwwmode httpoption redispatchoption abortonclosebalance source ##定義負載均衡算法,source為基于源IP 的算法,可以使同一客戶端IP的請求始終被轉發至某臺特定的后端服務器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二 后端服務器配置
1 默認服務器配置
(1)虛擬主機配置
[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)狀態監測頁配置
[root@local ~]# echo "This is check_status.page ip:192.168.29.110" > /data/web1/check_status.html(3)默認頁面配置
[root@local ~]# echo "This is default page ip:192.168.29.110" > /data/web1/index.html按照以上方式配置192.168.29.111主機
2 網站服務器配置
(1)虛擬主機配置
[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)狀態監測頁配置
[root@local ~]# echo "This is check_status page ip:192.168.29.120" > /data/web1/check_status.jsp(3)默認頁面配置
[root@local ~]# echo "This is www page ip:192.168.29.120" > /data/web1/index.html按照以上方式配置192.168.29.121主機
3 博客服務器組
(1)配置虛擬主機
[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)狀態監測頁配置
[root@local ~]# echo "This is check_status page ip:192.168.29.130" > /data/web1/check_blog.php(3)默認頁面配置
[root@local ~]# echo "This is blog page ip:192.168.29.130" > /data/web1/index.html按照以上方式配置192.168.29.131主機
三 測試
1 啟動haproxy
[root@local ~]# systemctl start haproxy2 測試
(1)訪問網站服務器
[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由于有會話粘性,所有都是用一臺服務器響應請求
(2)訪問blog服務器
可以看到,輪詢算法生效了
(3)測試默認服務器
成功了
3 haproxy狀態監測頁面
(1)輸入http://172.16.253.200:19088/haproxy-status登錄狀態監測頁
(2)輸入用戶名密碼
(3)登錄成功
轉載于:https://www.cnblogs.com/Sunzz/p/7300777.html
總結
以上是生活随笔為你收集整理的HAproxy部署配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到种葱苗是什么意思
- 下一篇: P2327 [SCOI2005]扫雷