負載均衡LB》》HAproxy

Ubuntu 22.04 安裝HA-proxy

官網
資料

# 更新系統包列表:
sudo apt update
# 安裝 HAproxy
sudo apt install haproxy -y
# 驗證安裝
haproxy -v   #  如下圖

在這里插入圖片描述

配置 Haproxy

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

##### 基于IP的訪問控制
acl ctrl_ip src 172.25.254.1  172.25.254.20  192.168.0.0/24 # 這里可以寫具體的IP地址也可以寫網段#####  拒絕IP訪問acl ctrl_ip src 172.25.254.1  172.25.254.20  192.168.0.0/24http-request deny if ctrl_ip## # 基于瀏覽器類型的訪問控制
acl badwebbrowers hdr_sub(User-Agent) -i curl wget
http-request deny if badwebbrowers##基于后綴名實現動靜分離acl static path_end -i .html .jpg .png .css .js  # 靜態 acl php    path_end -i .php  # 動態use_backend webcluster-host if php use_backend webxx-host if static 

在這里插入圖片描述

路徑:

vim /etc/haproxy/haproxy.cfg

# 全局配置
globallog /dev/log local0 info         # 日志輸出到syslog,定義日志輸出方式,支持 local0-local7 級別info maxconn 4096                     # 每個進程最大連接數 user haproxy                     # 運行用戶group haproxy                    # 運行組daemon                           # 以守護進程方式運行 nbproc 1                         # 進程數(建議單進程,多核可調整)stats socket /run/haproxy/admin.sock mode 660 level admin  # 管理接口 tune.ssl.default-dh-param 2048    # SSL默認DH參數 ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256  # 加密套件 
# 默認配置
defaultsmode http                        # 默認模式(http/tcp/health)http是7層   tcp 4層  設置默認工作類型,使用TCP更好,減少壓力option httplog                   # 記錄HTTP日志 option dontlognull               # 不記錄空連接(如健康檢查)# IP 穿透option forwardfor                # 添加X-Forwarded-For頭 透傳客戶端RIP至后端web服務器option redispatch                # 服務不可用后的操作,重定向到其它健康的服務器option abortonclose              # 當服務器負載很高時,自動結束掉當前隊列處理比較久的連接,針對業務情況選擇開啟option http-keep-alive           # 開啟與客戶端的會話保持option http-server-close           # 服務端關閉連接,客戶端保持長連接 option http-pretend-keepalive      # 偽裝長連接(解決某些服務器兼容性問題)option forceclose                  # 強制關閉連接(兼容性差時使用) 確保連接立即釋放,但增加開銷timeout connect 10s              # 連接后端超時 timeout client 30s               # 客戶端超時 timeout server 30s               # 服務器響應超時 retries 3                        # 失敗重試次數 stats uri   /haproxystats auth 用戶名:  密碼
# 前端配置
frontend http_in# 監聽80端口bind *:80                       # HTTPS配置 bind *:443 ssl crt /etc/haproxy/certs/example.com.pem log: global# httplog   日志模板options: httplog# ACL規則:路徑匹配   ACL(Access Control List)# hdr(host):匹配域名# path_beg:匹配URL路徑前綴 acl is_static path_beg -i /static  use_backend static_servers if is_static  # 根據ACL選擇后端 default_backend dynamic_servers  # 默認后端http-request set-header X-Real-IP %[src]  # 設置真實IP頭 
# 后端配置
backend dynamic_servers# 模式mode http# 輪詢算法(默認)balance roundrobin     # 會話保持(基于Cookie)        cookie SERVERID insert indirect nocache  # 健康檢查與最大連接 #》》》》》》》》》真實的服務器,真正提供服務的 # server 名稱  域名|IP:Port   server s1 192.168.1.10:80 check maxconn 100  weight 1 # 備用服務器 當上面一個不工作,這個才頂上server s2 192.168.1.11:80 check backup    backend static_serversbalance leastconn   # 最小連接數算法 server static1 192.168.1.20:80 check
# 健康檢查
backend app_serversoption httpchk GET /health      # HTTP健康檢查 # inter:檢查間隔 每隔5秒發送檢查請求,連續2次成功標記為健康,3次失敗標記為故障。??server app1 192.168.1.30:8080 check inter 5s rise 2 fall 3# 監控界面
listen statsbind *:8404                    # 監控端口stats enablestats uri /haproxy_stats       # 訪問路徑stats auth admin:password      # 認證 stats hide-version             # 隱藏版本信息 

》》》配置完之后 重啟 Haproxy

