閱讀527 返回首頁    go 微信


訪問鏈路問題排查__常見問題_產品使用問題_容器服務-阿裏雲

當您在容器服務中架設了一個 web 類型的容器,並通過 routing 將請求轉發到這個服務器時,請求的鏈路是 client > DNS 域名解析 > 負載均衡 VIP > 負載均衡到集群中某一台 acsrouting 容器 > 轉發到 web 容器,如下圖所示。

routing

使用該鏈路進行訪問 ,我們稱之為簡單路由服務,在這整個鏈路過程中,任何一個環節發生問題,用戶的請求可能都不能正確的到達web 容器。下麵,我們從最容易發生問題的環節開發者的 web 容器的健康檢查開始,來排查訪問鏈路的問題。

問題排查路徑指引

問題分類

  1. 查看容器是否處於運行狀態。

    登錄 容器服務管理控製台,單擊左側導航欄中的 應用,選擇目標應用所在的集群並單擊應用的名稱,本示例中為 wordpress-test,如下圖所示。

    應用

  2. 單擊應用 wordpress-test 下提供 web 容器的服務的名稱,本示例中為 web,如下圖所示。

    web容器服務

  3. 查看提供 web 服務的容器的健康檢查狀態。

    容器 選項卡中,檢查所有容器在 健康檢測 這一列是否均為 正常。如果不正常,請查看相應的 日誌 報錯信息以及該頁麵的 事件 選項卡,查看部署是否發生異常。如設置了應用的 健康檢查,需要確定健康檢查頁麵返回 200,來確保健康檢查的狀態是正常的。如下圖所示。

    容器頁麵

  4. 檢查 web 容器頁麵響應是否正常。

    如果容器的健康檢查狀態沒有問題,需要繞過 routing 直接檢查 web 容器的可訪問性。如上圖所示,可以查看到某個 web 容器的容器 IP,登錄集群中某台機器的 routing 的容器,通過容器 IP 請求 web 容器的頁麵,如果返回的 HTTP 狀態碼小於 400,則 web 容器的頁麵正常。如下所示,docker exec -it f171110f2fe2 shf171110f2fe2 是容器 acsrouting_routing_1 的容器 ID,curl -v 172.19.0.7 中的 IP 地址172.19.0.7是某個 web 服務的容器 IP 地址。如下所示,請求返回了狀態碼 302,說明 web 容器訪問是正常的。

    1. root@c68a460635b8c405e83c052b7c2057c7b-node2:~# docker ps
    2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3. b403ea045fa1 registry.aliyuncs.com/acs-sample/wordpress:4.5 "/entrypoint.sh apach" 13 seconds ago Up 11 seconds 0.0.0.0:32768->80/tcp w_web_2
    4. 025f7967cec3 registry.aliyuncs.com/acs-sample/mysql:5.7 "/entrypoint.sh mysql" About a minute ago Up About a minute 3306/tcp w_db_1
    5. 2f247b8a76e5 registry.aliyuncs.com/acs/ilogtail:0.9.9 "/bin/sh -c 'sh /usr/" 31 minutes ago Up 31 minutes acslogging_logtail_1
    6. 42b75bee6cd8 registry.aliyuncs.com/acs/monitoring-agent:latest "acs-mon-run.sh --hel" 31 minutes ago Up 31 minutes acsmonitoring_acs-monitoring-agent_2
    7. 0a9afa527f03 registry.aliyuncs.com/acs/volume-driver:0.7-252cb09 "acs-agent volume_exe" 31 minutes ago Up 31 minutes acsvolumedriver_volumedriver_2
    8. 3c1440fd114c registry.aliyuncs.com/acs/logspout:0.1-41e0e21 "/bin/logspout" 32 minutes ago Up 32 minutes acslogging_logspout_1
    9. f171110f2fe2 registry.aliyuncs.com/acs/routing:0.7-staging "/opt/run.sh" 32 minutes ago Up 32 minutes 127.0.0.1:1936->1936/tcp, 0.0.0.0:9080->80/tcp acsrouting_routing_1
    10. 0bdeb8464c14 registry.aliyuncs.com/acs/agent:0.7-bfe8bdf "acs-agent join --nod" 33 minutes ago Up 33 minutes acs-agent
    11. ba32a0e9e7fe registry.aliyuncs.com/acs/tunnel-agent:0.21 "/acs/agent -config=c" 33 minutes ago Up 33 minutes tunnel-agent
    12. root@c68a460635b8c405e83c052b7c2057c7b-node2:~# docker exec -it f171110f2fe2 sh
    13. / # curl -v 172.19.0.7
    14. * Rebuilt URL to: 172.19.0.7/
    15. * Trying 172.19.0.7...
    16. * Connected to 172.19.0.7 (172.19.0.7) port 80 (#0)
    17. > GET / HTTP/1.1
    18. > Host: 172.19.0.7
    19. > User-Agent: curl/7.47.0
    20. > Accept: */*
    21. >
    22. < HTTP/1.1 302 Found
    23. < Date: Mon, 09 May 2016 03:19:47 GMT
    24. < Server: Apache/2.4.10 (Debian) PHP/5.6.21
    25. < X-Powered-By: PHP/5.6.21
    26. < Expires: Wed, 11 Jan 1984 05:00:00 GMT
    27. < Cache-Control: no-cache, must-revalidate, max-age=0
    28. < Pragma: no-cache
    29. < Location: https://172.19.0.7/wp-admin/install.php
    30. < Content-Length: 0
    31. < Content-Type: text/html; charset=UTF-8
    32. <
    33. * Connection #0 to host 172.19.0.7 left intact
    34. / #
  5. 驗證 acsrouting 的正確性。

    升級 routing 到最新版本,登錄集群機器,請求 routing 健康檢查頁麵,如下所示。

    1. root@c68a460635b8c405e83c052b7c2057c7b-node2:~# curl -Ss -u admin:admin 'https://127.0.0.1:1936/haproxy?stats' &> test.html

    將頁麵 test.html 拷貝到有瀏覽器的機器,用瀏覽器打開本地文件 test.html,如下圖所示。查看相應的 web 服務和容器後端,第一部分為 stats 信息,為 routing 的統計信息,第二部分為 frontend 的統計信息,我們主要觀察第三部分 backend 的信息,w_web_80_servers 表示名為 w 的應用下服務 web 的 80 端口的後端 servers 的信息。總共有三個 backend server,即後端有三個容器提供 web 服務,顯示為綠色,表示 routing 容器到這三個容器的網絡是連通的,在正常工作,顯示為其他顏色則為異常。

    routing-debug-stats

  6. 查看負載均衡 VIP 的轉發是否正確,並查看健康檢查的狀態。

    1. 如下圖所示,找到集群的負載均衡 VIP。單擊 容器服務管理控製台 左側導航欄中的 集群,選擇相應的集群,本示例中為 routing-test-online。集群
    2. 單擊該集群對應的 管理,進入集群詳情頁麵。單擊左側導航欄中的 負載均衡,單擊前往SLB控製台,進入該集群的負載均衡管理控製台頁麵。負載均衡
    3. 查看負載均衡實例的服務地址,本示例中為 112.74.143.184。slb服務地址
    4. 查看負載均衡的端口健康狀態。單擊左側導航欄中的 監聽狀態 顯示為 運行中 則表示端口正常。slb監聽
    5. 查看負載均衡後端掛載的服務器的狀態。單擊左側導航欄中的 服務器健康檢查狀態 必須為 正常slb後端服務器
  7. 查看域名是否正確解析到了負載均衡的 VIP。例如,使用 ping 命令或者 dig 命令查看解析結果。域名解析的結果必須指向前麵步驟查找到的負載均衡的 VIP 地址。如下所示。

    1. $ ping www.example-domain.com
    1. $ dig www.example-domain.com
  8. 如果用戶在創建集群時,沒有選擇默認創建集群負載均衡實例,由於簡單路由服務依賴該集群負載均衡實例,因此用戶需要額外綁定一個負載均衡實例來使用簡單路由服務,具體方法參考綁定集群負載均衡實例

最後更新:2016-11-03 15:14:57

  上一篇:go 雲監控ECS監控插件安裝方法__技術分享_技術運維問題_雲監控-阿裏雲
  下一篇:go 路由服務常見問題__常見問題_產品使用問題_容器服務-阿裏雲