首页 > 解决方案 > 在已启动实例上使用 EC2 用户数据的 MongoDB 启动脚本

问题描述

我们在 r4.xLarge EC2 实例中运行了一个 MongoDb。我刚刚发现,每次我们的实例关闭(出于任何原因)并重新启动时,mongo 也不会启动。

我们在 EC2 实例的用户数据部分添加了如下启动脚本。

#!/bin/bash

service mongod restart

service mongod status

我们仍然看到与以前相同的行为,即命令没有被执行,需要通过 SSH 连接到实例以启动重启。

任何人都可以指出脚本的任何问题或提供有关此的任何具体见解吗?

谢谢

标签: mongodbamazon-ec2user-data

解决方案


因此,经过一番研究,我发现由于我们在第一次启动实例时没有添加用户数据脚本,所以我不得不在 #!/bin/bash 上方添加一个多部分

脚本现在看起来像这样:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
sudo service mongod restart
sudo service mongod status

故事的寓意,如果您忘记在实例启动期间添加实例用户数据脚本并在事后执行,请在 #!/bin/bash 上方附加该部分

这是因为:

  • AWS 用于mime-multipart附加用户数据文件。
  • 它还scripts-user, always用于运行文件。

推荐阅读