sudo systemctl restart haproxy
補充幾個常用命令
sudo systemctl enable haproxy 開機啟動
sudo systemctl status haproxy 查看狀態
sudo systemctl stop haproxy 停止
sudo systemctl start haproxy 開啟
sudo systemctl reload haproxy 修改配置之后 可以重新加載

# docker-compose.yml
# docker compose up -d
services:tomcat1:image: tomcat:latestcontainer_name: tomcat1ports:- 8081:8080tomcate2:image: tomcat:latestcontainer_name: tomcat2ports:- 8082:8080

》》》檢測8081、8082 直接訪問 正常
在這里插入圖片描述
在這里插入圖片描述

通過Haproxy 負載均衡

globallog /dev/log	local0log /dev/log	local1 noticechroot /var/lib/haproxystats socket /run/haproxy/admin.sock mode 660 level adminstats timeout 30suser haproxygroup haproxydaemon# Default SSL material locationsca-base /etc/ssl/certscrt-base /etc/ssl/private# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediatessl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-ticketsdefaultslog	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.http
# 監控界面配置
listen statsbind *:8404stats enablestats uri /statsstats refresh 10sstats auth admin:password  # 替換為你的用戶名和密碼stats admin if TRUE# 前端HTTP配置
frontend http_frontbind *:80acl is_http url_reg \.jsp$use_backend http_servers if is_httpdefault_backend http_servers# 后端服務器配置
backend http_serversbalance roundrobincookie SERVERID insert indirect nocacheserver server1 172.30.xxx.XX :8081 check cookie server1server server2 172.30.XX.XX:8082 check cookie server2

在這里插入圖片描述
在這里插入圖片描述

監控界面

在這里插入圖片描述

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

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

相關文章

輕創業技術方案:基于格行雙目攝像頭的代理系統設計!低成本創業項目有哪些?2025輕資產創業項目排行榜前十名!0成本創業項目推薦!格行代理項目靠譜嗎?

沒本金,沒資源,沒人脈,想掙錢且有持續穩定的現金流,只有一條路就是輕創業!這里說個表哥的真實創業故事。 我表哥90后,普通農村人,中專畢業跟朋友一起外出打工,剛開始也是吃喝玩樂不…

【推薦算法】Embedding+MLP:TensorFlow實現經典深度學習推薦模型詳解

EmbeddingMLP:TensorFlow實現經典深度學習模型詳解 1. 算法邏輯模型結構和工作流程關鍵組件 2. 算法原理與數學推導Embedding層原理MLP前向傳播反向傳播與優化 3. 模型評估常用評估指標評估方法 4. 應用案例:推薦系統CTR預測問題描述模型架構性能優化 5.…

黑馬點評【基于redis實現共享session登錄】

