企業級HAProxy高可用離線部署實戰(附Kubernetes APIServer負載均衡配置)

企業級HAProxy高可用離線部署實戰(附Kubernetes APIServer負載均衡配置)

摘要:本文深入講解在離線環境下部署HAProxy 3.1.1的全流程,涵蓋源碼編譯、系統服務封裝、K8S APIServer四層負載配置等核心環節,并提供生產級高可用方案。適用于金融、政務等隔離網絡的負載均衡場景。

一、環境規劃與架構設計

1.1 節點信息

節點IP角色服務組件
192.167.14.119主負載節點HAProxy + Keepalived
192.167.14.223備負載節點HAProxy + Keepalived
192.167.14.226備負載節點HAProxy + Keepalived

1.2 服務端口規劃

服務端口協議用途
HAProxy Admin33305HTTP監控接口
K8S APIServer16443TCPKubernetes API入口

二、離線安裝HAProxy

2.1 源碼編譯安裝

# 在有網環境下載源碼包
wget https://www.haproxy.org/download/3.1/src/haproxy-3.1.1.tar.gz# 傳輸到離線環境后解壓編譯
tar -zxvf haproxy-3.1.1.tar.gz -C /usr/local
cd /usr/local/haproxy-3.1.1# 指定目標系統和安裝路徑
make TARGET=linux31 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy# 創建日志目錄
mkdir -p /usr/local/haproxy/logs

關鍵參數解析

  • TARGET=linux31:指定內核版本兼容性
  • PREFIX:定義安裝根目錄,便于集中管理

三、系統服務封裝

3.1 創建SystemV服務腳本

vi /etc/rc.d/init.d/haproxy#!/bin/bash
# chkconfig: 2345 10 90
# description: HAProxy ServiceBASE_DIR="/usr/local/haproxy"
CONFIG_FILE="$BASE_DIR/haproxy.cfg"
PID_FILE="$BASE_DIR/logs/haproxy.pid"start() {echo "Starting HAProxy..."$BASE_DIR/sbin/haproxy -f $CONFIG_FILE -p $PID_FILE[ $? -eq 0 ] && echo "Success" || echo "Failed"
}stop() {echo "Stopping HAProxy..."[ -f $PID_FILE ] && kill -USR1 $(cat $PID_FILE) || pkill haproxy
}restart() {stopsleep 2start
}case "$1" instart)   start ;;stop)    stop ;;restart) restart ;;*) echo "Usage: $0 {start|stop|restart}" ;;
esac

3.2 配置服務自啟動

chmod +x /etc/rc.d/init.d/haproxy
chkconfig --add haproxy
chkconfig haproxy on

四、K8S APIServer負載配置

4.1 主配置文件haproxy.cfg

cat > /usr/local/haproxy/haproxy.cfg <<EOF
globalmaxconn  4000            # 最大連接數log /dev/log local0      # 日志輸出stats timeout 30s        # 統計接口超時defaultsmode tcp                 # 四層代理模式timeout connect 5s       # 后端連接超時timeout client 30s       # 客戶端超時timeout server 30s       # 服務端超時frontend k8s-apiserverbind *:16443             # 監聽所有IP的16443端口default_backend apiserver-nodesbackend apiserver-nodesbalance roundrobin       # 輪詢負載策略option tcp-check         # TCP健康檢查default-server inter 10s fall 2 rise 2server master119 192.167.14.119:6443 checkserver master223 192.167.14.223:6443 checkserver master226 192.167.14.226:6443 checklisten stats               # 監控頁面配置bind *:33305mode httpstats enablestats uri /monitorstats auth admin:HAProxy@2023
EOF

4.2 配置解析

配置項說明
balance roundrobin輪詢策略,均勻分配請求
inter 10s健康檢查間隔
fall 2連續失敗2次標記節點不可用
stats uri監控頁面路徑,用于實時查看狀態

五、服務管理與驗證

5.1 服務控制命令

# 啟動服務
systemctl start haproxy# 查看狀態
systemctl status haproxy# 檢查端口監聽
ss -lntp | grep 16443# 強制終止進程
killall -9 haproxy

5.2 監控頁面訪問

  • 訪問地址http://<節點IP>:33305/monitor
  • 認證信息:admin / HAProxy@2023

六、生產級優化方案

6.1 內核參數調優

# 增加文件描述符限制
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
sysctl -p

6.2 日志切割配置

