国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何優雅的在 Docker 中運行高性能負載均衡器 HAProxy

系統 Linux
在這篇博文中,您將了解為什么要考慮在容器內運行 HAProxy 以及可能產生的后果。然后你會看到如何去做。

 

您可以將 HAProxy 作為 Docker 容器運行嗎?是的!這還需要問嗎?如今 Docker 無處不在,您會發現許多應用程序都已被 Docker 化;HAProxy 負載均衡器也不例外,但 HAProxy 就是為此而生的。作為在 Linux 上運行的獨立服務,將其移植到 Docker 似乎很自然。

為什么要在 Docker 容器內運行負載均衡器?這樣做性能會有折扣么?它會引入任何安全問題嗎?

在這篇博文中,您將了解為什么要考慮在容器內運行 HAProxy 以及可能產生的后果。然后你會看到如何去做。請注意,我們介紹的是如何運行 HAProxy,而不是 HAProxy Kubernetes Ingress Controller。

HAProxy Technologies 在其命名空間 haproxytech 下構建自己的一組 Docker 鏡像。這些會定期更新最新的補丁和安全更新。我將在這篇博文中使用這些鏡像。你會在這里找到它們:

  •  HAProxy(Alpine Linux 基礎)- https://hub.docker.com/r/haproxytech/haproxy-alpine
  •  HAProxy (Ubuntu 基礎) – https://hub.docker.com/r/haproxytech/haproxy-ubuntu
  •  HAProxy (Debian 基礎) – https://hub.docker.com/r/haproxytech/haproxy-debian

我演示的命令是在 Linux 工作站上執行的,如果您在使用 Docker Desktop for Windows 或 Docker Desktop for Mac 時也能正常工作。

1使用 Docker 的好處

您是否希望能夠運行 HAProxy 而無需編譯、安裝依賴項或以其他方式更改您的系統?

Docker 容器帶來了可觀的好處,其中最主要的是安裝和執行的操作較少。Docker 允許您將容器放到主機系統上并立即獲得正在運行的服務——無需安裝腳本,無需安裝 C 庫。該服務完全包含在容器中,您需要做的就是啟動它,然后將 TCP 端口映射到它。當您部署一個容器時,您可以獲得運行完整的應用程序及其運行時環境的能力,而無需將其實際安裝到主機系統上。

生命周期管理也變得標準化。啟動、停止和刪除容器就像調用一行 docker 命令一樣簡單。這反過來又使部署成為一個可重復和可測試的過程。它還有助于更輕松地進行軟件升級。

2使用 Docker 的性能影響

您希望您的負載均衡器運行速度快,且不會增加環境延遲。那么,問題是,在容器內運行 HAProxy 有什么影響?

在 CPU 開銷方面,記住,與虛擬機不同,Docker 不需要在主機操作系統之上的虛擬化層。容器在主機的內核上運行,基本上只是另一個進程,盡管它與主機上運行的其他進程具有更好的隔離性(它使用命名空間來實現這一點)。IBM 研究人員的一項研究發現,使用 Docker 的 CPU 開銷可以忽略不計,這應該不足為奇。

網絡是另一回事。默認情況下,Docker 允許您通過創建到主機的橋接網絡來訪問在容器內運行的服務。由于必須在容器的本地網絡和主機的橋接網絡之間發生的網絡地址轉換 (NAT),這確實會導致延遲。在之前引用的同一 IBM 研究中,研究人員發現 Docker 的 NAT 將來自客戶端的 100 字節請求和來自應用程序的 200 字節響應的延遲從大約 35 微秒增加到 70 微秒。

另一方面,橋接網絡很有用,因為它們允許您將容器組隔離到容器網絡中,并且僅將其中一些容器暴露給主機,這對于減少主機網絡所需的 IP 地址數量非常方便(想想運行數百甚至數千個容器所需的 IP 數量)。如果您有興趣了解有關 Docker 中網絡如何工作的更多信息,可以在 YouTube 上觀看 Docker 團隊提供的深入探討。

如果您需要非常低的延遲,您可以切換到使用 Docker 的主機網絡功能,它允許您的容器與主機共享相同的網絡,從而無需 NAT。再說一次,如果你想運行 Docker Swarm 或 Kubernetes,它們使用覆蓋網絡,對于不同的網絡驅動程序,如 Project Calico 和 Cilium 有解決方案,本篇文章文章并不涉及該怎么做。

簡而言之,除非您需要非常低的延遲,否則您應該堅持使用默認的橋接網絡選項。請務必對其進行測試,看看您是否達到了所需的吞吐量。

3使用 Docker 的安全考慮

