docker-compose建立haproxy教程

初夏的阳光丶發表於2024-07-09

本文主要講解透過docker-compose建立haproxy並進行代理

一、haproxy簡介
  1. HAProxy是一款基於事件驅動、單程序模型設計的四層與七層負載均衡器,它能夠在TCP/UDP層面以及HTTP(S)等應用層協議上實現高效的流量分發。HAProxy不僅適用於Web伺服器負載均衡,還能應用於資料庫、郵件伺服器、快取伺服器等多種場景,支援高達數百萬級別的併發連線,並具有極低的延遲
  2. 主要特性
    1. 高效能負載均衡
    2. 健康檢查與故障恢復
    3. 會話保持與親和性
    4. 安全性與SSL解除安裝
    5. 高階路由與策略
    6. 日誌記錄與監控
  3. 優點
    1. 高效能:HAProxy是一個高效能的負載均衡器,可以處理大量的併發連線
    2. 靈活性:HAProxy支援多種負載均衡演算法,如輪詢、加權輪詢、最少連線等,可以根據實際需求選擇合適的演算法
    3. 高可用性:HAProxy可以檢測伺服器的健康狀態,如果某個伺服器出現故障,它可以自動將流量轉移到其他健康
    4. 安全性:HAProxy可以作為反向代理,隱藏後端伺服器的真實IP地址,提高系統的安全性。
  4. 缺點
    1. 單點故障:如果HAProxy本身出現故障,可能會導致整個系統的服務不可用
    2. 配置複雜:HAProxy的配置相對複雜,需要一定的學習成本
    3. 效能瓶頸:雖然HAProxy的效能很高,但在處理大量併發連線時,可能會成為系統的效能瓶頸
    4. 功能單一:只支援做負載均衡的排程伺服器,不支援正則處理,不能實現動靜分離,也不能做web伺服器
二、docker-compose安裝

下載docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

賦予執行許可權

sudo chmod +x /usr/local/bin/docker-compose

驗證安裝

docker-compose --version
三、編寫yml檔案
version: '3'
services:
  haproxy:
    image: haproxy  # 可以使用為本地映象的名稱或路徑,
    container_name: my-haproxy
    volumes:
      - /project/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg # /project/haproxy/haproxy.cfg為我存放配置檔案的地址
    ports:
      - "6380:6380" # 需要從容器內對映到宿主機的物件,這個地址是經過haproxy已經轉發過的地址,不是初始地址, 這裡的埠
    restart: always

四、編寫配置檔案haproxy.cfg
global
    maxconn 65535  # 最大併發連線數
    stats socket /var/run/haproxy.stat mode 600 level admin  # HAProxy 統計資訊的套接字
    log 127.0.0.1 local0  # 日誌伺服器
    uid 200  # HAProxy 程序的使用者 ID
    gid 200  # HAProxy 程序的組 ID
    # chroot /var/empty  # 取消註釋以啟用 chroot 以增加安全性
    daemon  # 以守護程序方式執行 HAProxy

defaults
    mode http  # 預設模式設定為 HTTP
    log global  # 使用全域性日誌配置
    option httplog  # 啟用詳細的 HTTP 日誌記錄
    option dontlognull  # 不記錄沒有資料的連線
    monitor-uri /monitoruri  # HAProxy 監控的 URI
    maxconn 8000  # 每個後端的最大併發連線數
    timeout client 30s  # 客戶端超時時間
    retries 2  # 連線失敗時的重試次數
    option redispatch  # 啟用會話重新分配
    timeout connect 5s  # 建立到後端的連線的超時時間
    timeout server 5s  # 伺服器響應超時時間
    stats uri /status  # 訪問 HAProxy 統計資訊的 URI

frontend custom_frontend
    mode tcp  
    # 轉發請求的地址以及請求從 HAProxy 出去的埠
    bind *:6380  # 繫結前端到所有介面的 6380 埠 這裡的埠
    default_backend custom_servers  # 此前端使用的預設後端

backend custom_servers
    mode tcp  
    # 伺服器的內部地址(將 10.10.11.11:30028 替換為所需的地址)
    server custom1 10.10.11.11:30028 maxconn 1000  最大連線數為 1000    
五、 最後

最後我們則直接透過docker-compose啟動命令執行docker-compose.yml檔案則可以執行容器,在配置的過程中我們需要注意的是在haproxy繫結的埠是我們在docker-compose中暴露的埠,大家不要配置錯誤

haproxy官方地址:https://www.haproxy.com/

如有哪裡講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧🙂

相關文章