負載均衡集群HAproxy

HAProxy 簡介

HAProxy 是一款高性能的負載均衡器和代理服務器,支持 TCP 和 HTTP 應用。廣泛用于高可用性集群,能夠有效分發流量到多個后端服務器,確保服務的穩定性和可擴展性。

HAProxy 核心功能

  • 負載均衡:支持輪詢(round-robin)、最少連接(leastconn)、源 IP 哈希(source)等多種調度算法。
  • 健康檢查:自動檢測后端服務器狀態,剔除故障節點。
  • SSL/TLS 終止:支持 HTTPS 流量解密和加密。
  • 高可用性:可結合 Keepalived 實現 VIP 漂移,避免單點故障。

HAProxy 安裝與配置

在 Ubuntu/Debian 系統安裝 HAProxy:

sudo apt update
sudo apt install haproxy

配置文件位于 /etc/haproxy/haproxy.cfg,典型配置示例:

globallog /dev/log local0maxconn 4000user haproxygroup haproxydaemondefaultsmode httptimeout connect 5000mstimeout client 50000mstimeout server 50000msfrontend http-inbind *:80default_backend serversbackend serversbalance roundrobinserver server1 192.168.1.10:80 checkserver server2 192.168.1.11:80 check

健康檢查配置

通過 check 參數啟用健康檢查,支持主動(HTTP 請求)和被動(TCP 連接)模式:

backend web_serversoption httpchk GET /healthserver web1 192.168.1.10:80 check inter 5s rise 2 fall 3

日志與監控

啟用日志需在 global 部分配置 log 指令,并配置系統日志服務(如 rsyslog):

globallog 127.0.0.1 local0 info

HAProxy 高可用方案

結合 Keepalived 實現 VIP 漂移:

  1. 安裝 Keepalived:
sudo apt install keepalived

  1. 配置 Keepalived(/etc/keepalived/keepalived.conf):
vrrp_script chk_haproxy {script "pidof haproxy"interval 2
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.1.100/24}track_script {chk_haproxy}
}

HAProxy 基本配置結構

HAProxy 的配置文件通常分為幾個主要部分:全局設置(global)、默認設置(defaults)、前端(frontend)和后端(backend)。以下是基本配置的組成部分:

globallog /dev/log    local0log /dev/log    local1 noticechroot /var/lib/haproxystats socket /run/haproxy/admin.sock mode 660 level adminstats timeout 30suser haproxygroup haproxydaemonmaxconn 4000defaultslog     globalmode    httpoption  httplogoption  dontlognulltimeout connect 5000timeout client  50000timeout server  50000errorfile 400 /etc/haproxy/errors/400.httperrorfile 403 /etc/haproxy/errors/403.httperrorfile 408 /etc/haproxy/errors/408.httperrorfile 500 /etc/haproxy/errors/500.httperrorfile 502 /etc/haproxy/errors/502.httperrorfile 503 /etc/haproxy/errors/503.httperrorfile 504 /etc/haproxy/errors/504.httpfrontend http-inbind *:80default_backend serversbackend serversbalance roundrobinserver server1 192.168.1.10:80 checkserver server2 192.168.1.11:80 check

全局配置(global)

全局配置部分定義了 HAProxy 進程的全局參數,通常包括日志、用戶權限和性能調優等。

  • log:定義日志輸出位置和級別。
  • chroot:將 HAProxy 進程限制在指定目錄,增強安全性。
  • stats socket:啟用統計信息套接字,用于管理。
  • usergroup:指定運行 HAProxy 的用戶和組。
  • daemon:以守護進程模式運行。
  • maxconn:設置最大連接數。

默認配置(defaults)

默認配置部分定義了適用于所有 frontend 和 backend 的默認參數。

  • mode:設置代理模式(http、tcp)。
  • option httplog:啟用 HTTP 日志記錄。
  • timeout:定義連接、客戶端和服務器的超時時間。
  • errorfile:指定錯誤響應文件路徑。

前端配置(frontend)

前端配置定義了 HAProxy 如何接收客戶端請求。

  • bind:指定監聽的 IP 和端口。
  • default_backend:設置默認的后端服務器組。
  • 其他常用選項:
    • acl:定義訪問控制規則。
    • use_backend:根據條件選擇后端服務器組。

后端配置(backend)

