閱讀420 返回首頁    go 阿裏雲


路由服務常見問題__常見問題_產品使用問題_容器服務-阿裏雲

Q:我想簡單體驗下容器服務,部署一個 web 容器,且能夠訪問,有示例嗎?

A:有,示例包括 通過鏡像創建 Nginx通過編排模板創建 WordPress,示例指導您如何簡單快速地部署應用。

 

Q:如何使用 routing 服務?

A:參見示例 通過 acsrouting 路由應用暴露 HTTP 服務

 

Q:如何使用 routing 標簽?

A:參見服務編排文檔 標簽說明

 

Q:我部署了一個 web 類型容器,如何能夠訪問到這個容器裏麵的內容?

A:容器技術沒有黑魔法,一個容器就是一個或者一組進程,進程需要暴露端口,用戶才能訪問到容器裏麵的內容。容器抽象出了容器的端口,與主機的端口相映射。我們可以通過訪問與容器映射了的主機端口訪問到容器。

 

Q:為了做到高可用,我們會使用多個相同功能的容器,隻提供一個訪問的端點,這在容器服務中是如何做到的呢?

A:如下圖所示,我們提供了一個 routing 服務(通過 服務 > 變更配置 > web 路由規則 進行配置),routing 服務會默認在集群的每個節點部署一個 routing (創建集群之後,您會在容器列表中看到,屬於 acsrouting 應用)容器,所有請求先走集群的(創建集群會默認創建一個負載均衡實例)負載均衡前端80端口 > 節點9080端口 > routing 容器 80 端口。routing 容器的底層實現是一個 HAProxy 負載均衡軟件,類似 Nginx,提供負載均衡功能。routing 容器是根據 HTTP 協議中的 “HOST” header 指定的域名來轉發到不同的容器後端的(在同一個集群中,容器與容器之間是網絡互通的)。您在進行路由配置時,一定要注意負載均衡的端口,節點 vm 的端口與容器端口的區別和聯係。routing-design

 

Q:如何給暴露公網的服務添加域名,並支持 HTTP 協議?

A:參見鏈接 給暴露公網的服務添加域名

 

Q:如何將 HTTP 協議轉換成 HTTPS 協議?

A:參見鏈接 將暴露的 HTTP 服務修改為 HTTPS 服務

 

Q:如何將 HTTP 請求跳轉為 HTTPS 請求?

A:首先我們要區分請求的協議是 HTTP 還是 HTTPS。如果是 HTTP 協議,則通過 301 或者 302 跳轉到 HTTPS。但是當 HTTP 請求和 HTTPS 請求分別通過負載均衡的 80 和 443 端口轉發到後端相同的端口(例如 9080 端口)時,後端的容器是沒有辦法區分該請求的協議是 HTTP 還是 HTTPS 協議的。解決的辦法是,通過額外暴露一個端口(例如 8080 端口)將 HTTP 的請求走如下鏈路:負載均衡前端 80 端口 > 節點主機 vm8080 端口 > 專門用作跳轉處理的容器,例如 Nginx 80 端口 > 返回 302 跳轉。

 

Q:為什麼負載均衡 HTTP 協議的端口顯示異常?

A:負載均衡的 HTTP 協議端口健康檢查失敗,就會顯示異常。健康檢查的原理很簡單,就是發送一個 HTTP 的 HEAD 請求(與 GET 請求類似,但是隻需要返回響應頭即可),用戶需要配置 HTTP 請求的域名,默認是 IP,如果請求返回 200,負載均衡才認為健康檢查是正常的。解決辦法是繞過負載均衡,直接在您的主機節點上通過 curl 命令探測請求是否正確返回 200。

 

Q:為什麼負載均衡 HTTPS 協議的端口顯示異常?

A:負載均衡的 HTTPS 協議端口健康檢查失敗,就會顯示異常。健康檢查的原理很簡單,就是發送一個 HTTP 的 HEAD 請求(與 GET 請求類似,但是隻需要返回響應頭即可),用戶需要配置 HTTP 請求的域名,默認是 IP,如果請求返回 200,負載均衡才認為健康檢查是正常的。用戶如果配置的是 HTTPS 協議端口,請注意一定要在配置健康檢查的時候配置請求的域名,否則默認健康檢查是會失敗的(默認配置的 IP 請求到 routing 容器,routing 容器不知道該轉發到哪個後端,返回 503 報錯)。檢查辦法是繞過負載均衡,直接在您的主機節點上通過 curl 命令探測請求是否正確返回 200,如果沒有返回,請檢查應用的正確性。

 

Q:集群的負載均衡是否支持綁定內網負載均衡,是否支持解綁?

A:集群支持綁定至多一個負載均衡實例,同時支持解綁定,參見 設置集群根域名 中的 綁定負載均衡

 

Q:集群支持綁定多個集群級別的負載均衡嗎?

A:目前不支持。用戶可以通過手動創建負載均衡綁定到集群節點的 9080 端口,當節點伸縮擴容時,用戶需要自己維護自己創建的負載均衡的後端服務器,例如添加或者減少後端服務器。

 

Q:同一個集群內,容器和容器之間如何通信?

A:同一個集群內,容器訪問另外一個容器,可以直接使用容器名當作內部域名進行訪問。

 

Q: 同一個集群內,容器和容器之間如何進行服務發現和負載均衡?

A:通過路由服務代理進行轉發和發現。參見示例 基於容器服務實現 Docker 微服務間的負載均衡和自動服務發現的方法

 

Q:路由服務訪問鏈路的問題,如何排查?

A:排查方法參見 訪問鏈路問題排查

 

Q:既可以通過應用模板的 aliyun.routing.port_$container_port 設置 web 路由規則,也可以通過服務的 變更配置 設置 web 路由規則,區別是什麼?

A:本質是一樣的。通過應用模板的 aliyun.routing.port_$container_port 設置 web 路由規則會反映在服務的 變更配置 的 web 路由規則上,但是反過來則不會。通過服務的 變更配置 設置 web 路由規則,隻是便於用戶在控製台使用,同時方便錯誤檢查和校驗。其實現也就是把這個表單變成應用模板的一個 label,然後再去更新服務的配置。

 

Q: 我希望對負載均衡做更多的配置,默認的路由服務不支持,怎麼辦?

A:我們提供了一個自定義代理的鏡像 registry.aliyuncs.com/acs/proxy,該鏡像的底層實現是 HAProxy,支持對 HAProxy 各種定義的參數化配置,同時支持動態的服務發現,即根據服務的健康狀況,正確地路由到健康的容器中。

最後更新:2016-11-02 10:16:14

  上一篇:go 訪問鏈路問題排查__常見問題_產品使用問題_容器服務-阿裏雲
  下一篇:go 如何申請備案服務號?__產品驗證_備案流程_備案-阿裏雲