mongodb - 在已启动实例上使用 EC2 用户数据的 MongoDB 启动脚本
问题描述
我们在 r4.xLarge EC2 实例中运行了一个 MongoDb。我刚刚发现,每次我们的实例关闭(出于任何原因)并重新启动时,mongo 也不会启动。
我们在 EC2 实例的用户数据部分添加了如下启动脚本。
#!/bin/bash
service mongod restart
service mongod status
我们仍然看到与以前相同的行为,即命令没有被执行,需要通过 SSH 连接到实例以启动重启。
任何人都可以指出脚本的任何问题或提供有关此的任何具体见解吗?
谢谢
解决方案
因此,经过一番研究,我发现由于我们在第一次启动实例时没有添加用户数据脚本,所以我不得不在 #!/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
用于运行文件。
推荐阅读
- spring - spring data - 如何使用自定义逻辑制作唯一约束?
- java - 标准化不能解决 Fortify 错误
- mongodb - 从 spring mongo 更新 mongodb 中的多个文档
- r - 如何使用for循环中的变量作为函数的输入
- c# - 每个程序集调用一次 AddAutoMapper 而不是传入多个程序集?
- css - Material UI:如何使按钮填充统一大小?
- php - 在 WooCommerce 存档页面上显示视频而不是产品缩略图
- mysql - 将 SQL 转换为 KNEX 多条件
- oracle - 将用户 $HOME 更改为 $ORACLE_BASE
- typescript - .d.ts 文件中的错误何时会影响消费者?