1

我正在尝试使用 codedeploy 服务与负载均衡器一起部署代码,因为我希望 codedeploy 在部署时取消注册和注册实例,确保在部署时不会丢弃任何请求。但是我的架构是

我有 4 个实例,每个实例在 3 个不同的端口上运行 3 个应用程序进程,例如
实例 1:app1 在端口 81,app2 在端口 82,app3 在端口 83
实例 2:app1 在端口 81,app2 在端口 82 , app3 在端口 83
实例 3: app1 在端口 81, app2 在端口 82, app3 在端口 83
实例 4: app1 在端口 81, app2 在端口 82, app3 在端口 83

所有这些实例及其端口都注册到目标组正在编码部署中使用。
我将其配置为一次部署一个实例
但是当我使用 codedeploy 部署时,它在它选择的第一个实例中取消注册第一个端口后挂起。
注意:
1)App1,App2,App3都是一样的,只是运行在不同的端口上以实现高可用性,所以代码也一样,启动/停止脚本也一样
2)不使用弹性伸缩组,使用键值注册ec2实例对,通过选择应用程序负载均衡器启用负载均衡,并为这些 ec2 实例注册的目标组提供目标组
2)在就地部署上部署


要解决的问题: 取消注册所有端口并在单个部署中部署和注册每个实例中的所有端口并重复这在所有 4 个实例中

那么有没有办法使用负载均衡器在实例的不同端口配置应用程序部署?

4

1 回答 1

2

如果我理解情况正确,您有 3 个应用程序在相同的 4 个实例上运行,每个应用程序使用一个单独的端口来服务流量。由于每个目标组只能有 1 个端口,我假设您也有 3 个目标组。鉴于您的描述,听起来您使用同一个 CodeDeploy 应用程序部署所有 3 个应用程序,大概将它们捆绑在一起。

每个部署只有一个目标组

鉴于您的情况,不可能在同一部署中让一个 CodeDeploy 部署与 3 个不同的目标组绑定/取消绑定。限制是每个部署一个目标组,因此无法从 3 个不同的端口绑定/取消绑定。当然,您可以使用生命周期挂钩手动完成所有这些操作,但我强烈反对这样做。

每个应用程序使用不同的 CodeDeploy 应用程序

听起来您真正需要做的是为您正在运行的每个应用程序创建一个单独的 CodeDeploy 应用程序。如果您在 CodeDeploy 中将其分解为 3 个不同的应用程序,则根本不会遇到此问题,因为您将拥有 3 个不同的部署组和三个不同的目标组,它们都绑定到不同的端口。您的发布过程将更加安全,因为您一次只需要更新一个应用程序而不是 3 个,并且当您进行部署时,您只需解除与服务于 1 个应用程序的目标组的绑定,因此其他 2 个应用程序将继续运行。这应该会增加您的可用性。

这种方法的唯一缺点是更多的部署,有利于提高安全性,如果出于某种原因需要这样做,您将无法一次发布所有 3 个应用程序。

于 2018-05-15T18:47:33.100 回答