最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用Haporxy搭建Web群集

 更新時(shí)間:2025年06月20日 14:25:32   作者:絕不偷吃  
Haproxy是目前比較流行的一種群集調(diào)度工具,同類群集調(diào)度工具有很多如LVS和Nginx,本案例介紹使用Haproxy及Nginx搭建一套Web群集,感興趣的朋友跟隨小編一起看看吧

一、案例分析

1.案例概述

        Haproxy 是目前比較流行的一種群集調(diào)度工具,同類群集調(diào)度工具有很多如 LVS 和 Nginx。相比較而言,LVS 性能最好,但是搭建相對復(fù)雜;Nginx 的upstream 模塊支持群集功能,但是對群集節(jié)點(diǎn)健康檢查功能不強(qiáng),高并發(fā)性能沒有 Haproxy 好。Haproxy 官方網(wǎng)站是 http://www.haproxy.org/。
        本案例介紹使用 Haproxy 及 Nginx 搭建一套 Web 群集。

2.案例前置知識(shí)點(diǎn)

2.1 HTTP請求

        通過 URL 訪問網(wǎng)站使用的協(xié)議是 HTTP 協(xié)議,此類請求一般稱為 HTTP 請求。HTTP 請求的方式分為GET方式和 POST 方式。當(dāng)使用瀏覽器訪問某一個(gè)URL,會(huì)根據(jù)請求 URL 返回狀態(tài)碼,通常正常的狀態(tài)碼為 2xx、3xx(如 200、301),如果出現(xiàn)異常會(huì)返回 4xx、5xx(如 400、500)。

        例如,訪問 http://www.test.com/a.php?Id=123,就是一個(gè) GET 請求,如果訪問正常,會(huì)從服務(wù)器的日志中獲取 200狀態(tài)碼。假如此請求使用 POST 方式,那么傳遞給 a.php 的 Id 參數(shù)依舊是 123,但是瀏覽器的 URL 將不會(huì)顯示后面的 Id=123 字樣,因此表單類或者有用戶名、密碼等內(nèi)容提交時(shí)建議使用POST 方式。不管使用哪種方式,最終 a.php 獲取的值是一樣的。

2.2 負(fù)載均衡常用調(diào)度算法

        LVS、Haproxy、Nginx 最常用的調(diào)度算法有三種,如下所述。

  • RR(Round Robin)。RR 算法是最簡單最常用的一種算法,即輪詢調(diào)度。例如,有三個(gè)節(jié)點(diǎn) A、B、C,第一個(gè)用戶訪問會(huì)被指派到節(jié)點(diǎn) A,第二個(gè)用戶訪問會(huì)被指派到節(jié)點(diǎn) B,第三個(gè)用戶訪問會(huì)被指派到節(jié)點(diǎn)C,第四個(gè)用戶訪問繼續(xù)指派到節(jié)點(diǎn) A,輪詢分配訪問請求實(shí)現(xiàn)負(fù)載均衡效果。此算法還有一種加權(quán)輪詢,即根據(jù)每個(gè)節(jié)點(diǎn)的權(quán)重輪詢分配訪問請求。
  • LC(Least Connections)。LC 算法即最小連接數(shù)算法,根據(jù)后端的節(jié)點(diǎn)連接數(shù)大
    小動(dòng)態(tài)分配前端請求。例如,有三個(gè)節(jié)點(diǎn) A、B、C,各節(jié)點(diǎn)的連接數(shù)分別為 A:4、B:5、C:
    6,此時(shí)如果有第一個(gè)用戶連接請求,會(huì)被指派到 A上,連接數(shù)變?yōu)?A:5、B:5、C:6;第二個(gè)用戶請求會(huì)繼續(xù)分配到 A 上,連接數(shù)變?yōu)?A:6、B∶5、C:6:再有新的請求會(huì)分配給 B,每次將新的請求指派給連接數(shù)最小的客戶端。由于實(shí)際情況下 A、B、C的連接數(shù)會(huì)動(dòng)態(tài)釋放,很難會(huì)出現(xiàn)一樣連接數(shù)的情況,因此此算法相比較 rr 算法有很大改進(jìn),是目前用到比較多的一種算法。
  • SH(Source Hashing)。SH 即基于來源訪問調(diào)度算法,此算法用于一些有Session 會(huì)話記錄在服務(wù)器端的場景,可以基于來源的 IP、Cookie 等做群集調(diào)度。例如,使用基于源 IP 的群集調(diào)度算法,有三個(gè)節(jié)點(diǎn) A、B、C,第一個(gè)用戶第一次訪問被指派到了 A,第二個(gè)用戶第一次訪問被指派到了 B,當(dāng)?shù)谝粋€(gè)用戶第二次訪問時(shí)會(huì)被繼續(xù)指派到 A,第二個(gè)用戶第二次訪問時(shí)依舊會(huì)被指派到B,只要負(fù)載均衡調(diào)度器不重啟,第一個(gè)用戶訪問都會(huì)被指派到 A,第二個(gè)用戶訪問都會(huì)被指派到 B,實(shí)現(xiàn)群集的調(diào)度。此調(diào)度算法好處是實(shí)現(xiàn)會(huì)話保持,但某些IP訪問量非常大時(shí)會(huì)引起負(fù)載不均衡,部分節(jié)點(diǎn)訪問量超大,影響業(yè)務(wù)使用。

 2.3常見的Web群集調(diào)度器

        目前,常見的 Web 群集調(diào)度器分為軟件和硬件。軟件通常使用開源的 LVS、Haproxy、 Nginx,硬件一般使用比較多的是 F5。也有很多人使用國內(nèi)的一些產(chǎn)品,如梭子魚、綠盟等。

