我按照下面的指南在单个RHEL8VM上创建一个MongoDB副本集。我使用了指南中提到的以下命令。
sudo mkdir -p /usr/local/var/mongodb/pki/
sudo su
openssl rand -base64 741 > /usr/local/var/mongodb/pki/replicaset-keyfile
chmod 400 /usr/local/var/mongodb/pki/replicaset-keyfile
然后,我创建了一个node1.conf
,如下所述。
storage:
dbPath: /usr/local/var/mongodb/node1
net:
bindIp: localhost
port: 27011
security:
authorization: enabled
keyFile: /usr/local/var/mongodb/pki/replicaset-keyfile
systemLog:
destination: file
path: /usr/local/var/log/mongodb/node1/mongod.log
logAppend: true
processManagement:
fork: true
replication:
replSetName: replicaset-example
在此之后,我按照指南中的指示使用了以下命令。
sudo mkdir -p /usr/local/var/mongodb/node1
sudo mkdir -p /usr/local/var/log/mongodb/node1
我也为node2
和node3
做了同样的事情。
该指南的下一步是sudo mongod -f node1.conf
,它没有工作,因为mongod
没有安装在系统上。因此,我使用mongod
安装了yum
。
之后,上面的命令起作用了,我能够在这三个节点上配置一个MongoDB副本集。但是,在重新启动机器端口之后,27011
不再是活动的,我无法访问副本集。默认端口27017
(在mongodb安装上创建的配置文件中提到)是活动的,因此我可以使用MongoDB。
sudo mongod -f node1.conf
(node2和node3 )也允许我再次输入副本集。然而,这种情况必须在每次关机后重复。
如何将副本集作为正常的单神服务运行?我们也非常感谢一位能为我指明正确方向的指南。
**最新情况
我尝试按照下面的答案添加一个新服务。但是,我得到了这个错误。
Apr 12 localhost.localdomain systemd[1]: mongod_node2.service: Control process exited, code=dumped status=6
Apr 12 localhost.localdomain systemd[1]: mongod_node2.service: Failed with result 'core-dump'.
我按照指示更改了Environment
和PIDFile
变量。此外,还更改了密钥文件的所有权。我尝试了添加和不添加ExecStartPre
部件。结果仍然是一样的。我相信node1.conf
文件不会有问题,因为sudo mongod -f node1.conf
命令可以很好地工作。
发布于 2022-04-11 08:00:19
首先,一般情况是:在一台机器上运行所有的单神进程。在这种情况下,还需要设置processManagement.pidFilePath
。
processManagement:
pidFilePath: /var/run/node1/mongod.pid
否则,所有进程都将使用相同的默认文件/var/run/mongodb/mongod.pid
,并且存在冲突。
现在,关于你的实际问题:
将其安装为服务。最简单的方法是检查现有的服务如下:
$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: https://docs.mongodb.org/manual
将/usr/lib/systemd/system/mongod.service
复制到/etc/systemd/system/mongod_node1.service
编辑复制的文件并根据您的喜好更改它。主要是你需要换行
Environment="OPTIONS=-f /etc/mongod.conf"
PIDFile=/var/run/mongodb/mongod.pid
至
Environment="OPTIONS=-f .../node1.conf"
PIDFile=/var/run/node1/mongod.pid
增加这些行也是有用的:
ExecStartPre=/usr/bin/mkdir -p /usr/local/var/mongodb/node1
ExecStartPre=/usr/bin/chown mongod:mongod /usr/local/var/mongodb/node1
ExecStartPre=/usr/bin/chmod 0755 /usr/local/var/mongodb/node1
ExecStartPre=/usr/bin/mkdir -p /usr/local/var/log/mongodb/node1
ExecStartPre=/usr/bin/chown mongod:mongod /usr/local/var/log/mongodb/node1
ExecStartPre=/usr/bin/chmod 0755 /usr/local/var/log/mongodb/node1
然后,您就可以使用
systemctl enable mongod_node1
对于手动启动(如果需要),请使用systemctl start mongod_node1
只是一些注解:
不要直接编辑服务文件/usr/lib/systemd/system/mongod.service
。如果您运行MongoDB包的更新,那么安装程序将将该文件恢复为默认文件。
MongoDB在用户mongod
下运行,因此您还必须更改密钥文件的所有权:
chown mongod:mongod /usr/local/var/mongodb/pki/replicaset-keyfile
https://stackoverflow.com/questions/71823309
复制相似问题