您可能會擔心許多 Docker 容器以 root 身份運行他們的服務,而這個 root 用戶與主機系統上的 root 用戶相同。對容器突破的擔憂是合理的。HAProxy 也以 root 身份運行。但是,讓您放心:HAProxy 需要 root 訪問權限,因為它需要綁定到受限制的 TCP 端口,如 80 和 443。但是,一旦完成啟動,它就會放棄其 root 權限并以非特權用戶身份運行。

人們還會權衡容器可能是惡意的風險。這是堅持使用由 HAProxy Technologies 制作的 haproxytech Docker 鏡像的一個很好的理由。

4使用 Docker 運行 HAProxy

我們將創建一個 Web 應用程序的三個實例、一個 HAProxy 實例和一個將它們連接在一起的橋接網絡。因此,一旦您安裝了 Docker,請使用以下命令在 Docker 中創建一個新的橋接網絡: 

  1. $ sudo docker network create --driver=bridge mynetwork 

然后使用該 docker run 命令創建并運行 Web 應用程序的三個實例。在此示例中,我使用 Docker 鏡像 jmalloc/echo-server https://hub.docker.com/r/jmalloc/echo-server。這是一個簡單的 Web 應用程序,可返回您發送給它的 HTTP 請求的詳細信息。 

  1. $ sudo docker run -d \  
  2.    --name web1 --net mynetwork jmalloc/echo-server:latest  
  3. $ sudo docker run -d \  
  4.    --name web2 --net mynetwork jmalloc/echo-server:latest  
  5. $ sudo docker run -d \  
  6.    --name web3 --net mynetwork jmalloc/echo-server:latest 

請注意,我們為每個服務分配了一個唯一名稱并將其附加到我們創建的橋接網絡。您現在應該運行了三個 Web 應用程序,您可以通過調用以下 docker ps 命令進行驗證: 

  1. $ sudo docker ps  
  2. CONTAINER ID   IMAGE                        COMMAND              CREATED              STATUS              PORTS      NAMES  
  3. 98216bb8c5ff   jmalloc/echo-server:latest   "/bin/echo-server"   About a minute ago   Up About a minute   8080/tcp   web3  
  4. ae6accc111d9   jmalloc/echo-server:latest   "/bin/echo-server"   About a minute ago   Up About a minute   8080/tcp   web2  
  5. 554fafbc2b3b   jmalloc/echo-server:latest   "/bin/echo-server"   About a minute ago   Up About a minute   8080/tcp   web1 

這些容器監聽自己的端口 8080,但我們沒有將這些端口映射到主機,因此它們不可路由。我們將通過 HAProxy 負載均衡器將流量中繼到這些容器。接下來,讓我們在它們前面添加 HAProxy。在當前目錄中創建一個名為 haproxy.cfg 的文件,并在其中添加以下內容: 

  1. global  
  2.   stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners  
  3.   log stdout format raw local0 info  
  4. defaults  
  5.   mode http  
  6.   timeout client 10s  
  7.   timeout connect 5s  
  8.   timeout server 10s  
  9.   timeout http-request 10s  
  10.   log global  
  11. frontend stats  
  12.   bind *:8404  
  13.   stats enable  
  14.   stats uri /  
  15.   stats refresh 10s  
  16. frontend myfrontend  
  17.   bind :80  
  18.   default_backend webservers  
  19. backend webservers  
  20.   server s1 web1:8080 check  
  21.   server s2 web2:8080 check  
  22.   server s3 web3:8080 check 

需要注意的幾點:

  •  在該 global 部分中,該 stats socket 行啟用了 HAProxy 運行時 API,還啟用了 HAProxy 的無縫重新加載。
  •  第一個前端監聽端口 8404 并啟用 HAProxy Stats 儀表板,該儀表板顯示有關您的負載均衡器的實時統計信息。
  •  另一個前端監聽端口 80,并將請求分派到 Web 服務器后端中列出的三個 Web 應用程序之一。
  •  我們沒有使用每個 Web 應用程序的 IP 地址,而是使用它們的主機名 web1、web2 和 web3。當您像我們一樣創建 Docker 橋接網絡時,您也可以使用這種基于 DNS 的路由。

接下來,創建并運行一個 HAProxy 容器,并通過包含-p 參數將其端口 80 映射到主機上的相同端口。還要為 HAProxy Stats 頁面映射端口 8404: 

  1. $ sudo docker run -d \  
  2.    --name haproxy \ 
  3.    --net mynetwork \  
  4.    -v $(pwd):/usr/local/etc/haproxy:ro \  
  5.    -p 80:80 \  
  6.    -p 8404:8404 \  
  7.    haproxytech/haproxy-alpine:2.4 

