虚拟服务 - Amazon App Mesh
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

虚拟服务

虚拟服务是一种抽象的实际服务,由虚拟节点直接提供或通过虚拟路由器的方式间接提供。相关服务通过其 virtualServiceName 调用您的虚拟服务,然后这些请求将路由至指定为虚拟服务的提供商的虚拟节点或虚拟路由器。

创建虚拟服务

Amazon Web Services Management Console
使用创建虚拟服务Amazon Web Services Management Console
  1. 在以下位置打开 App Mesh 控制台https://console.aws.amazon.com/appmesh/.

  2. 选择要在其中创建虚拟服务的网格。你拥有的和已经过去的所有网格共享的和你一起被列出。

  3. 在左侧导航中选择 Virtual services (虚拟服务)

  4. 选择 Create virtual service (创建虚拟服务)

  5. 对于 Virtual service name (虚拟服务名称),为您的虚拟服务选择一个名称。您可以选择任何名称,但选择要针对的实际服务的服务发现名称,如my-service.default.svc.cluster.local,建议您更轻松地将虚拟服务与真实服务关联起来。通过这种方式,您无需更改代码即可引用与您的代码当前引用不同的名称。您指定的名称必须解析为非环回 IP 地址,因为在将请求发送到 Envoy 代理之前,应用容器必须能够成功解析该名称。您可以使用任何非环回 IP 地址,因为应用程序或代理容器都不会与此 IP 地址进行通信。代理通过您在 App Mesh 中为其配置的名称,而不是通过名称解析到的 IP 地址与其他虚拟服务进行通信。

  6. 对于 Provider (提供商),选择您的虚拟服务的提供商类型:

    • 如果您希望虚拟服务跨多个虚拟节点分布流量,则选择 Virtual router (虚拟路由器),然后从下拉菜单中选择要使用的虚拟路由器。

    • 如果您希望虚拟服务直接到达虚拟节点而不使用虚拟路由器,则选择虚拟节点然后从下拉菜单中选择要使用的虚拟节点。

      注意

      App Mesh 可能会自动为您在 2020 年 7 月 29 日或之后定义的每个虚拟节点提供商创建默认的 Envoy 路由重试策略,尽管您无法通过 App Mesh API 定义此类策略。有关更多信息,请参阅 默认路由重试策略

    • 如果您此时不希望虚拟服务路由流量(例如,如果您的虚拟节点或虚拟路由器不存在),则选择 None (无)。您可以稍后更新此虚拟服务的提供商。

  7. 选择 Create virtual service (创建虚拟服务) 以完成。

Amazon CLI

使用创建虚拟服务Amazon CLI.

使用以下命令和输入 JSON 文件(替换红色值为您自己的值):

  1. aws appmesh create-virtual-service \ --cli-input-json file://create-virtual-service-virtual-node.json
  2. 的内容示例创建虚拟服务虚拟 node.json:

    { "meshName": "meshName", "spec": { "provider": { "virtualNode": { "virtualNodeName": "nodeName" } } }, "virtualServiceName": "serviceA.svc.cluster.local" }
  3. 输出示例:

    { "virtualService": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualService/serviceA.svc.cluster.local", "createdAt": "2022-04-06T09:45:35.890000-05:00", "lastUpdatedAt": "2022-04-06T09:45:35.890000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "provider": { "virtualNode": { "virtualNodeName": "nodeName" } } }, "status": { "status": "ACTIVE" }, "virtualServiceName": "serviceA.svc.cluster.local" } }

有关使用创建虚拟服务的更多信息Amazon CLI对于 App Mesh,请参阅创建虚拟服务中的命令Amazon CLI引用。

删除虚拟服务

注意

您无法删除网关路由引用的虚拟服务。你需要先删除网关路由。

Amazon Web Services Management Console
使用删除虚拟服务Amazon Web Services Management Console
  1. 在以下位置打开 App Mesh 控制台https://console.aws.amazon.com/appmesh/.

  2. 选择要从其中删除虚拟服务的网格。你拥有的和已经过去的所有网格共享的和你一起被列出。

  3. 在左侧导航中选择 Virtual services (虚拟服务)

  4. 选择要删除的虚拟服务,然后单击。Delete在右上角。您只能删除账户列为的虚拟网关资源拥有者.

  5. 在确认对话框中,键入delete然后单击Delete.

Amazon CLI
使用删除虚拟服务Amazon CLI
  1. 使用以下命令删除虚拟服务(将其替换为虚拟服务)。红色值为您自己的值):

    aws appmesh delete-virtual-service \ --mesh-name meshName \ --virtual-service-name serviceA.svc.cluster.local
  2. 输出示例:

    { "virtualService": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualService/serviceA.svc.cluster.local", "createdAt": "2022-04-06T09:45:35.890000-05:00", "lastUpdatedAt": "2022-04-07T10:39:42.772000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "provider": { "virtualNode": { "virtualNodeName": "nodeName" } } }, "status": { "status": "DELETED" }, "virtualServiceName": "serviceA.svc.cluster.local" } }

有关使用删除虚拟服务的更多信息Amazon CLI对于 App Mesh,请参阅删除虚拟服务中的命令Amazon CLI引用。