![AWS 自动扩展设置引导脚本和 ssh 访问](https://linux22.com/image/802859/AWS%20%E8%87%AA%E5%8A%A8%E6%89%A9%E5%B1%95%E8%AE%BE%E7%BD%AE%E5%BC%95%E5%AF%BC%E8%84%9A%E6%9C%AC%E5%92%8C%20ssh%20%E8%AE%BF%E9%97%AE.png)
我不是网络专家,目前正在努力尝试为网络应用程序设置自动扩展。
我有一台服务器(我们可以称之为 master)(在自动缩放组之外),我将其用于 memcache 和 beanstalkd 队列。我还想使用此服务器通过 rsync 进行源代码同步。
我希望自动缩放组中的服务器能够通过 ssh 连接此主服务器以执行 rsync 并确保 AMI 具有最新版本的应用程序。
我想在触发扩展警报并启动新实例时执行此同步。我读到我必须使用 --user-data-file 在服务器首次启动时执行脚本。
这就是我目前掌握的所有信息。我已设置“启动配置”、“自动缩放组”、“扩大”和“缩小”策略,以及触发这些策略的两个警报。
我正在使用基于 Centos 6 公共 AMI 的自定义(私有)AMI。启动自动缩放组的新实例时,我感觉 bootstrap.sh 脚本未执行。这是我的启动配置:
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 连接到“主”服务器,同时知道实例在扩大或缩小时正在发生变化。
如能得到帮助将不胜感激 ;)
马克西姆
答案1
因此 Centos AMI 默认不包含CloudInit
该服务(部分 Ubuntu 和 Debian 默认包含该服务)。您需要在您的 AMI 上安装它,并在启动时启动该服务:
chkconfig cloud-init on
根据需要更新配置文件:/etc/cloud/cloud.cfg
然后,您需要为修改后的 AMI 创建一个新的 AMI。要测试引导脚本,我发现最简单的方法是启动此 AMI 的微实例并指定选项--user-data-file
。