3.案例環(huán)境

3.1本案例環(huán)境

本案例使用三臺(tái)服務(wù)器模擬搭建一套 Web 群集,具體的拓?fù)淙鐖D所示。案例環(huán)境如表所示

主機(jī)操作系統(tǒng)IP 地址應(yīng)用
nginx1openEuler 24.03192.168.10.101apache
nginx2openEuler 24.03192.168.10.102apache
haproxyopenEuler 24.03192.168.10.103haproxy

 二、案例實(shí)施

1.搭建兩臺(tái)web服務(wù)器

 為了方便實(shí)驗(yàn),網(wǎng)站沒有配置域名,直接使用IP地址。在客戶端訪問http://192.168.10.102/test.html 測試

 2.安裝Haproxy

 3.haproxy服務(wù)器配置

修改haproxy的配置文件

Haproxy 配置項(xiàng)介紹:
Haproxy 配置文件通常分為三個(gè)部分,即 global、defaults 和 listen。
global 為全局配置,defaults 為默認(rèn)配置,listen 為應(yīng)用組件配置。

  •  global部分-全局配置
global
    log    127.0.0.1 local2          # 日志輸出到本地127.0.0.1的syslog的local2設(shè)施
    chroot    /var/lib/haproxy       # 改變根目錄到/var/lib/haproxy,增強(qiáng)安全性
    pidfile   /var/run/haproxy.pid   # 指定pid文件位置
    user    haproxy                  # 以haproxy用戶身份運(yùn)行
    group    haproxy                 # 以haproxy組身份運(yùn)行
    daemon                           # 以守護(hù)進(jìn)程方式運(yùn)行
    maxconn    4000                  # 最大連接數(shù)4000
  •  defaults 部分 - 默認(rèn)參數(shù)

 defaults 配置項(xiàng)配置默認(rèn)參數(shù),一般會(huì)被應(yīng)用組件繼承,如果在應(yīng)用組件中沒有特別聲明,將按照默認(rèn)配置參數(shù)設(shè)置。

defaults
    mode    http                     # 默認(rèn)模式為HTTP(七層代理)
    log    global                    # 繼承g(shù)lobal部分的日志配置
    option    httplog                # 啟用HTTP日志格式
    option    dontlognull            # 不記錄空連接日志
    retries    3                     # 失敗后重試3次
    timeout http-request 5s          # HTTP請求超時(shí)時(shí)間5秒
    timeout queue    1m              # 請求在隊(duì)列中的最長等待時(shí)間1分鐘
    timeout connect    5s            # 連接后端服務(wù)器的超時(shí)時(shí)間5秒
    timeout client    1m             # 客戶端不活動(dòng)超時(shí)時(shí)間1分鐘
    timeout server    1m             # 服務(wù)器端不活動(dòng)超時(shí)時(shí)間1分鐘
    timeout http-keep-alive 5s       # HTTP keep-alive超時(shí)時(shí)間5秒
    timeout check    5s              # 健康檢查超時(shí)時(shí)間5秒
    maxconn    3000                  # 默認(rèn)最大連接數(shù)3000
  •  listen 部分 - 定義前端和后端
