我不是networking专家,我正在努力尝试为Web应用程序设置自动缩放。
我有一个服务器 – 我们可以称之为主 – (在自动扩展组之外),我使用它作为memcache和beanstalkd队列。 我也想用这个服务器来使用rsync做一个源代码同步。
我希望自动伸缩组的服务器能够ssh这个主服务器执行一个rsync,并确保AMI有最新版本的应用程序。
当触发放大警报并启动新实例时,我想要执行此同步。 我读过,我必须用户 – 用户数据文件来执行第一次引导服务器的脚本。
所以这是我现在所拥有的所有信息。 我已经设置了“启动configuration”,“自动缩放组”,“放大”和“缩小”策略,并且都触发这些策略。
我正在使用基于Centos 6公用AMI的自定义(私有)AMI。 当一个新的自动伸缩组实例启动时,我觉得bootstrap.sh脚本没有执行。 这是我的启动configuration:
as-create-launch-config --image-id <PRIVATE_AMI> --instance-type m1.medium --key master --group webserver-security-group --user-data-file /home/user/bin/bootstrap.sh --launch-config my-lc-1
以下是/home/user/bin/bootstrap.sh的内容:
#!/bin/bash set -e -x # Start the workers /var/www/user/bin/start.sh
所以我的第一个问题是,我不知道为什么这个脚本没有执行。
我有第二个问题是,我不知道如何让SSH连接到“主”服务器知道该实例正在改变时扩大或缩小。
帮助将不胜感激;)
马克西姆
所以Centos AMI默认不包含CloudInit服务(Ubuntu和Debian默认有一些)。 您需要将其安装在您的AMI上,在启动时启动服务:
chkconfig cloud-init on
根据需要更新configuration文件: /etc/cloud/cloud.cfg然后,您需要创build一个新的AMI修改。 为了testing引导脚本,我发现最简单的方法是启动这个AMI的微型实例,指定--user-data-file选项。