一般問題
問:什麼是 AWS App Mesh?
答:AWS App Mesh 可輕鬆監控、控制和偵錯服務之間的通訊。App Mesh 使用 Envoy,這是與您的微型服務容器一起部署的開放原始碼服務網格代理。App Mesh 已與 AWS 服務整合,可用於監控和追蹤,且可與許多熱門的第三方工具搭配使用。App Mesh 可與 Amazon ECS、Amazon EKS、AWS Fargate、AWS 上執行的 Kubernetes 和 Amazon EC2 上執行的服務所管理的微型服務容器搭配使用。
問:為什麼要使用 App Mesh?
答:App Mesh 可讓您更輕鬆地查看和控制服務之間的通訊,同時確保安全性,而無須編寫新程式碼或執行其他 AWS 基礎設施。使用 App Mesh 時,您可以標準化服務的通訊方式、實作服務之間的通訊規則,並將指標、日誌和追蹤直接擷取到您所選的 AWS 服務和第三方工具中。
問:App Mesh 的運作方式為何?
答:App Mesh 為您的服務設定和管理服務網格。執行方法是您搭配每個服務執行開放原始碼 Envoy 代理,然後 App Mesh 會設定代理來處理各個容器的所有對內和對外通訊。App Mesh 會收集指標,例如錯誤率和每秒連線數,這些可以利用 statsd 收集器匯出到 Amazon CloudWatch。使用 App Mesh API 時,您可以根據路徑或權重,將流量路由到特定服務版本。
問:什麼是服務網格?
答:服務網格是一個新的軟體層,可以處理服務之間的所有通訊。它提供新功能來連接和管理服務之間的連線,而且不受各服務的程式碼支配,讓它能跨網路邊界以及搭配多個服務管理系統運作。
整合
問:App Mesh 如何與 Amazon Elastic Container Services (ECS) 和 AWS Fargate 搭配使用?
答:App Mesh 為 Amazon ECS 和 AWS Fargate 管理的應用程式提供新的通訊、觀察和管理功能。您可以將 Envoy 代理映像新增至任務定義。App Mesh 會管理 Envoy 組態來提供服務網格功能。App Mesh 將指標、日誌和追蹤匯出到所提供的 Envoy 引導組態中指定的端點。App Mesh 提供 API,可在啟用網格的微型服務之間設定流量路由和其他控制。
問:App Mesh 如何與 Amazon Elastic Container Service for Kubernetes (EKS) 搭配使用?
答:使用開放原始碼 AWS App Mesh 控制器和變化的 Webhook 許可控制器。這些控制器會將您的 Kubernetes 服務連接到 App Mesh,並確保將 Envoy 代理注入您的 pod。App Mesh 將指標、日誌和追蹤匯出到所提供的 Envoy 引導組態中指定的端點。App Mesh 提供 API,可在啟用網格的微型服務之間設定流量路由和其他控制。
問:App Mesh 如何與 Amazon EC2 上執行的服務搭配使用?
答:在您的 EC2 執行個體上,以容器或程序執行 Envoy 代理。使用 AWS 提供的容器代理初始容器,或執行您自己的指令碼,以透過代理重新導向執行個體上的網路流量。App Mesh 會管理 Envoy 組態來提供服務網格功能。App Mesh 將指標、日誌和追蹤匯出到所提供的 Envoy 引導組態中指定的端點。App Mesh 提供 API,可在啟用網格的微型服務之間設定流量路由和其他控制。
問:為什麼我應該使用 App Mesh 而不是 AWS Elastic Load Balancer?
答:我們建議使用 AWS Elastic Load Balancing 來處理所有網際網路流量,以及不在您信任範圍內的用戶端流量。至於連接到 AWS 區域內其他服務的內部服務,App Mesh 可為服務通訊提供靈活性、一致性和更高程度的控制和監控。
監控、記錄和追蹤
問:App Mesh 提供哪種類型的監控功能?
答:使用 App Mesh 時,您可以獲得服務之間每個躍點的一致指標和日誌。這些日誌和指標包括服務名稱和請求識別符等中繼資料。有了這些之後,您可以使用 Amazon CloudWatch 之類的工具來彙總、篩選、查看服務到服務通訊的圖形化儀表板。一般儀表板可能包含服務和相依服務之間的錯誤率和錯誤碼。App Mesh 會自動為每個服務收集追蹤數據,並透過所有服務 API 呼叫的詳細資訊輕鬆地視覺化服務地圖。這些功能讓您可以更輕鬆地偵錯和識別微型服務之間通訊問題的根本原因。
問:我是否可以使用非 AWS 工具搭配 App Mesh 進行監控、記錄或追蹤? 可以。
答:是。App Mesh 支援任何可與 Envoy 搭配的第三方工具。這包括 Splunk、Prometheus、Jaeger、Flagger 和 Grafana,以及 Zipkin 和 LightStep 等開放式追蹤解決方案。
流量控制
問:App Mesh 提供哪種類型的流量控制?
答:App Mesh 為您提供一組用戶端流量路由控制功能。App Mesh 提供 API,能根據服務名稱和版本來路由應用程式之間的流量。這些功能讓您可以更輕鬆地部署新版本的微型服務。
服務間身分驗證
問:App Mesh 如何支援應用程式身分?
Mutual TLS (mTLS) 提供了一種在傳輸層上強制執行應用程式身分並根據用戶端提供的憑證來允許或拒絕用戶端連接的方法。AWS App Mesh 支援使用 X.509 憑證 (稱為相互傳輸層安全性或 mTLS) 強制執行用戶端應用程式身分。為設定 mTLS,您需要設定用戶端,以在請求啟動期間向伺服器服務提供憑證 (作為 TLS 工作階段溝通的部分內容)。伺服器使用此憑證來識別用戶端和執行身分驗證,檢查憑證是否有效並由受信任的憑證機構 (CA) 頒發,同時透過使用憑證上的主題備選名稱 (SAN) 來識別用戶端。
問:為什麼應該將 mTLS 與 AWS App Mesh 搭配使用?
微型服務還具有特殊的安全要求,包括端對端流量加密和靈活的服務存取控制,可以藉助服務網格來達到這些要求。AWS App Mesh mTLS 實作可讓用戶端應用程式驗證伺服器並提供流量加密,而 Mutal TLS 提供用於服務間身分驗證的對等身分驗證。它在 TLS 上增加一層安全性,讓您的服務可以驗證建立連接的用戶端。將巨型應用程式分解成微型服務,然後在服務網格中執行它們可帶來各種優勢,包括更出色的可見性和智慧流量路由。