如何在 ALB 背后的几个服务之间命名健康检查路由?
我正在将我的 API 和数据库移动到 AWS。在搬家之前,我将我的单体 REST API 拆分为四个服务:
- 公共 API(应用程序和网站连接到的 API)
- 管理 API(用于管理网站)
- 消息传递 API(用于与应用程序实时通信的 Web 套接字服务器)
- 工人(基于队列的任务处理器)
我现在正试图找出路线的良好组织。起初创建了两个子域,api.mydomain.com 和 www.mydomain.com。
我将 api 子域定向到我的 ALB,它仅根据路径路由流量,如下所示:
- “/sockets”-> 消息传递 API
- “/管理员”-> 管理员 API
- “/” -> 公共 API
现在我正在尝试实施健康检查路线。我想将它们命名为“/health”。但健康检查需要针对每个目标群体。由于 ALB 仅基于路径进行路由,因此我不能在多个服务器上拥有 /health。
可能的解决方案:
1.通过子域分离服务
我可以为每个服务创建一个子域,例如: - api.mydomain.com - sockets.mydomain.com - admin.mydomain.com
有了这个设置,我可以在每个服务中都有一个 /health 而不会发生冲突。
2.通过命名分隔健康检查路由
我可以为每个服务命名不同的健康检查路由,例如:
- api.mydomain.com/health-public-api
- api.mydomain.com/health-messaging-api
- api.mydomain.com/health-admin-api
建议?
上述两种解决方案似乎都是可行的,但我想知道其中一个解决方案是否会在稍后咬我,例如添加更多服务时,或者我稍后添加 graphQL API 时。
编辑:
我只是遇到了解决方案 #1 的一个缺点。我的本地 dev-enviromnemt 设置了每个服务 的docker映像和用于路由请求的nginx 。最重要的是,我使用ngrok能够从 Internet 访问开发环境。
我认为很难解决基于子域的服务分离,但我真的不需要开发环境中的 /health 路由,所以我想我可以假装它们不存在。