跳過到頁腳內容
使用 IRONSECUREDOC

Haproxy Docker Compose(對開發人員而言如何運作)

[負載平衡器](https://en.wikipedia.org/wiki/Load_balancing_(computing)是現代 IT 基礎架構的重要組成部分,旨在將網路流量有效地分配到多個伺服器或資源。 這樣可以防止單一伺服器過載,從而提高系統的可擴展性和效能。 負載平衡器位於用戶端和後端伺服器之間,可在充分利用可用資源的同時,最大限度地縮短回應時間。

負載平衡器執行這些基本任務,包括容錯、流量分配和會話持久性。 負載平衡器可以是主軟體程式、實體產品,也可以是由 AWS 或 Azure 提供的雲端服務。 一些最常用的流量分配演算法是輪詢演算法、最少連接演算法和 IP 雜湊演算法。

什麼是 HAProxy Docker?

HAProxy Docker指的是將 HAProxy 負載平衡器放置在 Docker 容器中。 HAProxy 的強大流量管理功能現在可以與 Docker 的靈活性和可攜性結合。 HAProxy 是一款流行的、廣泛使用的開源負載平衡器,適用於 Web 應用程式和微服務環境,提供高可用性和反向代理功能。 在 Docker 容器主機上執行 HAProxy 的優勢包括易於部署、隔離、可擴充性和平台獨立性。 HAProxy Docker 可以有效地將流量分配到多個後端服務,監控容器的運作狀況,並根據容器的可用性動態調整路由。

它支援 SSL/TLS 終止、會話持久性以及多種負載平衡演算法等功能,包括輪詢和最少連接數。 這使得 HAProxy Docker 成為管理容器化流量的絕佳方式,因為它甚至可以與 Kubernetes 或 Docker Swarm 等編排工具很好地集成,從而提供動態擴展和自動服務發現。 這確保了現代應用程式擁有強大、高效能和安全的流量管理,而不會出現任何文件問題。

HAProxy Docker 的特性

負載平衡

HAProxy 擅長將網路流量負載分散到多個後端伺服器。 其多種負載平衡演算法包括輪詢、最少連接數和 IP 哈希,以便客戶可以根據其應用程式的特殊需求調整流量。 這使得 HAProxy 能夠接受第 4 層 (TCP) 和第 7 層 (HTTP/HTTPS) 支援的架構上的流量,使其效能從簡單的 TCP 路由應用程式到複雜的應用層負載平衡都能勝任。

高可用性

高可用性是其核心特性,意味著保持服務始終暢通無阻。 由於後端伺服器的健康狀況,HAProxy 會將流量從被證明不健康或故障的伺服器轉移出去。 故障轉移可以防止伺服器當機或發生意外故障時出現過長的停機時間。

SSL/TLS 支持

HAProxy 完全支援 SSL/TLS,確保客戶端與伺服器之間的安全通訊。 此外,HAProxy 可以終止 SSL/TLS 連接,將加密和解密任務從後端伺服器卸載,從而提高前者的效能。 如果需要端對端加密,HAProxy 可以將加密流量轉送到其背後的服務。

反向代理

HAProxy 是最好的反向代理之一,可以將所有客戶端請求流量傳送到後端的相關服務。它支援修改請求頭、URL 重定向,甚至可以根據特定使用者條件設定一些特殊的路由規則等功能。 因此,HAProxy 可以與微服務一起被視為多服務架構的可行候選方案之一。

安全增強

HAProxy 具備豐富的安全功能,例如速率限制、DDoS 防護和 ACL。 這些都用於過濾傳入流量,這意味著原本可能到達後端伺服器的惡意請求將被阻止,從而保持應用程式的穩定運作。

可擴展性

HAProxy 具有高度可擴充性。 它可以輕鬆支援數百萬個並發連接,而不會產生延遲,並且可以擴展而不會出現延遲問題。 該環境支援 Kubernetes 和 Docker Swarm 等容器編排環境,其容器化工作負載提供了動態擴展和服務發現的優勢。

日誌記錄和監控

HAProxy 具有細粒度的日誌記錄功能,可協助理解流程、排除故障和分析效能。 它可與 Prometheus 的監控工具 Grafana 和 Datadog 等無縫互通,顯示有關伺服器健康狀況、網路流量和資源利用率的即時數據。

HAProxy 支援靈活便捷的配置。

HAProxy 提供了非常靈活且強大的配置功能。 利用此功能,使用者可以定義相當複雜的路由規則,例如根據標頭或 cookie 進行條件路由。 HAProxy 支援 URL 重寫和會話持久性,甚至支援多租用戶,即一個 HAProxy 執行個體可以為多個網域或應用程式提供服務。

使用 Docker 安裝 HAProxy

使用 Docker 安裝和運行 HAProxy 是一個相當簡單的過程。 以下是逐一採取的步驟。

Docker 安裝

請確保您的系統已安裝 Docker。 若要驗證安裝是否成功,您可以執行以下命令:

docker --version
docker --version
SHELL

如果系統上沒有安裝 Docker,請訪問此處的Docker 鏈接,從官方網站下載並安裝它。

拉取 HAProxy Docker 映像

從 Docker Hub 拉取官方 HAProxy 映像。 以下命令將下載最新的穩定版本:

docker pull haproxy:latest
docker pull haproxy:latest
SHELL

建立 HAProxy 設定文件

HAProxy 需要一個設定檔來定義其行為。 建立一個名為haproxy.cfg的文件,內容如下:

global
    log stdout format raw local0
defaults
    log     global
    mode    http
    timeout connect 5s
    timeout client  50s
    timeout server  50s
frontend http_front
    bind *:80
    default_backend http_back
backend http_back
    server app1 host.docker.internal:32769 check

此 HAProxy 配置定義了:

-前端:監聽埠 80 並將流量路由到後端。 -後端:指向託管在host.docker.internal:32769 app1

運行 HAProxy Docker 容器

運行 HAProxy Docker 容器,掛載設定檔並暴露必要的連接埠:

docker run -d --network haproxy --name haproxy-container -p 80:80 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
docker run -d --network haproxy --name haproxy-container -p 80:80 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
SHELL

-d :以分離模式運作容器。

  • --name haproxy-container : 為容器命名。 -p 80:80 :將主機上的連接埠 80 對應到容器中的連接埠 80。 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro : 將本機設定檔掛載到容器中。

訪問 HAProxy

開啟網頁瀏覽器,造訪http://localhost:80或伺服器的 IP 位址,測試流量路由。

IronSecureDoc是什麼?

IronSecureDoc是一款文件管理和安全實用程序,它依靠強大的加密、高級 PDF 處理和數位簽章。 它為公司和開發人員提供文件保密性和完整性,並可實現流暢訪問,從而簡化 PDF 文件的處理,而無需直接或間接依賴關係。

此外,IronPDF 是一個 PDF API,它可以透過任何資料輸入來建立 PDF,並使用文字、圖像和元資料等參數添加或編輯內容。 這包括合併多個 PDF 文件、分割文件以及添加註釋、高亮顯示或浮水印等功能。

它提供密碼保護、AES 加密和基於憑證的存取控制,以保護您的所有敏感資訊和資料。 此外,它還支援數位簽名,可以驗證您的文件並確保不可否認性——這在金融、醫療和法律行業中是一項非常重要的功能。 其審計追蹤功能可以監控對文件執行的所有活動,以確保合規性和問責制。

安裝並執行 IronSecureDoc

在命令提示字元或開啟的終端機視窗中使用以下命令拉取 IronSecureDoc 的 Docker 映像:

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
SHELL

運行 IronSecureDoc 容器:

docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
SHELL

此指令啟動 IronSecureDoc 的容器實例。 您現在可以存取連接埠http://localhost:8080/swagger/index.html上的 IronSecureDoc。

將 IronSecureDoc 與 HAProxy 集成

準備一個haproxy.cfg檔案來定義前端和後端設定。 以下是一個簡單的設定範例:

global
    log stdout format raw local0
defaults
    log     global
    mode    http
    option  httplog
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
frontend http_front
    bind *:4500
    acl body_has_data req.hdr_val(Content-Length) gt 0
    http-request set-method POST if METH_GET body_has_data
    use_backend ironsecuredoc if { path /ironsecuredoc } || { path_beg /ironsecuredoc/ }
    use_backend ironsecuredoc_ping if { path /ping } || { path_beg /ping/ }
    use_backend ironsecuredoc_encrypt if { path /encrypt } || { path_beg /encrypt/ }
backend ironsecuredoc
    balance roundrobin
    http-request set-path /swagger/index.html
    server ironsecuredoc_server host.docker.internal:8080 check
backend ironsecuredoc_encrypt
    balance roundrobin
    http-request set-path /v1/document-services/pdfs/encrypt
    server ironsecuredoc_server host.docker.internal:8080 check
backend ironsecuredoc_ping
    balance roundrobin
    http-request set-path /v1/document-services/ping
    server ironsecuredoc_server host.docker.internal:8080 check

此 HAProxy 配置處理多個 IronSecureDoc 服務的 HTTP 流量。 它定義了全域原始日誌輸出,並設定了具有詳細日誌記錄的預設 HTTP 模式。 前端監聽 4500 端口,並根據路徑路由請求。 acl body_has_data檢查是否存在數據,並在需要時將 GET 請求轉換為 POST 請求。 後端採用輪詢演算法進行負載平衡,透過健康檢查確保請求得到適當轉發,從而保證伺服器可用性。

使用 cURL 發送簡單的加密請求:

curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
SHELL

此向IronSecureDoc API發出的請求會對 PDF 文件套用使用者密碼加密,輸出檔案將會安全地傳送和下載。

結論

HAProxy 與 IronSecureDoc 軟體的整合確保了可靠且可擴展的解決方案,用於管理文件安全服務,並優化了流量路由和負載平衡。 HAProxy 能夠有效率地將流量分配到 IronSecureDoc 的多個實例上,透過健康檢查和自訂路由規則確保高可用性。

這種配置可以靈活處理複雜的工作流程,例如加密和健康監控。 HAProxy 和 IronSecureDoc 在容器化環境中相互補充,增強了部署的彈性和效能。

透過 IronSecureDoc REST API,開發人員可以將安全文件處理和有效的 PDF 管理無縫整合到他們的 Web、行動和企業應用程式中。 有關 IronSecureDoc 許可的更多信息,請訪問許可頁面。 要了解更多關於 Iron Software 產品的信息,請訪問庫套件頁面

常見問題解答

如何使用 Docker Compose 部署 HAProxy?

若要使用 Docker Compose 部署 HAProxy,您需要建立一個 docker-compose.yml 檔案,指定 HAProxy 服務與必要的設定。此設定可讓您與其他服務一起管理 HAProxy,確保無縫的流量管理和高可用性。

在微服務中使用 HAProxy 與 Docker 有哪些優點?

將 HAProxy 與 Docker 搭配使用於微服務時,您可以從動態擴充、自動服務發現和有效流量分配中獲益。HAProxy 支援 SSL/TLS 終止和各種負載平衡演算法,可增強微服務架構的安全性和效能。

如何在 Docker 中為 SSL/TLS 終止配置 HAProxy?

透過在 HAProxy 配置檔案中設定適當的 frontendbackend 配置,即可將 HAProxy 設定為 SSL/TLS 終止。這可從您的後端伺服器卸下加密任務,優化效能與安全性。

HAProxy 在加強容器化環境的安全性上扮演什麼角色?

HAProxy 透過 DDoS 保護、速率限制和存取控制清單 (ACL) 等功能增強容器化環境的安全性。這些安全措施可防止惡意流量到達您的後端服務,確保安全的應用程式部署。

開發人員如何使用 IronSecureDoc 在應用程式中整合文件安全功能?

開發人員可以利用 IronSecureDoc 的 REST API 來整合文件安全功能。這可在應用程式中無縫實施文件加密、PDF 操作和數位簽章,強化文件管理和安全性。

HAProxy 如何促進與 Kubernetes 等協調工具的整合?

HAProxy 支援動態擴充和自動服務發現,有助於與 Kubernetes 等協調工具整合。這可確保容器化部署中的有效流量管理和高可用性,優化資源利用率和系統彈性。

HAProxy 支援高可用性的主要功能是什麼?

HAProxy 透過健康檢查、故障移轉機制和會話持久性等功能支援高可用性。這些功能可確保流量從故障伺服器重新導向,將停機時間降至最短,並維持服務的持續運作。

將 HAProxy 與 IronSecureDoc 整合進行文件管理的流程為何?

將 HAProxy 與 IronSecureDoc 整合以進行文件管理,包括設定 HAProxy 以有效地將流量路由至 IronSecureDoc 服務。此設定可在容器化環境中,利用最佳化的流量路由和負載平衡,強化文件安全性。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。