后端配置定義了請求如何轉發到后端服務器。

  • balance:設置負載均衡算法(如 roundrobinleastconn)。
  • server:定義后端服務器地址和端口,check 表示啟用健康檢查。
  • 其他常用選項:
    • cookie:啟用會話持久性。
    • http-check:自定義健康檢查方式。

負載均衡算法

HAProxy 支持多種負載均衡算法,常見的有:

  • roundrobin:輪詢(默認)。
  • leastconn:最少連接數優先。
  • source:基于源 IP 哈希。
  • uri:基于 URI 哈希。

健康檢查

HAProxy 支持主動健康檢查,確保后端服務器的可用性:

backend serversoption httpchk GET /healthserver server1 192.168.1.10:80 check inter 2000 rise 2 fall 3

  • httpchk:指定健康檢查的 HTTP 請求路徑。
  • inter:檢查間隔(毫秒)。
  • rise:成功次數標記服務器為健康。
  • fall:失敗次數標記服務器為不健康。

統計頁面

啟用統計頁面以監控 HAProxy 狀態:

listen statsbind *:8404stats enablestats uri /statsstats refresh 10sstats admin if TRUE

  • bind:指定統計頁面的監聽端口。
  • stats uri:設置訪問路徑。
  • stats admin:允許通過頁面管理服務器狀態。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917059.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917059.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917059.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

重生之我在10天內卷贏C++ - DAY 1

坐穩了,我們的C重生之旅現在正式發車!請系好安全帶,前方高能,但絕對有趣!🚀 重生之我在10天內卷贏C - DAY 1導師寄語:嘿,未來的編程大神!歡迎來到C的世界。我知道&#x…

[mind-elixir]Mind-Elixir 的交互增強:單擊、雙擊與鼠標 Hover 功能實現

[mind-elixir]Mind-Elixir 的交互增強:單擊、雙擊與鼠標 Hover 功能實現 功能簡述 通過防抖,實現單擊雙擊區分通過mousemove事件,實現hover效果 實現思路 (一)單擊與雙擊事件 功能描述 單擊節點時,可以觸發…

c++-迭代器類別仿函數常用算法函數

C常用算法函數 1. 前置知識 1.1 迭代器的類別 C中,迭代器是 STL 容器庫的核心組件之一,具有舉足輕重的作用,它提供了一種 統一的方式來訪問和遍歷容器,而無需關心底層數據結構的具體實現。迭代器類似指針,但比指針更通…

Python深度學習框架TensorFlow與Keras的實踐探索

基礎概念與安裝配置 TensorFlow核心架構解析 TensorFlow是由Google Brain團隊開發的開源深度學習框架,其核心架構包含數據流圖(Data Flow Graph)和張量計算系統。數據流圖通過節點表示運算操作(如卷積、激活函數)&…

c# net6.0+ 安裝中文智能提示

https://github.com/stratosblue/IntelliSenseLocalizer 1、安裝tool dotnet tool install -g islocalizer 2、 安裝IntelliSense 文件,安裝其他net版本修改下版本號 安裝中文net6.0采集包 islocalizer install auto -m net6.0 -l zh-cn 安裝中英文雙語net6.0采集包…

【建模與仿真】二階鄰居節點信息驅動的節點重要性排序算法

導讀: 在復雜網絡中,挖掘重要節點對精準推薦、交通管控、謠言控制和疾病遏制等應用至關重要。為此,本文提出一種局部信息驅動的節點重要性排序算法Leaky Noisy Integrate-and-Fire (LNIF)。該算法通過獲取節點的二階鄰居信息計算節點重要性&…

指令微調Qwen3實現文本分類任務

參考文檔: SwanLab入門深度學習:Qwen3大模型指令微調 - 肖祥 - 博客園 vLLM:讓大語言模型推理更高效的新一代引擎 —— 原理詳解一_vllm 原理-CSDN博客 概述 為了實現對100個標簽的多標簽文本分類任務,前期調用gpt-4o進行prom…

【機器學習-3】 | 決策樹與鳶尾花分類實踐篇

0 序言 本文將深入探討決策樹算法,先回顧下前邊的知識,從其基本概念、構建過程講起,帶你理解信息熵、信息增益等核心要點。 接著在引入新知識點,介紹Scikit - learn 庫中決策樹的實現與應用,再通過一個具體項目的方式來…

【數字投影】折幕影院都是沉浸式嗎?

