AWS 自动扩展设置引导脚本和 ssh 访问

AWS 自动扩展设置引导脚本和 ssh 访问

我不是网络专家,目前正在努力尝试为网络应用程序设置自动扩展。

我有一台服务器(我们可以称之为 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

相关内容