0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HAproxy部署配置方案

馬哥Linux運(yùn)維 ? 來(lái)源:博客園Sunzz ? 2024-10-27 17:16 ? 次閱讀

HAproxy部署配置

說(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)。

global
    log         127.0.0.1 local2 info##全局日志配置,local2為日志設(shè)備,info為日志級(jí)別
    chroot      /var/lib/haproxy
    pidfile     /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)被覆蓋。

defaults
    mode                    http##設(shè)置haproxy實(shí)例默認(rèn)運(yùn)行模式,有tcp、http、health三個(gè)值
    log                     global##
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3##設(shè)置后端服務(wù)器的失敗重試次數(shù)
    timeout http-request    10s##
    timeout queue           1m
    timeout connect         5s
    timeout 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é)合體

listenadmin_stats
bind0.0.0.0:19088##設(shè)置監(jiān)控統(tǒng)計(jì)頁(yè)面的監(jiān)聽(tīng)的IP和端口
modehttp
log127.0.0.1 local2 err
statsrefresh30s##設(shè)置哈haproxy監(jiān)控統(tǒng)計(jì)頁(yè)面的自動(dòng)刷新時(shí)間
statsuri/haproxy-status##設(shè)置haproxy監(jiān)控統(tǒng)計(jì)頁(yè)面的URL路徑,可隨意指定,例如“stats uri  /haproxy-status”,就可以通過(guò)http://IP:PORT//haproxy-status查看
statsrealmwelcomelogin Haproxy ##設(shè)置登錄haproxy統(tǒng)計(jì)頁(yè)面是密碼框上的提示信息
statsauthadmin:admin##設(shè)置登錄統(tǒng)計(jì)頁(yè)面的用戶名和密碼,可同時(shí)設(shè)置多個(gè),每行一個(gè)
statshide-version##用來(lái)隱藏統(tǒng)計(jì)頁(yè)面上haproxy的版本信息
statsadminifTRUE##通過(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  www
bind*:80##此選項(xiàng)只能在frontend和listen部分使用,用于定義一個(gè)或多個(gè)監(jiān)聽(tīng)的套接字。格式為:bind  [
] interface modehttp##實(shí)例的運(yùn)行模式 optionhttplog##啟用日志記錄http請(qǐng)求。默認(rèn)haproxy日志不記錄http請(qǐng)求 optionforwardfor##在由haproxy發(fā)往后端主機(jī)的請(qǐng)求報(bào)文中添加“X-Forwarded-For”首部,其值前端客戶端的地址;用于向后端主發(fā)送真實(shí)的客戶端IP optionhttpclose##次選項(xiàng)表示在客戶端和服務(wù)器端完成一次連接請(qǐng)求后,haproxy自動(dòng)關(guān)閉此TCP連接 logglobal##表示使用全局的日志級(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_wwwhdr_reg(host) -i  ^(www.tb.com|tb.com) ##正則表達(dá)式匹配,表示如果開(kāi)都有www.tb.com或tb.com 
acl host_bloghdr_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_blog
default_backend server_default##表示如果前面都不匹配,則去請(qǐng)求server_default主機(jī)

5 backend部分

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

backend server_default定義后端主機(jī),格式為:backend  SERVER_NAME
modehttp##實(shí)例的運(yùn)行模式
optionredispatch##次參數(shù)用于cookie保持的環(huán)境中
optionabortonclose##自動(dòng)結(jié)束當(dāng)前隊(duì)列中處理時(shí)間較長(zhǎng)的進(jìn)程
balance  roundrobin##定義負(fù)載均衡算法,roundrobin為加權(quán)輪詢算法
    cookieSERVERID##表示允許向cookie中插入SERVERID
