【发布时间】: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