listen  myweb                        # 定義一個(gè)名為myweb的監(jiān)聽服務(wù)(同時(shí)包含前端和后端)
    bind 0.0.0.0:80                  # 監(jiān)聽所有IP的80端口
    option httpchk GET /index.html   # 使用HTTP GET /index.html進(jìn)行健康檢查
    balance roundrobin               # 使用輪詢(round-robin)負(fù)載均衡算法
    server inst1 192.168.10.102:80 check inter 2000 fall 3  # 后端服務(wù)器1,IP:192.168.10.102:80,啟用健康檢查,檢查間隔2秒,3次失敗標(biāo)記為不可用
    server inst2 192.168.10.103:80 check inter 2000 fall █  # 后端服務(wù)器2,IP:192.168.10.103:80,啟用健康檢查,檢查間隔2秒,█處應(yīng)為失敗次數(shù)(如3)

 4.測試web群集

        通過上面的步驟,已經(jīng)搭建完成 Haproxy 的 Web 群集,接下來需要驗(yàn)證群集是否工作正常。一個(gè)群集一般需要具備兩個(gè)特性,第一個(gè)是高性能,第二個(gè)是高可用。

  • 測試高性能

在客戶端訪問網(wǎng)站顯示信息 :

  •  測試高可用

 現(xiàn)在將192.168.10.102的Nginx服務(wù)停用,在客戶端使用瀏 覽器打開 http://192.168.10.103/test.html,瀏覽器顯示信息仍然更之前一樣。
從中可以看出,當(dāng)一臺(tái)節(jié)點(diǎn)故障,不會(huì)影響群集的使用,這樣就滿足了群集的高可用性。也可以將 192.168.10.102的 Nginx 服務(wù)恢復(fù),再將192.168.10.103 的 Nginx 服務(wù)停用,測試高可用性。

5.haproxy的日志

        Haproxy 的日志默認(rèn)輸出到系統(tǒng)的 syslog 中,查看起來不是非常方便,為了更好地管理 Haproxy 的日志,在生產(chǎn)環(huán)境中一般單獨(dú)定義出來,定義的方法如下所述。 

修改 haproxy 配置文件,將原有的配置更改為以下配置:

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
global
    log    /dev/log local0 info  # 修改log配置,使用local0設(shè)備記錄info級別日志
    #chroot    /var/lib/haproxy  # 注釋掉chroot項(xiàng)(取消chroot限制)

配置 Rsyslog 服務(wù)

[root@localhost ~]# vim /etc/rsyslog.d/99-haproxy.conf
# 捕獲local0設(shè)備的日志,寫入/var/log/haproxy.log
local0.* /var/log/haproxy.log

創(chuàng)建日志文件并設(shè)置權(quán)限

[root@localhost ~]# touch /var/log/haproxy.log
[root@localhost ~]# chmod 640 /var/log/haproxy.log
[root@localhost ~]# chown root:adm /var/log/haproxy.log

重啟Rsyslog和 HAProxy 服務(wù)

