fun*_*der 3 load-balancing node.js google-cloud-platform gcp-load-balancer angular14
我有一个非常简单的用例,但我似乎找不到方法来做到这一点。我的应用程序有一个应用程序部分(角度)和一个 API 部分(nodejs)。从 UI 来看,虽然我将 api 称为/api/*,但 api 服务器本身没有/api前缀。因此,我需要重写对/apito的任何请求/。
在开发环境中,我的角度应用程序只有一个代理配置来进行重写:
{
"/api/*": {
"target": "http://localhost:3000",
"pathRewrite": {
"^/api/": ""
},
"secure": false,
"logLevel": "debug"
}
}
Run Code Online (Sandbox Code Playgroud)
因此,对于生产环境,我需要针对以下场景配置GCP负载均衡器:
| 传入路径 | 后端服务 | 路径重写 |
|---|---|---|
| / | ui 后端服务 | (不适用) |
| /应用程序 | ui后端服务 | (不适用) |
| /api | api 后端服务 | / |
虽然我能够配置简单的路由规则来将主机和路径映射到 ui-backend-service,但重写/api.
我能找到的任何 URL 重写示例都显示了经典负载平衡,它似乎不再适用。
我尝试修改Advanced host and path rules,但它告诉我我可以提供pathRules或routeRules,而不是两者都提供。我无法创建单独的规则,因为主机(*在我的例子中)不能多次使用。
我不想为此在我的 api 服务器上设置 nginx。还有其他方法吗?
我终于设法解决了我的问题。
显然,GCP Console for Load Balancing的Web UI尚不支持让用户通过表单添加重写规则的方法。唯一的方法是手动添加配置。
我发现有两种方法可以做到这一点:
(此答案假设您已经创建了负载平衡配置)
Advanced host and path rules在为规则提供的文本区域中选择并添加以下内容:defaultService: projects/my-project/global/backendServices/ui-backend-service
name: path-matcher-1
pathRules:
- paths:
- /
service: projects/my-project/global/backendServices/ui-backend-service
- paths:
- /app
- /app/*
service: projects/my-project/global/backendServices/ui-backend-service
- paths:
- /api
- /api/*
service: projects/my-project/global/backendServices/api-backend-service
routeAction:
urlRewrite:
pathPrefixRewrite: /
Run Code Online (Sandbox Code Playgroud)
gcloud compute url-maps edit <lb-name>
Run Code Online (Sandbox Code Playgroud)
这将检索负载平衡配置并在编辑器中显示它(在 Linux 中,它在终端的 vi 编辑器中显示它)
注释掉(通过放置#在每行的开头)或删除现有配置。在 vi 编辑器中插入上述配置(进行一些更改,如下所述)以代替注释掉或删除的行。
通过gcloud更新配置时,需要使用URI引用后端服务。因此,只需https://www.googleapis.com/compute/v1/在每个服务引用之前添加即可。
配置应类似于下图所示:
defaultService: https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/ui-backend-service
name: path-matcher-1
pathRules:
- paths:
- /app
- /app/*
service: https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/ui-backend-service
- paths:
- /
service: https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/ui-backend-service
- paths:
- /api
- /api/*
service: https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/api-backend-service
routeAction:
urlRewrite:
pathPrefixRewrite: /
Run Code Online (Sandbox Code Playgroud)
请记住,对负载平衡配置的任何更改通常需要几分钟才能生效。因此,请耐心等待并尝试相应的更改。
灵感:https://cloud.google.com/load-balancing/docs/https/setting-up-url-rewrite#gcloud
在上面的“鼓舞人心”链接中,该Console版本似乎已经过时(在撰写此答案时)。gcloud不过,该版本运行良好。
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |