【问题标题】:MongoDB won't work as a standalone EC2 AWS instance CENTOS 7MongoDB 不能作为独立的 EC2 AWS 实例 CENTOS 7 工作
【发布时间】:2022-03-14 21:11:47
【问题描述】:

我一直在尝试在一个 EC2 实例上设置 Mongodb,并希望它用作我当前在另一个 EC2 实例上运行的 api 的数据库。我正在使用 Centos 7。

我试图在 mongodb 网站上关注这些 instructions 以了解如何做到这一点,但它们似乎已经过时了。一个明显的问题是/dev/xvdf /dev/xvdg /dev/xvdh or the sd* equivalents 不存在。相反,我将我的日志/数据/日志挂载到 /dev/xvda1

当我运行sudo service mongod start 时,输出如下:

● mongod.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2018-02-12 16:47:57 UTC; 14s ago
     Docs: https://docs.mongodb.org/manual
  Process: 8348 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=100)
  Process: 8345 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 8343 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 8342 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal systemd[1]: Starting High-performance, schema-free document-oriented database...
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal mongod[8348]: about to fork child process, waiting until server is ready for connections.
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal mongod[8348]: forked process: 8351
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal mongod[8348]: ERROR: child process failed, exited with error number 100
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal mongod[8348]: To see additional information in this output, start without the "--fork" option.
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal systemd[1]: mongod.service: control process exited, code=exited status=100
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal systemd[1]: Failed to start High-performance, schema-free document-oriented database.
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal systemd[1]: Unit mongod.service entered failed state.
Feb 12 16:47:57 ip-111-11-4-246.us-east-2.compute.internal systemd[1]: mongod.service failed.

基于此article 我已经运行了 mongod --storageEnginewiredTiger --dbpath /data 它将打开 mongo 但将以waiting for connections on port 27017 结束,然后可以在另一个 mongo 实例上打开它,但这既不可维护也不我的服务器可以访问。

这是我对该应用程序的完整历史记录。注意(这是一个新的 ec2 实例,用于尝试重新启动进程。)

    1  lsls
    2  ls
    3  cd ../..
    4  ls
    5  cd etc
    6  ls
    7  cd yum.repos.d/
    8  ls
    9  touch mongodb-org-3.6.repo
   10  sudo touch mongodb-org-3.6.repo
   11  sudo vi mongodb-org-3.6.repo
   12  sudo yum -y update && sudo yum install -y mongodb-org-server     mongodb-org-shell mongodb-org-tools
   13  ls
   14  cd ../../..
   15  ls
   16  sudo mkdir /data /log /journal
   17  sudo mkfs.xfs /dev/xvda1
   18  echo '/dev/xvdf /data xfs defaults,auto,noatime,noexec 0 0
/dev/xvdg /journal xfs defaults,auto,noatime,noexec 0 0
/dev/xvdh /log xfs defaults,auto,noatime,noexec 0 0' | sudo tee -a /etc/fstab
   19  sudo mount /data
   20  sudo mount /dev/xvda1 /data
   21  sudo mount /dev/xvda1 /log
   22  sudo mount /dev/xvda1 /journal
   23  sudo mount /dev/xvda1 /data
   24  sudo chown mongod:mongod /data /journal /log
   25  sudo ln -s /journal /data/journal
   26  sudo vi etc/mongod.conf
   27  cd ../..
   28  ls
   29  echo '* soft nofile 64000
* hard nofile 64000
* soft nproc 64000
* hard nproc 64000' | sudo tee /etc/security/limits.d/90-mongodb.conf
   30  echo 'ACTION=="add|change", KERNEL=="xvda1", ATTR{bdi/read_ahead_kb}="0"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules
   31  sudo service mongod start --storageEngine wiredTiger
   32  sudo service mongod start
   33  journalctl -xe
   34  systemctl status mongod.service
   35  mongo
   36  mongod --storageEngine wiredTiger --dbpath /data --fork --logpath
   37  mongod --storageEngine wiredTiger --dbpath /data --fork --logpath /log
   38  cd log
   39  ls
   40  cd log
   41  ls
   42  cd ..
   43  cd log
   44  sudo touch mongo.log
   45  cd ..
   46  mongod --storageEngine wiredTiger --dbpath /data --fork --logpath /log
   47  mongod --storageEngine wiredTiger --dbpath /data --fork --logpath /log/mongo.log
   48  --fork mongod --storageEngine wiredTiger --dbpath /data --logpath /log/mongo.log
   49  sudo service mongod start
   50  systemctl status mongod.service
   51  systemctl status mongod.service --fork
   52  sudo setenforce 0
   53  systemctl status mongod.service --fork
   54  sudo service mongod start
   55  ls -Z
   56  sudo chcon -Rv --type=mongod_log_t $logpath
   57  sudo blockdev --setra 0 /dev/xvda1
   58  echo 'ACTION=="add|change", KERNEL=="xvda1", ATTR{bdi/read_ahead_kb}="0"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules
   59  /dev/mapper/my_vol /var/lib/mongodb xfs noatime,noexec 0 0
   60  sudo chown mongod:mongod /data /journal /log
   61  sudo chmod 777 /data /journal /log
   62  sudo chmod 777 /data /journal /logsudo ln -s /journal /data/journal
   63  ls
   64  sudo ln -s /journal /data/journal
   65  sudo chmod 400 /data /journal /logsudo ln -s /journal /data/journal
   66  sudo service mongod start
   67  systemctl status mongod.service
   68  sudo systemctl start mongod.service
   69  systemctl status mongod.service
   70  sudo -u mongod /usr/bin/mongod -f /etc/mongod1.conf
   71  sudo vi etc/mongod.conf
   72  history

【问题讨论】:

  • 考虑到历史,我建议看看 Atlas。维护 mongodb 需要一定的系统管理背景,这可能会导致相当长的学习曲线。命令 71 看起来很有希望,但没有提示您在配置中更改了什么,并且更改后您没有尝试使用它。
  • 不幸的是,我在此之后使用的内容不取决于我。我有一个使用 sudo mongod --storageEnginewiredTiger --dbpath /data --bind_ip_all 的版本,然后在另一个实例/localhost 上运行 mongo。但是,一旦我关闭我的实例,它就会全部关闭。即使我 ssh 出类似于PM2 保持 api 服务器运行的方式,您是否知道保持打开状态的方法?

标签: linux mongodb amazon-web-services amazon-ec2 centos7


【解决方案1】:

我让它工作了。

sudo mongod --storageEngine wiredTiger --dbpath /data --bind_ip_all 运行应用程序。

sudo chkconfig mongod on 这使它在后台永久运行。

说实话,最终版本与上面的版本有些不同,但不幸的是,我无法弄清楚还有哪些其他变化使它起作用。

【讨论】:

  • 或者这个:mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
【解决方案2】:

这个问题的救星在这里:https://askubuntu.com/a/1103513/765684
以防万一有人像我一样通过谷歌搜索首先到达这里。

【讨论】:

    猜你喜欢
    • 2018-09-26
    • 2012-07-16
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2020-01-20
    • 2015-07-14
    相关资源
    最近更新 更多