[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# systemctl restart haproxy
  • 測試日志信息。

 在客戶端訪問 http://192.168.10.103/test.html 后,可以使用 tail -f/var/log/haproxy.log 即時(shí)査看 Haproxy 的訪問請求日志信息。

[root@localhost ~]# tail -f /var/log/haproxy.log
Apr 11 22:06:20 localhost happyxy[2701]: 192.168.10.1:54483 [11/Apr/2025:22:06:20.941] webcluster webcluster/inst2 0/0/0/1/1 200 221 -- --- 2/2/0/0/0 0/0 "GET /test.html HTTP/1.1"
Apr 11 22:06:20 localhost happyxy[2701]: 192.168.10.1:54483 [11/Apr/2025:22:06:20.981] webcluster webcluster/inst1 0/0/0/1/1 404 3603 -- --- 2/2/0/0/0 0/0 "GET /favicon.ico HTTP/1.1"

6.haproxy的參數(shù)優(yōu)化

關(guān)于 Haproxy 的參數(shù)優(yōu)化,以下列舉了幾個(gè)關(guān)鍵的參數(shù),并對各參數(shù)的生產(chǎn)環(huán)境的優(yōu)化 建議做了說明,如表下表所示。

分類參數(shù)說明優(yōu)化建議注意事項(xiàng)
全局參數(shù)maxconn最大并發(fā)連接數(shù)- 推薦值:10240
- 根據(jù)服務(wù)器內(nèi)存調(diào)整(每連接約占用10-20KB內(nèi)存)
defaults段的值必須 ≤ global段的值
daemon守護(hù)進(jìn)程模式生產(chǎn)環(huán)境必須啟用非守護(hù)進(jìn)程模式僅用于調(diào)試
nbproc工作進(jìn)程數(shù)等于CPU核數(shù)(如16核)或2倍(如32核)每個(gè)進(jìn)程獨(dú)立處理連接,需配合maxconn分配
重試策略retries節(jié)點(diǎn)健康檢查重試次數(shù)- 高并發(fā)集群:2-3次
- 小型集群:5-6次
過多重試會(huì)增加故障檢測延遲
HTTP優(yōu)化option http-server-close主動(dòng)關(guān)閉后端HTTP連接生產(chǎn)環(huán)境建議啟用可減少服務(wù)端連接堆積,但會(huì)增加TCP握手開銷
timeout http-keep-alive長連接保持時(shí)間- 動(dòng)態(tài)內(nèi)容:10s
- 靜態(tài)資源:30-60s
需與應(yīng)用特性匹配
timeout http-requestHTTP請求超時(shí)5-10s(敏感業(yè)務(wù)可延長至15s)過短會(huì)導(dǎo)致慢請求失敗
timeout client客戶端超時(shí)- 常規(guī):1min
- 高并發(fā):30s
影響文件上傳等長耗時(shí)操作
高級優(yōu)化timeout connect后端連接超時(shí)5-10s(跨機(jī)房部署可延長)需大于網(wǎng)絡(luò)延遲
timeout server后端響應(yīng)超時(shí)根據(jù)應(yīng)用響應(yīng)時(shí)間調(diào)整(建議≥平均響應(yīng)時(shí)間的3倍)過短會(huì)導(dǎo)致正常響應(yīng)被中斷

總結(jié)

HAProxy作為一款高性能且功能強(qiáng)大的開源負(fù)載均衡與代理服務(wù)器軟件,在運(yùn)維領(lǐng)域發(fā)揮著至關(guān)重要的作用。它憑借高效的請求轉(zhuǎn)發(fā)機(jī)制、靈活的負(fù)載均衡算法(如輪詢、最少連接、源地址哈希等),能夠智能地將客戶端請求分配到后端多臺(tái)服務(wù)器,有效提升系統(tǒng)整體性能與可用性;支持TCP和HTTP(S)等多種協(xié)議,適配各類應(yīng)用場景,無論是 Web 服務(wù)、數(shù)據(jù)庫代理還是 API網(wǎng)關(guān)等都能輕松應(yīng)對;具備完善的健康檢查功能,可實(shí)時(shí)監(jiān)測后端服務(wù)器狀態(tài),自動(dòng)隔離故障節(jié)
點(diǎn),確保服務(wù)連續(xù)性;同時(shí),其豐富的配置選項(xiàng)與動(dòng)態(tài)重載能力,讓運(yùn)維人員能夠根據(jù)業(yè)務(wù)需求靈活調(diào)整策略,且無需中斷服務(wù)。在實(shí)際運(yùn)維工作中,熟練掌握HAProxy 的部署、配置、監(jiān)控與優(yōu)化技巧,對于構(gòu)建穩(wěn)定、高效、可擴(kuò)展的系統(tǒng)架構(gòu)具有不可忽視的意義。

到此這篇關(guān)于使用Haporxy搭建Web群集的文章就介紹到這了,更多相關(guān)Haporxy搭建Web群集內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用GIT進(jìn)行源碼管理——GUI客戶端小結(jié)

    使用GIT進(jìn)行源碼管理——GUI客戶端小結(jié)

    很多人對GIT GUI客戶端是非常不屑一顧的,但我非常喜歡GUI的方便快捷,也不用記憶冗雜的命令,本文簡單的介紹了幾種免費(fèi)的Windows下的GIT客戶端,方便大家使用
    2014-09-09
  • 如何使用 Rails 和七牛云存儲(chǔ),在 15 分鐘內(nèi)打造一個(gè)圖片分享社交應(yīng)用原型

    如何使用 Rails 和七牛云存儲(chǔ),在 15 分鐘內(nèi)打造一個(gè)圖片分享社交應(yīng)用原型

    今天,就讓我們一起來看看如何使用 Rails 和七牛云存儲(chǔ),在 15 分鐘內(nèi)打造一個(gè)圖片分享社交應(yīng)用原型
    2016-03-03
  • CentOS與Ubuntu哪個(gè)更適合做服務(wù)器系統(tǒng)

    CentOS與Ubuntu哪個(gè)更適合做服務(wù)器系統(tǒng)

    對于服務(wù)器而言,有兩個(gè)主流的 Linux 發(fā)行版,那就是 CentOS 和 Ubuntu。但如何從這兩個(gè)之中選擇,這是擺在管理員、初學(xué)者和專業(yè)人士面前的主要問題。在對這兩個(gè)(和更多)發(fā)行版有了一定的經(jīng)驗(yàn)之后,我們決定對這兩個(gè)發(fā)行版用于服務(wù)器時(shí)做個(gè)比較
    2017-04-04
  • 碼云(gitee)通過git自動(dòng)同步到阿里云服務(wù)器

    碼云(gitee)通過git自動(dòng)同步到阿里云服務(wù)器

    當(dāng)我們想要實(shí)現(xiàn)幾個(gè)小伙伴合作開發(fā)同一個(gè)項(xiàng)目,或者建立一個(gè)資源分享平臺(tái)的時(shí)候,GIT就是一個(gè)很好的選擇。這篇文章主要介紹了碼云(gitee)通過git自動(dòng)同步到阿里云服務(wù)器
    2022-12-12
  • TCP第三次握手傳數(shù)據(jù)過程圖解

    TCP第三次握手傳數(shù)據(jù)過程圖解

    這篇文章主要介紹了TCP第三次握手傳數(shù)據(jù)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • ubuntu 服務(wù)器中mysql的安裝與連接方法

    ubuntu 服務(wù)器中mysql的安裝與連接方法

    這篇文章主要介紹了ubuntu 服務(wù)器中mysql的安裝與連接方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • HTTP全部標(biāo)準(zhǔn)響應(yīng)狀態(tài)碼整理

    HTTP全部標(biāo)準(zhǔn)響應(yīng)狀態(tài)碼整理

    HTTP標(biāo)準(zhǔn)響應(yīng)狀態(tài)碼用來表明特定 HTTP 請求是否成功完成。 響應(yīng)被歸為以下五大類:信息響應(yīng) (100–199);成功響應(yīng) (200–299);重定向消息 (300–399);客戶端錯(cuò)誤響應(yīng) (400–499);服務(wù)端錯(cuò)誤響應(yīng) (500–599)
    2023-07-07
  • Win2008 藍(lán)屏漏洞揭秘

    Win2008 藍(lán)屏漏洞揭秘

    藍(lán)屏漏洞威脅的是服務(wù)器操作系統(tǒng)Windows Server 2008,這意味著如果Windows Server 2008藍(lán)屏,將導(dǎo)致服務(wù)器停止服務(wù)……
    2009-10-10
  • 寶塔面板屏蔽禁止某個(gè)IP段訪問的辦法實(shí)現(xiàn)

    寶塔面板屏蔽禁止某個(gè)IP段訪問的辦法實(shí)現(xiàn)

    有時(shí)候我們會(huì)遇到各種不明IP的訪問,比如采集蜘蛛IP,那么應(yīng)該怎么解決,本文主要介紹了寶塔面板屏蔽禁止某個(gè)IP段訪問的辦法實(shí)現(xiàn),感興趣的可以了解一下
    2023-08-08
  • php中安全模式safe_mode配置教程

    php中安全模式safe_mode配置教程

    php的安全模式是個(gè)非常重要的內(nèi)嵌的安全機(jī)制,能夠控制一些php中的函數(shù),比如system(),同時(shí)把很多文件操作函數(shù)進(jìn)行了權(quán)限控制,也不允許對某些關(guān)鍵文件的文件
    2012-08-08

最新評論

通江县| 岚皋县| 海淀区| 庆阳市| 孝感市| 宣汉县| 鄂伦春自治旗| 巴林左旗| 邵阳市| 沿河| 安平县| 石楼县| 黑龙江省| 习水县| 荆门市| 平湖市| 牙克石市| 康平县| 夏河县| 铜川市| 丰原市| 博乐市| 永春县| 泰来县| 永靖县| 中山市| 塘沽区| 醴陵市| 石狮市| 娄底市| 仁寿县| 沭阳县| 蓬莱市| 万州区| 石景山区| 临高县| 惠水县| 崇明县| 安义县| 舞钢市| 射阳县|