我有一个弹性负载均衡器,上面运行着2个实例。我想将一个应用程序部署到这个弹性扩展组。我听说是codedeply并尝试。我对此几乎没有疑问。当我创建一个新部署时,我总是重新连接到GitHub。我无法解决这个问题。第二,当我尝试部署时,我收到此错误“部署无法继续:约束'默认'需要至少1个健康主机才能继续。剩余的主机将被跳过。” 所以我检查了我的弹性负载平衡,我发现我有2个所需实例和2个最小健康实例的配置。所以我试图将最小健康实例修改为1,它会自动终止一个实例。我不知道我在哪里做错了。请帮我解决这个问题。
答案 0 :(得分:1)
确保您拥有健康的主机。如果没有,则暂时将部署配置类型更改为 AllAtOnce ,因为这在部署之前不需要健康的主机。部署完成后,您可以将其更改回原始设置。
同时检查CodeDeploy应用程序配置中的Auto Scaling组目标是否有效。蓝绿部署将复制并替换Auto Scaling组,因此请确保应用程序配置使用有效的源Auto Scaling组开始。
答案 1 :(得分:0)
对于第一个问题,如果您尝试从Github仓库进行部署,则在开始部署之前,您需要使用Github完成身份验证过程。
对于第二个问题,您可以通过在部署组中添加标记来指定要部署到的实例。确保您的实例标记正确,以便CodeDeploy可以在部署期间找到实例。
答案 2 :(得分:0)
我认为您使用CodeDeployDefault.OneAtATime (MinimumHealthyHosts:99%)
100个实体正在运行,你可以成功。
如何使用 CodeDeployDefault.AllAtOnce(MinimumHealthyHosts:0%) 要么 CodeDeployDefault.HalfAtATime(MinimumHealthyHosts:50%)
我成功了AllAtOnce和HalfAtATime ※使用自动缩放组,AZ1a的1个实例和AZ1c的1个实例。
答案 3 :(得分:0)
这件事也让我头疼。这是我修复它的方式。 发生这种情况是因为codeDeploy通过在端口80上默认命中实例来检查ec2实例的运行状况。在部署之前,您需要在实例上运行下面的bash脚本并检查脚本是否有效。必须启动httpd服务。重新启动实例。
#!/bin/bash
sudo su
yum update -y
yum install httpd -y
yum install ruby
yum install aws-cli
cd ~
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
chmod +x ./install
./install
echo 'hello world' > /var/www/html/index.html
hostname >> /var/www/html/index.html
chkconfig httpd on
service httpd start