Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门。本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
路由
路由与虚拟路由与相关联。该路由用于匹配对虚拟路由器的请求并将流量分配到其关联的虚拟节点。如果路由与请求匹配,它可以将流量分配到一个或多个目标虚拟节点。您可以为每个虚拟节点指定相对权重。本主题可帮助您处理服务网格中的路由。
创建路由
- Amazon Web Services Management Console
-
使用创建路由Amazon Web Services Management Console
-
通过 https://console.aws.amazon.com/appmesh/ 打开 App Mesh 控制台。
-
选择要在其中创建路由。列出了您拥有和与您共享的所有网格。
-
在左侧导航中选择 Virtual routers (虚拟路由器)。
-
选择要与新路由关联的虚拟路由。如果没有列出任何 VPC,则需要先创建虚拟路由。
-
在 Routes (路由) 表中,选择 Create route (创建路由)。要创建路由,必须将您的账户 ID 列为该路径的资源所有者。
-
对于 Route name (路由名称),指定要用于您的路由的名称。
-
对于路由类型,选择要路由的协议。您选择的协议必须与您为虚拟路由器选择的侦听器协议和要将流量路由到的虚拟节点相匹配。
-
(可选)对于路径优先级,请指定一个介于 0-1000 之间的优先级以用于您的路径。路由会根据指定的值进行匹配,其中 0 是最高优先级。
-
(可选)选择其他配置。从下面的协议中,选择您为路由类型选择的协议,然后根据需要在控制台中指定设置。
-
对于目标配置,选择现有的 App Mesh 虚拟节点以将流量路由到并指定权重。您可以选择添加目标来添加其他目标。所有目标的百分比相加必须等于100。如果没有列出虚拟节点,则必须先创建一个。如果所选虚拟节点有多个侦听器,则需要目标端口。
-
对于比赛配置,请指定:
比赛配置不适用于tcp
-
如果 http/http2 是选定的类型:
-
(可选)方法-指定传入的 http/http2 请求中要匹配的方法标头。
-
(可选)端口匹配-匹配传入流量的端口。如果此虚拟路由器有多个侦听器,则需要进行端口匹配。
-
(可选)前缀/精确/正则表达式路径-匹配 URL 路径的方法。
-
前缀匹配-默认情况下,网关路由的匹配请求将重写为目标虚拟服务的名称,并将匹配的前缀重写为。/
根据您配置虚拟服务的方式,它可能会使用虚拟路由器根据特定的前缀或标头将请求路由到不同的虚拟节点。
-
精确匹配-精确参数会禁用路由的部分匹配,并确保它仅在路径与当前 URL 完全匹配时才返回路由。
-
Regex match-用于描述多个网址实际上可以识别网站上的单个页面的模式。
-
(可选)查询参数-此字段允许您匹配查询参数。
-
(可选)标头-指定 htt p 和 http2 的标头。它应该匹配传入的请求以路由到目标虚拟服务。
-
-
选择创建路线。
- Amazon CLI
-
使用创建路由Amazon CLI
使用以下命令创建 gRPC 路由并输入 JSON(用你自己的值替换红色
值):
-
aws appmesh create-route \
--cli-input-json file://create-route-grpc.json
-
示例 create-route-grpc .json 的内容
{
"meshName" : "meshName",
"routeName" : "routeName",
"spec" : {
"grpcRoute" : {
"action" : {
"weightedTargets" : [
{
"virtualNode" : "nodeName",
"weight" : 100
}
]
},
"match" : {
"metadata" : [
{
"invert" : false,
"match" : {
"prefix" : "123"
},
"name" : "myMetadata"
}
],
"methodName" : "nameOfmethod",
"serviceName" : "serviceA.svc.cluster.local"
},
"retryPolicy" : {
"grpcRetryEvents" : [ "deadline-exceeded" ],
"httpRetryEvents" : [ "server-error", "gateway-error" ],
"maxRetries" : 3,
"perRetryTimeout" : {
"unit" : "s",
"value" : 15
},
"tcpRetryEvents" : [ "connection-error" ]
}
},
"priority" : 100
},
"virtualRouterName" : "routerName"
}
-
输出示例:
{
"route": {
"meshName": "meshName",
"metadata": {
"arn": "arn:aws:appmesh:us-west-2
:210987654321:mesh/meshName/virtualRouter/routerName/route/routeName",
"createdAt": "2022-04-06T13:48:20.749000-05:00",
"lastUpdatedAt": "2022-04-06T13:48:20.749000-05:00",
"meshOwner": "123456789012",
"resourceOwner": "210987654321",
"uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
"version": 1
},
"routeName": "routeName",
"spec": {
"grpcRoute": {
"action": {
"weightedTargets": [
{
"virtualNode": "nodeName",
"weight": 100
}
]
},
"match": {
"metadata": [
{
"invert": false,
"match": {
"prefix": "123"
},
"name": "myMetadata"
}
],
"methodName": "nameOfMehod",
"serviceName": "serviceA.svc.cluster.local"
},
"retryPolicy": {
"grpcRetryEvents": [
"deadline-exceeded"
],
"httpRetryEvents": [
"server-error",
"gateway-error"
],
"maxRetries": 3,
"perRetryTimeout": {
"unit": "s",
"value": 15
},
"tcpRetryEvents": [
"connection-error"
]
}
},
"priority": 100
},
"status": {
"status": "ACTIVE"
},
"virtualRouterName": "routerName"
}
}
有关使用 for App Mesh 创建路径Amazon CLI的更多信息,请参阅Amazon CLI参考资料中的 creat e-route 命令。
(可选)元数据
选择 Add metadata(添加元数据)。
(可选)重试策略
重试策略使客户端可以保护自己免受间歇性网络故障或间歇性服务器端故障的影响。重试策略是可选的,但我们建议您这样做。重试超时值定义了每次重试(包括初次尝试)的超时时间。如果您未定义重试策略,则 App Mesh 可能会自动为每条路由创建默认策略。有关更多信息,请参阅默认路由重试策略:
-
对于 “重试超时”,输入超时持续时间的单位数。如果选择任何协议重试事件,则需要一个值。
-
对于 “重试超时单位”,选择一个单位。如果选择任何协议重试事件,则需要一个值。
-
对于最大重试次数,输入请求失败时的最大重试次数。如果选择任何协议重试事件,则需要一个值。我们建议将值设置为至少两种。
-
选择一个或多个 HTTP 重试事件。我们建议至少选择 stream-error 和 gateway-error。
-
选择 T CP 重试事件。
-
选择一个或多个 gRPC 重试事件。我们建议至少选择 “已取消且不可用”。
(可选)重试策略
重试策略使客户端可以保护自己免受间歇性网络故障或间歇性服务器端故障的影响。重试策略是可选的,但我们建议您这样做。重试超时值定义了每次重试(包括初次尝试)的超时时间。如果您未定义重试策略,则 App Mesh 可能会自动为每条路由创建默认策略。有关更多信息,请参阅默认路由重试策略:
-
对于 “重试超时”,输入超时持续时间的单位数。如果选择任何协议重试事件,则需要一个值。
-
对于 “重试超时单位”,选择一个单位。如果选择任何协议重试事件,则需要一个值。
-
对于最大重试次数,输入请求失败时的最大重试次数。如果选择任何协议重试事件,则需要一个值。我们建议将值设置为至少两种。
-
选择一个或多个 HTTP 重试事件。我们建议至少选择 stream-error 和 gateway-error。
-
选择 T CP 重试事件。
如果您指定的超时时间大于默认超时,请确保为所有虚拟节点参与者的侦听器指定的超时也大于默认超时。但是,如果您将超时时间减少到低于默认值的值,则可以选择更新虚拟节点的超时时间。有关更多信息,请参阅虚拟节点。
(可选)超时
-
空闲持续时间 — 默认值为 300 秒。
-
值为0
禁用超时。
删除路由
- Amazon Web Services Management Console
-
使用删除路由Amazon Web Services Management Console
-
通过 https://console.aws.amazon.com/appmesh/ 打开 App Mesh 控制台。
-
选择要从中删除路由。列出了您拥有和与您共享的所有网格。
-
在左侧导航中选择 Virtual routers (虚拟路由器)。
-
选择要从中删除路由的路由。
-
在路由表中,选择要删除的路由,然后选择右上角的删除。
-
在确认框中,键入,delete
然后单击 “删除”。
- Amazon CLI
-
使用删除路由Amazon CLI
-
使用以下命令删除您的路线(将红色
值替换为自己的路线):
aws appmesh delete-route \
--mesh-name meshName
\
--virtual-router-name routerName
\
--route-name routeName
-
输出示例:
{
"route": {
"meshName": "meshName",
"metadata": {
"arn": "arn:aws:appmesh:us-west-2
:210987654321:mesh/meshName/virtualRouter/routerName/route/routeName",
"createdAt": "2022-04-06T13:46:54.750000-05:00",
"lastUpdatedAt": "2022-04-07T10:43:57.152000-05:00",
"meshOwner": "123456789012",
"resourceOwner": "210987654321",
"uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
"version": 2
},
"routeName": "routeName",
"spec": {
"grpcRoute": {
"action": {
"weightedTargets": [
{
"virtualNode": "nodeName",
"weight": 100
}
]
},
"match": {
"metadata": [
{
"invert": false,
"match": {
"prefix": "123"
},
"name": "myMetadata"
}
],
"methodName": "methodName",
"serviceName": "serviceA.svc.cluster.local"
},
"retryPolicy": {
"grpcRetryEvents": [
"deadline-exceeded"
],
"httpRetryEvents": [
"server-error",
"gateway-error"
],
"maxRetries": 3,
"perRetryTimeout": {
"unit": "s",
"value": 15
},
"tcpRetryEvents": [
"connection-error"
]
}
},
"priority": 100
},
"status": {
"status": "DELETED"
},
"virtualRouterName": "routerName"
}
}
有关使用 for App Mesh 删除路径Amazon CLI的更多信息,请参阅Amazon CLI参考资料中的 delete- route 命令。