虛擬節點 - AWS App Mesh

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

虛擬節點

虛擬節點扮演特定任務群組的邏輯指標,例如 Amazon ECS 服務或 Kubernetes 部署。建立虛擬節點時,必須為任務群組指定服務探索方法。您的虛擬節點預期的任何輸入流量都會指定為接聽程式。虛擬節點傳送輸出流量的任何虛擬服務都會指定為後端

新虛擬節點的回應中繼資料包含與虛擬節點關聯的 Amazon 資源名稱 (ARN)。在 Amazon ECS 任務定義或 Kubernetes 網繭規格中,將此值設為任務群組特使代理容器的APPMESH_RESOURCE_ARN環境變數。例如,該值可以是arn:aws:appmesh:us-west-2:111122223333:mesh/myMesh/virtualNode/myVirtualNode。它接著會映射到 node.idnode.cluster Envoy 參數。設定此變數時,您必須使用1.15.0或更高版本的 Envoy 映像檔。如需有關 App Mesh 特許變數的詳細資訊,請參閱特使形象

注意

根據預設,當 Envoy 在指標和追蹤方面參照本身時,App Mesh 會使用您在 APPMESH_RESOURCE_ARN 中指定的資源名稱。您可以藉由使用自己的名稱設定 APPMESH_RESOURCE_CLUSTER 環境變數,以覆寫此行為。

建立虛擬節點