折幕影院作為一種現代化的展示形式,其核心特點在于通過多塊屏幕拼接和投影融合技術,打造更具包圍感的視覺體驗。折幕影院設計通常采用多折幕結構,如三折幕、五折幕等,利用多臺投影機的協同工作,呈現無縫銜接的超大畫面…

數據結構——圖(三、圖的 廣度/深度 優先搜索)

一、廣度優先搜索(BFS)①找到與一個頂點相鄰的所有頂點 ②標記哪些頂點被訪問過 ③需要一個輔助隊列#define MaxVertexNum 100 bool visited[MaxVertexNum]; //訪問標記數組 void BFSTraverse(Graph G){ //對圖進行廣度優先遍歷,處理非連通圖的函數 for(int i0;i…

直擊WAIC | 百度袁佛玉:加速具身智能技術及產品研發,助力場景應用多樣化落地

7月26日,2025世界人工智能大會暨人工智能全球治理高級別會議(WAIC)在上海開幕。同期,由國家地方共建人形機器人創新中心(以下簡稱“國地中心”)與中國電子學會聯合承辦,百度智能云、中國聯通上海…

2025年人形機器人動捕技術研討會將在本周四召開

2025年7月31日愛迪斯通所主辦的【2025人形機器動作捕捉技術研討會】是攜手北京天樹探界公司線下活動結合線上直播的形式,會議將聚焦在“動作捕捉軟硬件協同,加速人形機器人訓練”,將深度講解多項核心技術,包含全球知名的慣性動捕大…

Apple基礎(Xcode①-項目結構解析)

要運行設備之前先選擇好設備Product---->Destination---->選擇設備首次運行手機提示如出現 “未受信任的企業級開發者” → 手機打開 設置 ? 通用 ? VPN與設備管理 → 信任你的 Apple ID 即可ContentView 是 SwiftUI 項目里 最頂層、最主界面 的那個“頁面”&#xff0…

微服務 02

一、網關路由網關就是網絡的關口。數據在網絡間傳輸,從一個網絡傳輸到另一網絡時就需要經過網關來做數據的路由和轉發以及數據安全的校驗。路由是網關的核心功能之一,決定如何將客戶端請求映射到后端服務。1、快速入門創建新模塊,引入網關依賴…

04動手學深度學習筆記(上)

04數據操作 import torch(1)張量表示一個數據組成的數組,這個數組可能有多個維度。 xtorch.arange(12) xtensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])(2)通過shape來訪問張量的形狀和張量中元素的總數 x.shapetorch.Size([12])(3)number of elements表…

MCU中的RTC(Real-Time Clock,實時時鐘)是什么?

MCU中的RTC(Real-Time Clock,實時時鐘)是什么? 在MCU(微控制器單元)中,RTC(Real-Time Clock,實時時鐘) 是一個獨立計時模塊,用于在系統斷電或低功耗狀態下持續記錄時間和日期。以下是關于RTC的詳細說明: 1. RTC的核心功能 精準計時:提供年、月、日、時、分、秒、…

Linux 進程調度管理

進程調度器可粗略分為兩類:實時調度器(kernel),系統中重要的進程由實時調度器調度,獲得CPU能力強。非實時調度器(user),系統中大部分進程由非實時調度器調度,獲得CPU能力弱。實時調度器實時調度器支持的調度策略&#…

基于 C 語言視角:流程圖中分支與循環結構的深度解析

前言(約 1500 字)在 C 語言程序設計中,控制結構是構建邏輯的核心骨架,而流程圖作為可視化工具,是將抽象代碼邏輯轉化為直觀圖形的橋梁。對于入門 C 語言的工程師而言,掌握流程圖與分支、循環結構的對應關系…

threejs創建自定義多段柱

最近在研究自定義建模,有一個多斷柱模型比較有意思,分享下,就是利用幾組點串,比如上中下,然后每組點又不一樣多,點續還不一樣,(比如第一個環的第一個點在左邊,第二個環在右邊)&#…

Language Models are Few-Shot Learners: 開箱即用的GPT-3(四)

Result續 Winograd-Style Tasks Winograd-Style Tasks 是自然語言處理中的一類經典任務。它源于 Winograd Schema Challenge(WSC),主要涉及確定代詞指的是哪個單詞,旨在評估模型的常識推理和自然語言理解能力。 這個任務中的具體通常包含高度歧義的代詞,但從語義角度看…