欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用Haporxy搭建Web群集

 更新時間: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é)點健康檢查功能不強,高并發(fā)性能沒有 Haproxy 好。Haproxy 官方網(wǎng)站是 http://www.haproxy.org/。
        本案例介紹使用 Haproxy 及 Nginx 搭建一套 Web 群集。

2.案例前置知識點

2.1 HTTP請求

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

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

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

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

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

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

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

 二、案例實施

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

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

 2.安裝Haproxy

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

修改haproxy的配置文件

Haproxy 配置項介紹:
Haproxy 配置文件通常分為三個部分,即 globaldefaults 和 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,增強安全性
    pidfile   /var/run/haproxy.pid   # 指定pid文件位置
    user    haproxy                  # 以haproxy用戶身份運行
    group    haproxy                 # 以haproxy組身份運行
    daemon                           # 以守護進(jìn)程方式運行
    maxconn    4000                  # 最大連接數(shù)4000
  •  defaults 部分 - 默認(rèn)參數(shù)

 defaults 配置項配置默認(rèn)參數(shù),一般會被應(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請求超時時間5秒
    timeout queue    1m              # 請求在隊列中的最長等待時間1分鐘
    timeout connect    5s            # 連接后端服務(wù)器的超時時間5秒
    timeout client    1m             # 客戶端不活動超時時間1分鐘
    timeout server    1m             # 服務(wù)器端不活動超時時間1分鐘
    timeout http-keep-alive 5s       # HTTP keep-alive超時時間5秒
    timeout check    5s              # 健康檢查超時時間5秒
    maxconn    3000                  # 默認(rèn)最大連接數(shù)3000
  •  listen 部分 - 定義前端和后端
listen  myweb                        # 定義一個名為myweb的監(jiān)聽服務(wù)(同時包含前端和后端)
    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 群集,接下來需要驗證群集是否工作正常。一個群集一般需要具備兩個特性,第一個是高性能,第二個是高可用。

  • 測試高性能

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

  •  測試高可用

 現(xiàn)在將192.168.10.102的Nginx服務(wù)停用,在客戶端使用瀏 覽器打開 http://192.168.10.103/test.html,瀏覽器顯示信息仍然更之前一樣。
從中可以看出,當(dāng)一臺節(jié)點故障,不會影響群集的使用,這樣就滿足了群集的高可用性。也可以將 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)境中一般單獨定義出來,定義的方法如下所述。 

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

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
global
    log    /dev/log local0 info  # 修改log配置,使用local0設(shè)備記錄info級別日志
    #chroot    /var/lib/haproxy  # 注釋掉chroot項(取消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 即時査看 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)化,以下列舉了幾個關(guān)鍵的參數(shù),并對各參數(shù)的生產(chǎn)環(huán)境的優(yōu)化 建議做了說明,如表下表所示。

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

總結(jié)

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

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

相關(guān)文章

  • 服務(wù)器間如何實現(xiàn)文件共享

    服務(wù)器間如何實現(xiàn)文件共享

    這篇文章主要介紹了服務(wù)器間如何實現(xiàn)文件共享,包括服務(wù)端和客戶端兩部分,通過詳細(xì)步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 教你如何用cmd快速登錄服務(wù)器

    教你如何用cmd快速登錄服務(wù)器

    這篇文章主要介紹了教你如何用cmd快速登錄服務(wù)器,本文將通過無需安裝任何工具,只要是自帶cmd終端(PowerShell也可以),均可便捷連接linux服務(wù)器,需要的朋友可以參考下
    2022-06-06
  • Windows Server 2016 上配置 APACHE+SSL+PHP+perl的教程詳解

    Windows Server 2016 上配置 APACHE+SSL+PHP+perl的教程詳解

    這篇文章主要介紹了Windows Server 2016 上配置 APACHE+SSL+PHP+perl的教程詳解,需要的朋友可以參考下
    2017-01-01
  • 深入理解微服務(wù)中的高并發(fā)、高性能、高可用及處理方式

    深入理解微服務(wù)中的高并發(fā)、高性能、高可用及處理方式

    這篇文章主要介紹了深入理解微服務(wù)中的高并發(fā)、高性能、高可用及處理方式,系統(tǒng)在巨大的流量洪峰(即指高并發(fā)場景)沖擊下,依然能高效、穩(wěn)定、正常地(即指高性能、高可用)對外提供服務(wù),這是系統(tǒng)設(shè)計的主要目標(biāo)之一,需要的朋友可以參考下
    2023-10-10
  • 云服務(wù)器(Linux)安裝部署Kafka的詳細(xì)過程

    云服務(wù)器(Linux)安裝部署Kafka的詳細(xì)過程

    這篇文章主要介紹了云服務(wù)器(Linux)安裝部署Kafka的詳細(xì)過程,kafka的安裝需要依賴于jdk,需要在服務(wù)器上提前安裝好該環(huán)境,這里使用用jdk1.8,本文給大家詳細(xì)介紹感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • 一文了解什么是CDN及實現(xiàn)原理

    一文了解什么是CDN及實現(xiàn)原理

    這篇文章主要為大家介紹了什么是CDN及實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • k8s入門集群組件介紹及概念理解

    k8s入門集群組件介紹及概念理解

    這篇文章主要為大家介紹了k8s入門集群組件的介紹及概念理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 使用Nexus添加jar包到私服里的方法步驟

    使用Nexus添加jar包到私服里的方法步驟

    這篇文章主要介紹了使用Nexus添加jar包到私服里的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 關(guān)于GitLabAPI的詳細(xì)使用教程

    關(guān)于GitLabAPI的詳細(xì)使用教程

    這篇文章主要介紹了關(guān)于GitLabAPI的詳細(xì)使用教程,GitLab作為一個開源、強大的分布式版本控制系統(tǒng),目前已經(jīng)被廣泛使用,還不會的朋友可以一起來看看
    2023-03-03
  • WampServer設(shè)置apache偽靜態(tài)出現(xiàn)404 not found及You don''t have permission to access / on this server解決方法分析

    WampServer設(shè)置apache偽靜態(tài)出現(xiàn)404 not found及You don''t have permiss

    這篇文章主要介紹了WampServer設(shè)置apache偽靜態(tài)出現(xiàn)404 not found及You don't have permission to access / on this server解決方法,較為詳細(xì)的分析了幾種常見情況,非常具有實用價值,需要的朋友可以參考下
    2015-10-10

最新評論