我有一个弹性负载均衡器,上面运行着两个实例。我想将一个应用程序部署到这个弹性伸缩组中。我听说的是代码依赖和尝试。我对此没有什么疑问。当我创建一个新的部署时,我总是得到重新连接到GitHub。我解决不了这个问题。第二,当我尝试部署时,我得到了这样的错误"部署无法继续:约束‘默认’需要至少1个健康的主机才能继续。剩余的主机将被跳过。"。因此,我检查了我的弹性负载平衡,发现我有一个由2个所需实例和2个最小健康实例组成的配置。所以我尝试将最小健康实例修改为1,它会自动终止一个实例。我不知道我哪里做错了。请帮我解决这个问题。
确保您拥有现有的健康主机。如果没有,则将部署配置类型临时更改为AllAtOnce,因为这在部署之前不需要健康的主机。一旦部署完成,您就可以将其更改回原始设置。
还要检查CodeDeploy应用程序配置中的自动缩放组目标是否有效。蓝绿色部署将复制并替换自动缩放组,以确保应用程序配置从一开始就使用有效的源自动缩放组。
对于第一个问题,如果您尝试从Github repo进行部署,则在开始部署之前,您需要使用Github完成身份验证过程。
对于第二个问题,您可以通过在部署组中添加标记来指定要部署到的实例。请确保您的实例标记正确,以便CodeDeploy能够在部署过程中找到实例。
我认为您使用CodeDeployDefault.OneAtATime(最低健康主机:99%)
100个实例正在运行,您可以成功。
使用怎么样CodeDeployDefault.AllAtOnce(MinimumHealthyHosts:0%)或CodeDeployDefault.HarfAtATime(MinimumHealthyHosts:50%)
我成功了AllAtOnce和HalfAtTime
※使用自动缩放组,在AZ1a和AZ1c分别为1和1。
这件事也让我头疼。这就是我修复它的方法。发生这种情况是因为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