option 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    
[: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 :將發(fā)往此server的所有GET和HEAD類(lèi)的請(qǐng)求重定向至指定的URL
backend server_www
modehttp
optionredispatch
optionabortonclose
balancesource##定義負(fù)載均衡算法,source為基于源IP 的算法,可以使同一客戶端IP的請(qǐng)求始終被轉(zhuǎn)發(fā)至某臺(tái)特定的后端服務(wù)器
    cookieSERVERID
option httpchk GET /check_status.jsp
server www1 192.168.29.120:80 cookie www1 weight 6 check inter 2000 rise 2 fall 3
server www2 192.168.29.121:80 cookie www2 weight 6 check inter 2000 rise 2 fall 3
backend server_blog
modehttp
optionredispatch
optionabortonclose
balanceroundrobin
    cookieSERVERID
option httpchk GET /check_blog.php
server blog1 192.168.29.130:80 cookie blog1 weight 5 check inter 2000 rise 2 fall 3
server 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

        DocumentRoot "/data/web1"

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted


(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 

        DocumentRoot "/data/web1"
        ServerName www.tb.com

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted


(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 

        DocumentRoot "/data/web1"
        ServerName www.blog.tb.com

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted


(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)輸入用戶名密碼
fd54183a-9408-11ef-a511-92fbcf53809c.png

(3)登錄成功

fd60d23c-9408-11ef-a511-92fbcf53809c.png

鏈接:https://www.cnblogs.com/Sunzz/p/7300777.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1586

    瀏覽量

    149168
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8875

    瀏覽量

    84985
  • 主機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    974

    瀏覽量

    34971

原文標(biāo)題:HAproxy部署配置

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    樹(shù)莓派安裝Haproxy實(shí)現(xiàn)***負(fù)載均衡

    基于TCP和HTTP應(yīng)用的代理,支持虛擬主機(jī),它是免費(fèi)、快速并且可靠的一種解決方案。HAProxy特別適用于那些負(fù)載特大的web站點(diǎn),這些站點(diǎn)通常又需要會(huì)話保持或七層處理。HAProxy運(yùn)行在當(dāng)前的硬件上
    發(fā)表于 05-14 15:53

    阿里云企業(yè)IPv6部署方案

    具備IPv6訪問(wèn)能力,提供用戶快速部署IPv6的解決方案。主要涉及SLB,IPv6轉(zhuǎn)換服務(wù),云解析DNS,和CDN四款產(chǎn)品,相關(guān)產(chǎn)品已經(jīng)于2018年6月上線發(fā)布。第二期將對(duì)主要云產(chǎn)品進(jìn)行IPv4
    發(fā)表于 07-09 16:18

    安森美半導(dǎo)體開(kāi)發(fā)方案助力客戶快速開(kāi)發(fā)及部署物聯(lián)網(wǎng)設(shè)備

    員帶來(lái)重要的價(jià)值。全新感測(cè)功能與超低能耗聯(lián)接和致動(dòng)器產(chǎn)品的選項(xiàng)相輔相成,可實(shí)現(xiàn)領(lǐng)先業(yè)界的電池壽命的全新方案類(lèi)別。更廣的云支持、升級(jí)的操作系統(tǒng)(OS)和可配置的移動(dòng)應(yīng)用程序都表明我們持續(xù)增強(qiáng)軟件功能以促進(jìn)快速產(chǎn)品部署的承諾。請(qǐng)按此
    發(fā)表于 10-26 08:48

    haproxy實(shí)現(xiàn)負(fù)載均衡和添加日志的步驟

    219 haproxy -------負(fù)載均衡,添加日志,訪問(wèn)控制,動(dòng)靜分離,讀寫(xiě)分離
    發(fā)表于 03-27 06:54

    HAproxy組成與負(fù)載均衡集群

    haproxy負(fù)載均衡配置
    發(fā)表于 04-25 06:29

    Keepalived+Haproxy如何實(shí)現(xiàn)高可用負(fù)載綜合實(shí)驗(yàn)

    Keepalived+Haproxy實(shí)現(xiàn)高可用負(fù)載綜合實(shí)驗(yàn)
    發(fā)表于 06-02 16:53

    企業(yè)云桌面要如何部署

    更高的Clouds共享RDP連接云桌面方案,對(duì)于應(yīng)用復(fù)雜的部門(mén)部署功能更加強(qiáng)大的Cloudv VDI連接云桌面方案,多種云桌面方案混合部署達(dá)
    發(fā)表于 09-23 10:01

    XenApp 6.5 安全標(biāo)準(zhǔn)和部署方案

    XenApp 6.5 安全標(biāo)準(zhǔn)和部署方案
    發(fā)表于 09-08 14:04 ?9次下載
    XenApp 6.5 安全標(biāo)準(zhǔn)和<b class='flag-5'>部署</b><b class='flag-5'>方案</b>

    一種快速、自動(dòng)部署OpenStack云平臺(tái)的解決方案

    提出了一種快速、自動(dòng)部署OpenStack云平臺(tái)的解決方案,以提高OpenStack的部署效率。該方案首先創(chuàng)建不同節(jié)點(diǎn)類(lèi)型的鏡像模板文件;接著根據(jù)節(jié)點(diǎn)類(lèi)型(如網(wǎng)絡(luò)節(jié)點(diǎn)、計(jì)算節(jié)點(diǎn))將已制
    發(fā)表于 12-28 14:05 ?0次下載
    一種快速、自動(dòng)<b class='flag-5'>部署</b>OpenStack云平臺(tái)的解決<b class='flag-5'>方案</b>

    賽靈思可重配置加速堆棧方案,旨在快速開(kāi)發(fā)和部署加速平臺(tái)

    賽靈思公司(Xilinx)宣布,在2016全球超算大會(huì)(SC 16)上宣布推出一套全新的技術(shù)——賽靈思可重配置加速堆棧方案,旨在幫助全球最大的云端服務(wù)供應(yīng)商們快速開(kāi)發(fā)和部署加速平臺(tái)。專(zhuān)門(mén)針對(duì)云級(jí)
    發(fā)表于 07-31 09:08 ?863次閱讀

    將英特爾Quickassist技術(shù)與HAProxy的配合使用

    了解如何將HAProxy *與英特爾?QuickAssist技術(shù)軟件配合使用。
    的頭像 發(fā)表于 11-12 06:29 ?2787次閱讀

    NVR和VSaaS架構(gòu)部署方案的優(yōu)缺點(diǎn),要如何選擇

    部署視頻監(jiān)控時(shí),最終用戶通常會(huì)考慮的第一個(gè)問(wèn)題是采用本地(NVR)還是云(VSaaS)架構(gòu)。要選擇哪種部署方案,需要了解每種部署方案的優(yōu)缺點(diǎn)
    發(fā)表于 07-15 11:36 ?1094次閱讀

    全面剖析HAProxy 負(fù)載均衡器

    HAProxy是什么 HAProxy 是一個(gè)免費(fèi)的負(fù)載均衡軟件,可以運(yùn)行于大部分主流的 Linux 操作系統(tǒng)上。 HAProxy 提供了L4(TCP)和L7(HTTP)兩種負(fù)載均衡能力,具備豐富
    的頭像 發(fā)表于 06-28 09:22 ?2233次閱讀
    全面剖析<b class='flag-5'>HAProxy</b> 負(fù)載均衡器

    docker-haproxy HAProxy的Docker映像

    ./oschina_soft/docker-haproxy.zip
    發(fā)表于 05-13 10:42 ?1次下載
    docker-<b class='flag-5'>haproxy</b> <b class='flag-5'>HAProxy</b>的Docker映像

    政務(wù)外網(wǎng)IPv6深化部署解決方案

    的困難和問(wèn)題。二、部署方案1.科學(xué)合理規(guī)劃地址:可按政府區(qū)域、部門(mén)或按現(xiàn)網(wǎng)vlan等本地屬性進(jìn)行劃分。2.網(wǎng)絡(luò)基礎(chǔ)設(shè)施升級(jí):對(duì)網(wǎng)絡(luò)交換機(jī)、路由器、防火墻等進(jìn)行配置或替換升級(jí)。3.構(gòu)建IPv6安全體系:
    的頭像 發(fā)表于 04-24 10:41 ?753次閱讀
    政務(wù)外網(wǎng)IPv6深化<b class='flag-5'>部署</b>解決<b class='flag-5'>方案</b>