# 安裝logrotate
cat > /etc/logrotate.d/haproxy <<EOF
/usr/local/haproxy/logs/*.log {dailyrotate 7missingoknotifemptycompressdelaycompresssharedscriptspostrotate/bin/kill -USR1 $(cat /usr/local/haproxy/logs/haproxy.pid 2>/dev/null) 2>/dev/null || trueendscript
}
EOF

七、高可用聯動Keepalived

7.1 VIP漂移驗證

# 查看當前VIP綁定
ip addr show | grep 192.167.14.205# 模擬主節點故障
systemctl stop haproxy
tail -f /var/log/messages  # 觀察切換日志

八、故障排查指南

現象排查命令解決方案
端口未監聽`netstat -lntpgrep haproxy`
健康檢查失敗telnet <后端IP> 6443驗證APIServer服務狀態
負載不均衡監控頁面查看后端節點狀態調整balance策略為leastconn
內存占用過高top -p $(pgrep haproxy)優化maxconn參數,增加系統內存

擴展閱讀:《HAProxy七層負載實戰》

如果本教程幫助您解決了問題,請點贊??收藏?支持!歡迎在評論區留言交流技術細節!欲了解密碼學知識,請訂閱《密碼學實戰》專欄 → 密碼學實戰

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

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

相關文章

Python網絡爬蟲設計(一)

目錄 一、網絡爬蟲 1、基本的爬蟲 2、獲取URL 3、查找網頁源碼關鍵字 4、代碼實現 二、requests庫 1、requests的優勢和劣勢 2、獲取網頁的其他庫 &#xff08;1&#xff09;selenium庫 &#xff08;2&#xff09;pyppeteer庫 三、pyppeteer庫 1、pyppeteer庫的來歷…

BR_頻譜20dB 帶寬(RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Bandwidth])

目錄 一、規范要求 1、協議章節 2、測試目的 二、測試方法 1、樣機初值條件&#xff1a; 2、測試步驟: 方法一&#xff1a;頻譜儀 方法二&#xff1a;綜測儀CMW500 3、預期結果 一、規范要求 1、協議章節 4.5.5 RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Ba…

【橘子大模型】初探rag知識庫的構建

一、簡介 我們在實現了一系列功能之后&#xff0c;終于來到了rag的部分&#xff0c;下面我們將基于langchain來實現一個rag檢索。 關于rag方面的知識&#xff0c;可以查看這兩篇文章&#xff1a; 大模型應用之RAG詳解 什么是 RAG&#xff08;檢索增強生成&#xff09; 或者是去…

CentOS7執行yum命令報錯 Could not retrieve mirrorlist http://mirrorlist.centos.org

CentOS7執行yum命令報錯 引更新yum源備份原有源創建新的源文件清理并重建緩存 引 CentOS 7 系統無法連接到 CentOS 的官方鏡像站點。這通常是由于網絡問題或 CentOS 7 已停止維護導致的&#xff08;2024年6月30日后 CentOS 7 已進入 EOL&#xff09; 報錯明細&#xff1a; 已…

VSCode安裝與環境配置(Mac環境)

20250419 - 概述 大概是非常久之前了&#xff0c;裝了VSCode&#xff0c;估計都得21的時候了&#xff0c;電腦上也沒更新過。當時安裝也直接裝上就完事了。這次把版本更新一下&#xff0c;同時記錄一下這個安裝過程。 安裝 mac下安裝非常簡單&#xff0c;直接從官網下載&am…

QML動畫--ParallelAnimation和SequentialAnimation

一、ParallelAnimation ParallelAnimation 是 QML 中用于并行執行多個動畫的容器動畫類型&#xff0c;可以同時運行多個子動畫。 基本用法 qml import QtQuick 2.15Rectangle {id: rectwidth: 100; height: 100color: "red"x: 0; y: 0; opacity: 1.0ParallelAnim…

NLP高頻面試題(四十三)——什么是人類偏好對齊中的「對齊稅」(Alignment Tax)?如何緩解?

一、什么是「對齊稅」(Alignment Tax)? 所謂「對齊稅」(Alignment Tax),指的是在使人工智能系統符合人類偏好的過程中,所不可避免付出的性能損失或代價。換句話說,當我們迫使AI遵循人類價值觀和規范時,AI系統往往無法達到其最大理論性能。這種性能上的妥協和折衷,就…

速查手冊:TA-Lib 超過150種量化技術指標計算全解 - 1. Overlap Studies(重疊指標)

速查手冊&#xff1a;TA-Lib 超過150種量化技術指標計算全解 - 1. Overlap Studies&#xff08;重疊指標&#xff09; TA-Lib&#xff08;Technical Analysis Library&#xff09;是廣泛使用的金融技術分析庫&#xff0c;實現了超過150種技術指標計算函數&#xff0c;適用于股票…

重構未來智能:Anthropic 解碼Agent設計哲學三重奏

第一章 智能體進化論&#xff1a;從工具到自主體的認知躍遷 1.1 LLM應用范式演進圖譜 階段技術形態應用特征代表場景初級階段單功能模型硬編碼規則執行文本摘要/分類進階階段工作流編排多模型協同調度跨語言翻譯流水線高級階段自主智能體動態決策交互編程調試/客服對話 1.1.…

Git 中修改某個特定的commit提交內容

在 Git 中修改某個特定的提交&#xff08;commit&#xff09;通常需要使用 交互式變基&#xff08;Interactive Rebase&#xff09; 或 修改提交&#xff08;Commit Amend&#xff09;。以下是不同場景下的具體操作步驟&#xff1a; 一、修改最近的提交&#xff08;最新提交&am…

ZLMediaKit流媒體服務器

ZLMediaKit 簡介 ZLMediaKit 是一個基于 C11 開發的高性能流媒體服務器框架&#xff0c;支持 RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、HTTP-TS、WebSocket-TS、HTTP-fMP4、WebSocket-fMP4 等多種流媒體協議。 主要特性 多協議支持&#xff1a; 支持 RTSP/RTMP/HLS/HTTP-F…

數字電子技術基礎(五十)——硬件描述語言簡介

目錄 1 硬件描述語言簡介 1.1 硬件描述語言簡介 1.2 硬件編程語言的發展歷史 1.3 兩種硬件描述的比較 1.4 硬件描述語言的應用場景 1.5 基本程序結構 1.5.1 基本程序結構 1.5.2 基本語句和描述方法 1.5.3 仿真 1 硬件描述語言簡介 1.1 硬件描述語言簡介 硬件描述語…

SQL系列:常用函數

1、【MySQL】合并字段函數&#xff08;列轉行&#xff09; 它可以將兩個字段中的數據合并到一個字段中。 1&#xff09;CONCAT函數 CONCAT函數可以將多個字段中的數據合并到一個字段中。它的語法格式如下&#xff1a; SELECT CONCAT(字段1,字段2,...字段N) FROM 表名;SELEC…

多線程和線程同步

多線程在項目開發中使用頻率高,使用多線程能夠提高程序的并發性 提高程序的并發性:1.多線程,對系統資源的消耗更小一些 2.多進程 系統的cpu資源有線,cpu時間片被分好后,由系統進行調度,每個線程在執行的時候都需要搶這個cpu的時間片。如果搶到了,就執行,如果沒搶到,…

時序數據預測:TDengine 與機器學習框架的結合(一)

一、引言 在當今數字化時代&#xff0c;時序數據如潮水般涌來&#xff0c;廣泛存在于物聯網、工業監控、金融交易、氣象監測等眾多領域。這些按時間順序記錄的數據蘊含著豐富的信息&#xff0c;對其進行準確預測&#xff0c;能夠為企業和組織的決策提供有力支持&#xff0c;帶…

elementUI中MessageBox.confirm()默認不聚焦問題處理

在項目中使用elementUI的MessageBox.confirm()出現了默認不聚焦的問題&#xff0c;默認確認按鈕是淺色的&#xff0c;需要點擊一下才會變成正常。面對這種問題&#xff0c;創建新組件&#xff0c;實現聚焦。替換默認的MessageBox.confirm() 解決 創建components/MessageBoxCo…

yarn的定義

YARN 即 Yet Another Resource Negotiator&#xff0c;它是 Apache Hadoop 2.x 及后續版本中的集群資源管理系統&#xff0c;也是 Hadoop 生態系統的核心組件之一。 YARN 的誕生是為了解決 Hadoop 1.x 中 MapReduce 框架將資源管理和作業調度任務耦合在一起所帶來的可擴展性差等…

http、https、TLS、證書原理理解,對稱加密到非對稱加密問題,以及對應的大致流程

http 超文本傳輸協議 存在問題&#xff1a; 安全性、隱私性、數據完整性 易被中間人&#xff08;黑客之類的&#xff09;對數據進行劫持、篡改、隱私泄露 引出了 https &#xff08;source&#xff09; http 在網絡模型中的應用層 Application > transport > inter…

深度補全網絡:如CSPN++填補稀疏點云的深度信息

深度補全網絡&#xff1a;CSPN填補稀疏點云的深度信息 深度補全(Depth Completion)是計算機視覺中的一個重要任務&#xff0c;旨在從稀疏的深度測量中恢復密集的深度圖。CSPN(Convolutional Spatial Propagation Network)是這一領域的前沿方法之一。 CSPN概述 CSPN是對原始CSPN…

QT網絡拓撲圖繪制實驗

前言 在網絡通訊中&#xff0c;我qt常用的是TCP或者UDP協議&#xff0c;就比方說TCP吧&#xff0c;一臺服務器有時可能會和多臺客戶端相連接&#xff0c;我之前都是處理單鏈接情況&#xff0c;最近研究圖結構的時候&#xff0c;突然就想到了這個問題。那么如何解決這個問題呢&…