最近我們開始嘗試基于阿里云容器服務使用Docer進行生產環境的自動化部署,首先遇到的一個問題是 —— 如何部署負載均衡(這里的負載均衡是指阿里云負載均衡SLB)?面對這個問題,我們首先關注的是這個問題 —— 阿里云負載均衡與容器究竟是什么關系?
在阿里云容器服務中創建集群時(這個使用容器服務的第一步操作),默認會自動創建負載均衡。
這個負載均衡依然是我們熟知的那個負載均衡,后端服務器依然是云服務器(ECS)。
最大的不同之處是監聽的配置是基于TCP的4層負載均衡。
從這個監聽配置可以得知,在使用阿里云容器服務時,負載均衡與容器沒有直接的關系,它們感知不到容器的存在,只是作為4層負載均衡(也支持7層負載均衡,詳見這里),負責將請求通過TCP轉發到后端ECS的9080端口上,只不過這些ECS是容器服務集群中的節點(容器主機)。
這時我們有產生了另外一個疑問 —— 容器主機的9080端口與容器內應用監聽的端口之間又是什么關系呢?
從阿里云容器服務的幫助文檔-簡單路由(支持 HTTP/HTTPS)中得知,在容器主機內運行著一個專門提供路由服務(acsrouting)的容器。
在容器服務控制臺的“應用列表”中可以看到這個acsrouting應用:
點擊上圖中的應用名稱"acsrouting",會顯示這個應用中的服務acsrouting_routing:
從上圖中的端口映射中可以知道,原來與容器主機(ECS,集群節點)的9080端口發生關系的是acsrouting_routing容器的80端口。
所以,當使用阿里云容器服務時,請求是這樣被轉發+路由到運行實際Web站點的容器中的:請求 -> 負載均衡80端口 -> ECS(容器主機)的9080端口 -> acsrouting的80端口 -> 運行Web站點的容器的80端口。
需要注意的是 acsrouting 的路由是基于域名的。
文章列表