docker ps 之后調用顯示 HAProxy 正在運行: 

  1. $ sudo docker ps  
  2. CONTAINER ID   IMAGE                            COMMAND                  CREATED          STATUS          PORTS                                        NAMES  
  3. d734d0ef2635   haproxytech/haproxy-alpine:2.4   "/docker-entrypoint.…"   3 seconds ago    Up 2 seconds    0.0.0.0:80->80/tcp, 0.0.0.0:8404->8404/tcp   haproxy 

您可以通過http://localhost訪問echo-server Web 應用程序。每個對它的請求都將由 HAProxy 進行負載平衡。此外,您可以在http://localhost:8404看到 HAProxy Stats 頁面。

如果您對 haproxy.cfg 文件進行了更改,則可以通過調用以下 docker kill 命令重新加載負載均衡器,而不會損失流量:

  1. $ sudo docker kill -s HUP haproxy 

要刪除容器和網絡,運行 docker stop,docker rm 和 docker network rm 命令: 

  1. $ sudo docker stop web1 && sudo docker rm web1  
  2. $ sudo docker stop web2 && sudo docker rm web2  
  3. $ sudo docker stop web3 && sudo docker rm web3  
  4. $ sudo docker stop haproxy && sudo docker rm haproxy  
  5. $ sudo docker network rm mynetwork 

5總結

在這篇博文中,您了解了如何在 Docker 容器內運行 HAProxy 簡化其部署和生命周期管理。Docker 提供了一種用于部署應用程序的標準化方法,使該過程具有可重復性和可測試性。雖然運行 Docker 的 CPU 開銷可以忽略不計,但它可能會導致額外的網絡延遲,但其影響取決于您的場景和吞吐量需求。

要運行 HAProxy,只需創建一個 HAProxy 配置文件,然后使用 docker run 命令調用 HAProxy Docker 鏡像的名稱。HAProxy Technologies 在 Docker Hub 上提供最新的 Docker 鏡像。 

 

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2011-08-24 13:45:49

HAProxy負載均衡負載均衡器

2011-03-17 09:27:07

HAProxy負載均衡

2023-09-07 11:43:10

2023-02-13 16:39:45

Kubernetes容器負載均衡器

2017-05-19 14:45:01

OVN負載均衡器路由器

2018-08-24 08:51:10

haproxykeepalived均衡器

2010-04-28 17:01:30

Apusic負載均衡器

2010-05-06 10:14:31

負載均衡器

2010-04-22 10:36:06

負載均衡器

2012-02-15 00:15:48

2024-02-22 10:11:00

負載均衡器反向代理

2010-05-10 14:13:26

2011-10-25 10:51:39

軟件級負載均衡器負載均衡LVS

2024-07-17 08:36:53

2023-03-30 13:32:51

負載均衡器HDFS

2022-07-14 08:53:48

MetalLBkubernetes

2024-06-18 08:14:21

2010-03-24 10:35:02

Nginx負載均衡器

2010-05-04 13:38:25

nginx負載均衡器

2010-04-22 10:46:40

Lvs負載均衡故障負載均衡器
點贊
收藏

51CTO技術棧公眾號