AWS Management Console
若要使用建立虛擬節點 AWS Management Console
  1. 開啟應用程式網格主控台,位於 https://console.aws.amazon.com/appmesh/

  2. 選擇您要在其中建立虛擬節點的網格。會列出您擁有且已與您共用的所有網格。

  3. 在左側導覽中,選擇 Virtual nodes (虛擬節點)

  4. 選擇 [建立虛擬節點],然後指定虛擬節點的設定。

  5. 虛擬節點名稱中,輸入虛擬節點的名稱。

  6. 對於服務探索方法,請選擇下列其中一個選項:

    • DNS — 指定虛擬節點所代表之實際服務的 DNS 主機名稱。特使代理部署在亞馬遜 VPC 中。代理伺服器會將名稱解析要求傳送至針對 VPC 設定的 DNS 伺服器。如果主機名稱解析,DNS 伺服器會傳回一或多個 IP 位址。如需 VPC DNS 設定的詳細資訊,請參閱搭配 VPC 人雲端使用 DNS。對於 DNS 回應類型 (選用),請指定 DNS 解析程式傳回的端點類型。Lo@@ ad Balancer 意味著 DNS 解析器返回一組負載平衡的端點。端點意味著 DNS 解析器正在返回所有端點。依預設,會假設回應類型為 Load Balancer

      注意

      如果您使用 Route53,則需要使用 Load Balancer。

    • AWS Cloud Map— 指定現有的服務名稱和 HTTP 命名空間。或者,您也可以選取 [新增列] 並指定 [索引鍵] 和 [],以指定 App Mesh 可以查詢AWS Cloud Map的屬性。僅傳回符合所有指定鍵/值對的執行個體。若要使用AWS Cloud Map,您的帳戶必須具有AWSServiceRoleForAppMesh服務連結角色。如需 AWS Cloud Map 的詳細資訊,請參閱《AWS Cloud Map 開發人員指南》。

    • — 如果您的虛擬節點預期不會有任何輸入流量,請選取此選項。

  7. IP 版本偏好設定

    透過切換 [覆寫預設 IP 版本行為],控制網狀內的流量應使用哪個 IP 版本。根據預設,App Mesh 會使用各種 IP 版本。

    注意

    在虛擬節點上設定 IP 偏好設定只會覆寫針對此特定節點上網格設定的 IP 偏好設定。

    • 預設

      • 特使的 DNS 解析器更喜歡IPv6並回落。IPv4

      • 我們使用返回的IPv4地址(AWS Cloud Map如果可用),並回到使用該IPv6地址。

      • 為本機應用程式建立的端點會使用IPv4位址。

      • 特使監聽器綁定到所有IPv4地址。

    • 首選

      • 特使的 DNS 解析器更喜歡IPv6並回落。IPv4

      • 返回的IPv6地址將被AWS Cloud Map使用(如果可用),並回到使用該IPv4地址

      • 為本機應用程式建立的端點會使用IPv6位址。

      • 特使監聽器綁定到所有IPv4IPv6地址。

    • 首選

      • 特使的 DNS 解析器更喜歡IPv4並回落。IPv6

      • 我們使用返回的IPv4地址(AWS Cloud Map如果可用),並回到使用該IPv6地址。

      • 為本機應用程式建立的端點會使用IPv4位址。

      • 特使監聽器綁定到所有IPv4IPv6地址。

    • 僅適用於 IPv6

      • 特使的 DNS 解析器僅使用。IPv6

      • 只會使用傳回AWS Cloud Map的IPv6地址。如果AWS Cloud Map返回IPv4地址,則不會使用 IP 地址,並將空的結果返回給特使。

      • 為本機應用程式建立的端點會使用IPv6位址。

      • 特使監聽器綁定到所有IPv4IPv6地址。

    • 僅限 IPv4

      • 特使的 DNS 解析器僅使用。IPv4

      • 只會使用傳回AWS Cloud Map的IPv4地址。如果AWS Cloud Map返回IPv6地址,則不會使用 IP 地址,並將空的結果返回給特使。

      • 為本機應用程式建立的端點會使用IPv4位址。

      • 特使監聽器綁定到所有IPv4IPv6地址。

  8. (選擇性) 用戶端原則預設值 — 設定與後端虛擬服務通訊時的預設需求。
    注意
    • 如果您想要為現有的虛擬節點啟用傳輸層安全性 (TLS),建議您建立新的虛擬節點,該節點代表與要啟用 TLS 的現有虛擬節點相同的服務。然後使用虛擬路由器逐漸將流量轉移到新的虛擬節點並進行路由。若要取得有關建立路線和調整變化權值的更多資訊,請參閱〈〉路由。如果您使用 TLS 更新現有的流量服務虛擬節點,則下游用戶端 Envoy 代理很可能會在您已更新之虛擬節點的 Envoy Proxy 接收憑證之前收到 TLS 驗證內容。這可能會導致下游特許代理伺服器上的 TLS 交涉錯誤。

    • 必須為使用後端服務虛擬節點所代表之應用程式部署的 Envoy Proxy 啟用代理伺服器授權。我們建議您在啟用 Proxy 授權時,限制只存取此虛擬節點與之通訊的虛擬節點。

    • (選擇性) 如果您要求虛擬節點使用傳輸層安全性 (TLS) 與所有後端通訊,請選取強制 TLS。

    • (選擇性) 如果您只想要對一或多個特定連接埠使用 TLS,請在連接中輸入數字。若要新增其他連接埠,請選取新增連接埠。如果您未指定任何通訊埠,則會針對所有連接埠強制執行 TLS。

    • 對於驗證方法,請選取下列其中一個選項。您指定的憑證必須已存在且符合特定需求。如需詳細資訊,請參閱憑證需求

      • AWS Private Certificate Authority主機 — 選取一或多個現有憑證。如需完整內容,請逐 end-to-end 步瞭解如何使用 ACM 憑證加密的範例應用程式部署網格,請參閱開啟 GitHub Cer AWStificate Manager 的 TLS 設定 TLS

      • 特使秘密發現服務(SDS)託管 — 輸入使用秘密發現服務獲取的秘密特使的名稱。

      • 本機檔案主控 — 指定部署 Envoy 之檔案系統上憑證鏈結檔案的路徑。如需完整內容,請逐 end-to-end 步瞭解如何使用使用本機檔案加密的範例應用程式部署網格,請參閱開啟使用檔案提供的 TLS 憑證設定 TLS GitHub。

    • (選擇性) 輸入主旨替代名稱。若要新增其他 SAN,請選取新增 SAN。SAN 必須是 FQDN 或 URI 格式。

    • (選擇性) 選取提供用戶端憑證和下列其中一個選項,以在伺服器要求時提供用戶端憑證並啟用相互 TLS 驗證。若要進一步了解相互 TLS,請參閱應用程式網狀相互 TLS 驗證文件。

      • 特使秘密發現服務(SDS)託管 — 輸入使用秘密發現服務獲取的秘密特使的名稱。

      • 本機檔案主控 — 指定部署 Envoy 之檔案系統上憑證鏈結檔案的路徑以及私密金鑰

  9. (選擇性) 服務後端 — 指定虛擬節點將與之通訊的 App Mesh 虛擬服務。
    • 為虛擬節點通訊的虛擬服務輸入 App Mesh 虛擬服務名稱或完整的 Amazon 資源名稱 (ARN)。

    • (選擇性) 如果您要為後端設定唯一的 TLS 設定,請選取 TLS 設定,然後選取覆寫預設值

      • (選擇性) 如果您要求虛擬節點使用 TLS 與所有後端通訊,請選取強制 TLS。

      • (選擇性) 如果您只想要對一或多個特定連接埠使用 TLS,請在連接中輸入數字。若要新增其他連接埠,請選取新增連接埠。如果您未指定任何通訊埠,則會針對所有連接埠強制執行 TLS。

      • 對於驗證方法,請選取下列其中一個選項。您指定的憑證必須已存在且符合特定需求。如需詳細資訊,請參閱憑證需求

        • AWS Private Certificate Authority主機 — 選取一或多個現有憑證

        • 特使秘密發現服務(SDS)託管 — 輸入使用秘密發現服務獲取的秘密特使的名稱。

        • 本機檔案主控 — 指定部署 Envoy 之檔案系統上憑證鏈結檔案的路徑。

      • (選擇性) 輸入主旨替代名稱。若要新增其他 SAN,請選取新增 SAN。SAN 必須是 FQDN 或 URI 格式。

      • (選擇性) 選取提供用戶端憑證和下列其中一個選項,以在伺服器要求時提供用戶端憑證並啟用相互 TLS 驗證。若要進一步了解相互 TLS,請參閱應用程式網狀相互 TLS 驗證文件。

        • 特使秘密發現服務(SDS)託管 — 輸入使用秘密發現服務獲取的秘密特使的名稱。

        • 本機檔案主控 — 指定部署 Envoy 之檔案系統上憑證鏈結檔案的路徑以及私密金鑰

    • 若要新增其他後端,請選取 [新增後端介面]。

  10. (選擇性) 記錄

    若要設定日誌記錄,請輸入您希望 Envoy 使用的 HTTP 存取日誌路徑。我們建議您使用該/dev/stdout路徑,以便您可以使用 Docker 日誌驅動程序將特使日誌導出到服務,例如 Amazon CloudWatch 日誌。

    注意

    日誌必須仍然由您的應用程式中的代理程式輸入,並傳送到目的地。這個檔案路徑只是指示 Envoy 將日誌傳送到何處。

  11. 監聽器組態

    偵聽程式支援HTTPHTTP/2GRPC、和TCP通訊協定。 HTTPS不支援。

    1. 如果您的虛擬節點預期輸入流量,請為聽程式指定連接埠和通訊協定。http 偵聽器允許連接轉換到網絡套接字。您可以按一下新增監聽程式來新增多個監聽器。刪除按鈕將刪除該監聽器。

    2. (選擇性) 啟用連線集區

      連線集區會限制 Envoy 可與本機應用程式叢集同時建立的連線數目。它旨在保護您的本機應用程式,避免連線不堪重負,並可讓您根據應用程式的需求調整流量塑型。

      您可以設定虛擬節點監聽程式的目的地端連線集區設定值。預設情況下,App Mesh 會將用戶端連線集區設定設定設定為無限,以簡化網格組態。

      注意

      連線集區和連接埠對應通訊協定必須相同。如果您的監聽器通訊協定是 tcp,請僅指定 [最大連線]。如果您的監聽器協定是 grpc 或 http2,請僅指定最大請求。如果您的監聽器協定是 http,您可以同時指定 MaxConnection 和 maxPendingRequests.

      • 對於連線數目上限,請指定輸出連線的數目上限。

      • (選擇性) 對於擱置要求上限,請指定 Envoy 將排入佇列的連線數目上限之後的溢位要求數目。預設值為 2147483647

    3. (選擇性) 啟用離群值偵測

      在客戶 Envoy 上應用的異常檢測允許客戶對觀察到的已知錯誤故障的連接採取近乎立即的行動。它是斷路器實作的一種形式,可追蹤上游服務中個別主機的健康狀態。

      異常值偵測會動態判斷上游叢集中的端點是否正在執行與其他端點不同,並將其從運作良好的負載平衡集中移除。

      注意

      若要有效地設定伺服器虛擬節點的異常值偵測,該虛擬節點的服務探索方法可以是AWS Cloud Map或 DNS,且回應類型欄位設定為。ENDPOINTS如果您使用 DNS 服務探索方法的回應類型為LOADBALANCER,則 Envoy Proxy 只會選取單一 IP 位址來路由至上游服務。這會使從一組主機中彈出狀況不良的主機的異常偵測行為無效。如需 Envoy Proxy 與服務探索類型相關行為的詳細資訊,請參閱服務探索方法一節。

      • 對於伺服器錯誤,請指定退出所需的連續 5xx 錯誤數。

      • 對於離群值偵測間隔,請指定頂出掃描分析之間的時間間隔和單位。

      • 對於「底座頂出持續時間」,指定頂出主體的基準時間量和單位。

      • 對於頂出百分比,請指定負載平衡集區中可退出的主機的最大百分比。

    4. (選擇性) 啟用健全狀況檢查 — 設定健全狀況檢查原則的設定。

      健全 Health 檢查原則是選擇性的,但是如果您為健全 Health 況原則指定任何值,則必須指定狀況臨界值、健狀況檢查間隔、健全狀況檢查通訊協定、逾時期間和不良狀況臨界值的值。

      • Health 檢查通訊協定中,選擇通訊協定 如果您選取 grpc,則您的服務必須符合 GRPC Health 檢查通訊協定。

      • 對於 Health check port (運作狀態檢查連接埠),指定應執行運作狀態檢查的連接埠。

      • 對於 Healthy threshold (運作良好閾值),指定在宣告接聽程式運作良好之前,必須達到的運作狀態檢查連續成功次數。

      • 對於 Health check interval (運作狀態檢查間隔),指定每次運作狀態檢查執行之間的時間間隔 (以毫秒為單位)。

      • 對於 Path (路徑),指定運作狀態檢查請求的目的地路徑。只有在 Health 檢查通訊協定http或時,才會使用此值http2。其他通訊協定會忽略此值。

      • 對於 Timeout period (逾時期間),指定等待收到運作狀態檢查回應的時間 (以秒為單位)。

      • 對於 Unhealthy threshold (運作不良閾值),指定在宣告接聽程式運作不良之前,必須達到的運作狀態檢查連續失敗次數。

    5. (選擇性) 啟用 TLS 終止 — 設定其他虛擬節點如何使用 TLS 與此虛擬節點通訊。
      • 模式中,選取要在監聽器上設定 TLS 的模式。

      • 對於憑證方法,請選取下列其中一個選項。憑證必須符合特定需求。如需詳細資訊,請參閱憑證需求

        • AWS Certificate Manager主機 — 選取現有的憑證

        • 特使秘密發現服務(SDS)託管 — 輸入使用秘密發現服務獲取的秘密特使的名稱。

        • 本機檔案主控 — 指定部署 Envoy Proxy 之檔案系統上憑證鏈結檔案的路徑以及私密金鑰

      • (選擇性) 選取需要用戶端憑證和下列其中一個選項,以在用戶端提供憑證時啟用相互 TLS 驗證。若要進一步了解相互 TLS,請參閱應用程式網狀相互 TLS 驗證文件。

        • 特使秘密發現服務(SDS)託管 — 輸入使用秘密發現服務獲取的秘密特使的名稱。

        • 本機檔案主控 — 指定部署 Envoy 之檔案系統上憑證鏈結檔案的路徑。

      • (選擇性) 輸入主旨替代名稱。若要新增其他 SAN,請選取新增 SAN。SAN 必須是 FQDN 或 URI 格式。

    6. (選擇性) 逾時
      注意

      如果您指定的逾時時間大於預設值,請務必設定虛擬路由器和逾時大於預設值的路由。但是,如果您將逾時減少為低於預設值的值,則在 Route 上更新逾時是可選的。如需詳細資訊,請參閱路由

      • 要求逾時 — 如果您為監聽器的協定選取 grpchttphttp2,您可以指定要求逾時。預設值為 15 秒。的值會0停用逾時。

      • 閒置持續時間 — 您可以指定任何監聽器協定的閒置持續時間。預設為 300 秒。

  12. 選擇 [建立虛擬節點] 以完成。