目錄 一、基于Session實現登錄流程 1.發送驗證碼: 2.短信驗證碼登錄、注冊: 3.校驗登錄狀態: 4.session共享問題 4.1為什么會出現 Session 集群共享問題? 4.2常見解決方案 1. 基于 Cookie 的 Session(客戶端存儲&#xff0…

Python讀取阿里法拍網的html+解決登錄cookie

效果圖 import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from lxml import etreedef get_taobao_auct…

【win | docker開啟遠程配置】使用 SSH 隧道訪問 Docker的前操作

在主機A pycharm如何連接遠程主機B win docker? 需要win docker配置什么? 快捷配置-主機B win OpenSSH SSH Server https://blog.csdn.net/z164470/article/details/121683333 winR,打開命令行,輸入net start sshd,啟動SSH。 或者右擊我的電腦&#…

Cursor生成Java的架構設計圖

文章目錄 整體說明一、背景二、前置條件三、生成 Promt四、結果查看五、結果編輯 摘要: Cursor生成Java的架構設計圖 關鍵詞: Cursor、人工智能 、開發工具、Java 架構設計圖 整體說明 Cursor 作為現在非常好用的開發工具,非常的火爆&#…

1Panel運行的.net程序無法讀取系統字體(因為使用了docker)

問題來源 我之前都是使用的寶塔面板,之前我也部署過我的程序,就沒有什么問題,但是上次我部署我的程序的時候,就提示無法找到字體Arial。 我的程序中使用該字體生成驗證碼。 我多次安裝了微軟的字體包,但是依舊沒有效…

面試總結。

一、回流(重排)與重繪(Repaint) 優化回答: 概念區分: 回流(Reflow/Relayout):當元素的幾何屬性(如寬高、位置、隱藏 / 顯示)發生改變時&#xff…

TensorFlow深度學習實戰(20)——自組織映射詳解

TensorFlow深度學習實戰(20)——自組織映射詳解 0. 前言1. 自組織映射原理2. 自組織映射的優缺點3. 使用自組織映射實現顏色映射小結系列鏈接 0. 前言 自組織映射 (Self-Organizing Map, SOM) 是一種無監督學習算法,主要用于高維數據的降維、…

Go內存泄漏排查與修復最佳實踐

一、引言 即使Go語言擁有強大的垃圾回收機制,內存泄漏仍然是我們在生產環境中經常面臨的挑戰。與傳統印象不同,垃圾回收并不是萬能的"記憶清道夫",它只能處理那些不再被引用的內存,而無法識別那些仍被引用但實際上不再…

LeetCode刷題 -- 542. 01矩陣 基于 DFS 更新優化的多源最短路徑實現

LeetCode刷題 – 542. 01矩陣 基于 DFS 更新優化的多源最短路徑實現 題目描述簡述 給定一個 m x n 的二進制矩陣 mat,其中: 每個元素為 0 或 1返回一個同樣大小的矩陣 ans,其中 ans[i][j] 表示 mat[i][j] 到最近 0 的最短曼哈頓距離 算法思…

MySQL用戶遠程訪問權限設置

mysql相關指令 一. MySQL給用戶添加遠程訪問權限1. 創建或者修改用戶權限方法一:創建用戶并授予遠程訪問權限方法二:修改現有用戶的訪問限制方法三:授予特定數據庫的特定權限 2. 修改 MySQL 配置文件3. 安全最佳實踐4. 測試遠程連接5. 撤銷權…

如何使用 BPF 分析 Linux 內存泄漏,Linux 性能調優之 BPF 分析內核態、用戶態內存泄漏

寫在前面 博文內容為 通過 BCC 工具集 memleak 進行內存泄漏分析的簡單認知包括 memleak 腳本簡單認知,內核態(內核模塊)、用戶態(Java,Python,C)內存跟蹤泄漏分析 Demo理解不足小伙伴幫忙指正 ??,生活加油知其不可奈何而安之若命,德之至也。----《莊子內篇人間世》 …

谷歌Sign Gemma: AI手語翻譯,溝通從此無界!

嘿,朋友們!想象一下,語言不再是交流的障礙,每個人都能順暢表達與理解。這聽起來是不是很酷?谷歌最新發布的Sign Gemma AI模型,正朝著這個激動人心的未來邁出了一大步!它就像一位隨身的、不知疲倦…

全生命周期的智慧城市管理

前言 全生命周期的智慧城市管理。未來,城市將在 實現從基礎設施建設、日常運營到數據管理的 全生命周期統籌。這將避免過去智慧城市建設 中出現的“碎片化”問題,實現資源的高效配 置和項目的協調發展。城市管理者將運用先進 的信息技術,如物…

最新Spring Security實戰教程(十七)企業級安全方案設計 - 多因素認證(MFA)實現

🌷 古之立大事者,不惟有超世之才,亦必有堅忍不拔之志 🎐 個人CSND主頁——Micro麥可樂的博客 🐥《Docker實操教程》專欄以最新的Centos版本為基礎進行Docker實操教程,入門到實戰 🌺《RabbitMQ》…

logstash拉取redisStream的流數據,并存儲ES

先說結論, window驗證logstash截至2025-06-06 是沒有原生支持的。 為啥考慮用redisStream呢?因為不想引入三方的kafka等組件, 讓服務部署輕量化, 所以使用現有的redis來實現, 為啥不用list呢? 已經用strea…

IEC 61347-1:2015 燈控制裝置安全通用要求詳解

IEC 61347-1:2015 燈控制裝置安全通用要求詳解 IEC 61347-1:2015《燈控制裝置 第1部分:一般要求和安全要求》是國際電工委員會(IEC)制定的關于燈控制裝置安全性能的核心基礎標準。它為各類用于啟動和穩定工作電流的燈控制裝置(如…

26、跳表

在C標準庫中,std::map 和 std::set 是使用紅黑樹作為底層數據結構的容器。 紅黑樹是一種自平衡二叉搜索樹,能夠保證插入、刪除和查找操作的時間復雜度為O(log n)。 以下是一些使用紅黑樹的C標準庫容器: std::map:一種關聯容器&a…

LabVIEW音頻測試分析

LabVIEW通過讀取指定WAV 文件,實現對音頻信號的播放、多維度測量分析功能,為音頻設備研發、聲學研究及質量檢測提供專業工具支持。 主要功能 文件讀取與播放:支持持續讀取示例數據文件夾內的 WAV 文件,可實時播放音頻以監聽被測信…