我有一个WebServer说WS-1和NFS服务器说在AWS上的NFS-1设置。 WS-1由弹性负载平衡器pipe理,并自动调节。 它还在/ var / www上安装了一个包含所有应用程序代码的EBS。
在自动调节期间,如果另一个WS-X启动,那么/ var / www挂载的EBS也会被克隆并附加到那个上面? 如果不是,除了在根EBS卷上托pipe代码,我还有哪些选项?
NFS内部的访问在IP基础上定义,如10.0.0.1/32(rw,…)。 在自动缩放期间,将启动更多的实例,我如何允许它们连接到NFS服务器并挂载共享目录? 我不想使用NFS访问私有IP子网,而在安全组级别,我已经将访问NFS服务器的权限设置为0.0.0.0/0。 NFS服务器使用像111,2049,4000-4002这样的固定端口。
在放大时,EBS卷和其数据将不被“克隆”。 要有这种行为,你想在启动时自动执行它。
另一种方法,取决于EBS上有多less数据,是从S3中拉下来的。
通过安全组,您可以允许app_security_group中的任何服务器访问nfs_server_group中的任何服务器。 这将允许您dynamic更新安全组。
希望是有道理的。
如果您拥有实例的最近AMI(Amazon Machine Image),则只会“克隆”实例。 自从创build快照以后,文件系统可能会发生一些变化,所以最好使用AWS userdata创build一个Bash / CloudInit脚本,这个脚本会触发更改区域的更新,例如代码库,媒体等。
更新某些领域的选项可以是(列举优点和缺点):
以下是一个引导脚本示例,您可以将其应用于启动configuration,以触发其dynamic执行引导任务。 请注意,userdata脚本以root用户身份执行。
#!/bin/bash # Update your packages yum update -y # Get/execute bootstrapping cd /tmp git clone ssh://your-git-server/bootstrapping-repo.git chmod +x /tmp/your-repo/bootstrapping.sh # Execute it /tmp/your-repo/bootstrapping.sh # Remove the bootstrapping script remnants rm -rf /tmp/your-repo
这种方法允许您灵活地随时更新您的“bootstrapping-repo”,而无需定期创build新的AMI。
对于后台,我在我的userdata中使用S3来获取相关的SSH密钥,主机文件等,以及引导存储库的Git。
最好让AMI保持最新状态,并保存到启动configuration中,这样新的实例就不必花太长的时间更新。 无论您是经常手动执行此操作,还是通过API或CLI编写脚本来完成,都取决于您。
仅供参考 :实例启动时调用的用户数据和后续脚本的输出将logging到文件/var/log/cloud-init-output.log