AWS CLI

若要使用建立虛擬節點AWS CLI。

使用下列命令和輸入 JSON 檔案建立使用 DNS 進行服務探索的虛擬節點 (將紅色值取代為您自己的值):

  1. aws appmesh create-virtual-node \ --cli-input-json file://create-virtual-node-dns.json
  2. 範例 create-virtual-node-dns .json 的內容:

    { "meshName": "meshName", "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "virtualNodeName": "nodeName" }
  3. 輸出範例:

    { "virtualNode": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName", "createdAt": "2022-04-06T09:12:24.348000-05:00", "lastUpdatedAt": "2022-04-06T09:12:24.348000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "status": { "status": "ACTIVE" }, "virtualNodeName": "nodeName" } }

如需使用 App Mesh 建立虛擬節點的AWS CLI詳細資訊,請參閱AWS CLI參考中的create-virtual-node指令。

刪除虛擬節點

注意

如果將虛擬節點指定為任何路由中的目標,或指定為任何虛擬服務中的提供者,則無法刪除該虛擬節點。

AWS Management Console
若要刪除虛擬節點 AWS Management Console
  1. 開啟應用程式網格主控台,位於 https://console.aws.amazon.com/appmesh/

  2. 選擇您要從中刪除虛擬節點的網格。會列出您擁有且已與您共用的所有網格。

  3. 在左側導覽中,選擇 Virtual nodes (虛擬節點)

  4. 在「虛擬節點」表格中,選擇要刪除的虛擬節點,然後選取刪除。若要刪除虛擬節點,您的帳號 ID 必須列在虛擬節點的「網格擁有者」或「資源擁有者」欄中。

  5. 在確認方塊中,輸入,delete然後選取 [刪除]。

AWS CLI
若要刪除虛擬節點 AWS CLI
  1. 使用以下命令刪除虛擬節點(用您自己的值替換紅色值):

    aws appmesh delete-virtual-node \ --mesh-name meshName \ --virtual-node-name nodeName
  2. 輸出範例:

    { "virtualNode": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName", "createdAt": "2022-04-06T09:12:24.348000-05:00", "lastUpdatedAt": "2022-04-07T11:03:48.120000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "backends": [], "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "status": { "status": "DELETED" }, "virtualNodeName": "nodeName" } }

如需有關使用 App Mesh 刪除虛擬節點的AWS CLI詳細資訊,請參閱AWS CLI參考中的delete-virtual-node指令。