欧美一区二区精品在线| xvideos.蜜桃一区二区| 人狥杂交一区欧美二区| 成人在线视频首页| 日韩写真欧美这视频| 亚洲sss视频| 99国产精品99久久久久久粉嫩| 午夜精品理论片| 黄色一区二区三区| 3d蒂法精品啪啪一区二区免费| 91久久精品国产| 911久久香蕉国产线看观看| 国产精品后入内射日本在线观看| 欧美激情在线一区| 91在线观看高清| 神马午夜久久| 国产 欧美 日本| 欧美一区2区| 欧美一区二三区| 欧美网站大全在线观看| 警花av一区二区三区| 椎名由奈jux491在线播放 | 妖精视频成人观看www| 亚洲а∨天堂久久精品9966| 欧美系列一区| 亚洲激情视频在线播放| 色综合久久网| 三级福利片在线观看| 国产精品直播网红| 亚洲香蕉av在线一区二区三区| 国产精品一区二区小说| 一区二区视频在线| 国产成人福利夜色影视| 久久婷婷国产综合尤物精品| 久久久久久久久网站| 日本福利一区二区| 精品一区二区免费| 爱啪视频在线观看视频免费| 在线a免费看| 欧美极品在线观看| 欧美一二三四区在线| 91丨九色丨尤物| 中文字幕一区二区精品区| 九七影院97影院理论片免费| 久久久久久草| 黑人欧美xxxx| 国产日产欧美精品一区二区三区| 日韩jizzz| 国产精品入口尤物| 亚洲欧美国产三级| 99久久精品国产麻豆演员表| 欧美视频亚洲视频| 污污的网站在线观看| 波多野结衣精品| 精品无人区一区二区三区| 久久久久久国产精品| 欧美成人bangbros| 日本久久一区二区| 欧美国产精品一区二区| 久热成人在线视频| 成人免费看片| 在线免费视频福利| 日本a级片电影一区二区| 中文字幕av一区| 狠狠色丁香久久婷婷综合丁香| 国产精品女人毛片| 欧美一区1区三区3区公司| 92福利视频午夜1000合集在线观看| 亚洲一区二区三区小说| 91一区在线观看| 首页综合国产亚洲丝袜| 亚洲久久久久| 91免费版在线| 国产成a人亚洲| 日韩精品第二页| 波多野结衣xxxx| 久久精品视频免费看| 成人video亚洲精品| 天堂资源中文在线| 亚洲五码在线| 国产福利小视频在线观看| 国产小黄视频| 影音成人av| 91蝌蚪视频在线观看| 日本精品久久久久中文字幕| 日本aⅴ免费视频一区二区三区| 中文一区在线| 麻豆传媒在线免费看| 国产三级在线免费| 1024亚洲| 中文字幕在线视频免费观看| 欧美二区三区| gogo人体高清视频| 蜜臀av一区| 9色在线视频| 在线免费av导航| 另类专区亚洲| 国产色综合天天综合网| 国产suv精品一区二区| 欧美性xxxx在线播放| 色视频成人在线观看免| 欧美亚洲精品一区| 国产成人综合一区二区三区| 无人在线观看的免费高清视频| 国产香蕉视频在线看| 天堂a√在线| 国产精品极品美女在线观看| 成人av毛片| jizzjizz亚洲| 麻豆精品网站| 精品国产一区二区三区成人影院 | 亚洲精品成人久久久998| 久久草视频在线看| 二区在线播放| 国产成人亚洲综合a∨婷婷| 亚洲一二三区不卡| 999国产视频| 欧美尤物美女在线| 国产麻豆精品在线观看| 亚洲午夜在线电影| 狠狠色综合欧美激情| 亚洲精品国产系列| 综合欧美精品| 久久99精品久久久| 久久久国产精品麻豆| 欧美日韩在线三区| 久久久久99精品久久久久| 91精品啪在线观看国产81旧版| 91国内在线视频| 日本一区二区视频| 伊人久久亚洲| 亚洲的天堂在线中文字幕| 国产欧美一区二区精品性色| 日韩精品一区二区三区四区五区| 姬川优奈av一区二区在线电影| 91tv官网精品成人亚洲| 欧美一级国产精品| 亚洲老女人av| 欧美亚洲另类制服自拍| 日本免费久久| jizzjizzjizz欧美| 国产精品久久99久久| 三级av在线播放| 国产精品入口芒果| 久中文字幕一区| 国产精品国产三级在线观看| 久操视频在线| 丁香综合av| 久久99精品国产.久久久久| 97久久超碰福利国产精品…| 91在线播放网站| 日韩不卡视频在线观看| 国产一区二区高清| 亚洲精品一区久久久久久| 亚洲xxx大片| 欧日韩免费视频| 精品72久久久久中文字幕| 成人在线视频一区| 国产在线观看不卡| av电影一区| 韩国一区二区在线观看| 26uuu国产精品视频| 一区二区三区视频在线观看视频| 日本一区二区三区视频视频| 欧美一区亚洲二区| 成人羞羞视频在线看网址| 国产亚洲婷婷免费| 亚洲成人精品久久| 超碰在线电影| 日韩欧美精品| 亚洲精品欧美专区| 亚洲欧美日韩精品在线| 精品久久不卡| 久久av.com| 亚洲欧美欧美一区二区三区| 99国产精品久久久久久久| 一区在线免费观看| 久久综合久久综合这里只有精品| 欧美在线观看网址综合| 日本不卡一二三| 亚洲一区av在线播放| 福利一区二区免费视频| 国产91富婆露脸刺激对白| 激情都市一区二区| 国产视频久久久久久久| 毛片在线不卡| 欧美日韩国产精品| 91小视频网站| av一本久道久久综合久久鬼色| 欧美精品v国产精品v日韩精品| 热re99久久精品国99热蜜月| 在线国产欧美| 久久亚洲综合网| 美女国产一区| 日韩免费毛片| 国产一区二区精品调教| 中文字幕一区二区三区不卡 | 亚洲韩国青草视频| 三级黄视频在线观看| 欧美日韩国产丝袜美女|