AWS使用负载均衡器代码部署多个应用程序

时间:2018-05-07 06:10:00

标签: amazon-s3 amazon-ec2 aws-code-deploy aws-load-balancer

我正在尝试使用codedeploy服务来部署代码以及负载均衡器,因为我希望codedeploy在部署时注销和注册实例,确保在部署时不会丢弃任何请求。但我的架构是,我有4个实例,例如每个在3个不同的端口运行3个应用程序 实例1:端口81处的app1,端口82处的app2,端口83处的app3 实例2:端口81处的app1,端口82处的app2,端口83处的app3 实例3:端口81处的app1,端口82处的app2,端口83处的app3 实例4:端口81处的app1,端口82处的app2,端口83处的app3
所有这些实例及其端口都注册到用于代码部署的目标组 我将其配置为一次部署一个实例 但是当我使用codedeploy进行部署时,它会在取消注册第一个端口的第一个端口后挂起。
注意:
1)App1,App2,App3都是一样的,只是运行在不同的高可用性端口,因此代码也相同,启动/停止脚本也相同2)不使用自动扩展组,使用键值对注册ec2实例,通过选择应用程序负载均衡器启用负载平衡并给出目标组这些ec2实例已注册的内容2)部署就地部署

要解决的问题: 取消注册所有端口并在单个部署中部署和注册每个实例中的所有端口,并在所有4个实例中重复此操作
所以有没有办法在不同的端口配置应用程序部署使用负载均衡器的实例?

1 个答案:

答案 0 :(得分:1)

如果我了解情况正确,那么在相同的4个实例上运行3个应用程序,每个应用程序使用一个单独的端口来提供流量。由于每个目标组只能有1个端口,因此我假设您还有3个目标组。根据您的描述,听起来您使用相同的CodeDeploy应用程序部署所有3个应用程序,可能将它们捆绑在一起。

每个部署只有一个目标组

鉴于您的情况,不可能在同一部署中从3个不同的目标组中绑定/取消绑定一个CodeDeploy部署。限制是每个部署一个目标组,因此无法从3个不同的端口绑定/取消绑定。当然,您可以使用lifecycle hooks手动执行所有操作,但我强烈反对。

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

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

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