首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单机上的MongoDB集群- RHEL8

单机上的MongoDB集群- RHEL8
EN

Stack Overflow用户
提问于 2022-04-11 06:07:57
回答 1查看 63关注 0票数 0

我按照下面的指南在单个RHEL8VM上创建一个MongoDB副本集。我使用了指南中提到的以下命令。

代码语言:javascript
运行
复制
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,如下所述。

代码语言:javascript
运行
复制
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

在此之后,我按照指南中的指示使用了以下命令。

代码语言:javascript
运行
复制
sudo mkdir -p /usr/local/var/mongodb/node1
sudo mkdir -p /usr/local/var/log/mongodb/node1

我也为node2node3做了同样的事情。

该指南的下一步是sudo mongod -f node1.conf,它没有工作,因为mongod没有安装在系统上。因此,我使用mongod安装了yum

之后,上面的命令起作用了,我能够在这三个节点上配置一个MongoDB副本集。但是,在重新启动机器端口之后,27011不再是活动的,我无法访问副本集。默认端口27017 (在mongodb安装上创建的配置文件中提到)是活动的,因此我可以使用MongoDB。

sudo mongod -f node1.conf (node2和node3 )也允许我再次输入副本集。然而,这种情况必须在每次关机后重复。

如何将副本集作为正常的单神服务运行?我们也非常感谢一位能为我指明正确方向的指南。

**最新情况

我尝试按照下面的答案添加一个新服务。但是,我得到了这个错误。

代码语言:javascript
运行
复制
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'.

我按照指示更改了EnvironmentPIDFile变量。此外,还更改了密钥文件的所有权。我尝试了添加和不添加ExecStartPre部件。结果仍然是一样的。我相信node1.conf文件不会有问题,因为sudo mongod -f node1.conf命令可以很好地工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-11 08:00:19

首先,一般情况是:在一台机器上运行所有的单神进程。在这种情况下,还需要设置processManagement.pidFilePath

代码语言:javascript
运行
复制
processManagement:
  pidFilePath: /var/run/node1/mongod.pid

否则,所有进程都将使用相同的默认文件/var/run/mongodb/mongod.pid,并且存在冲突。

现在,关于你的实际问题:

将其安装为服务。最简单的方法是检查现有的服务如下:

代码语言:javascript
运行
复制
$ 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

编辑复制的文件并根据您的喜好更改它。主要是你需要换行

代码语言:javascript
运行
复制
Environment="OPTIONS=-f /etc/mongod.conf"
PIDFile=/var/run/mongodb/mongod.pid

代码语言:javascript
运行
复制
Environment="OPTIONS=-f .../node1.conf"
PIDFile=/var/run/node1/mongod.pid

增加这些行也是有用的:

代码语言:javascript
运行
复制
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

然后,您就可以使用

代码语言:javascript
运行
复制
systemctl enable mongod_node1

对于手动启动(如果需要),请使用systemctl start mongod_node1

只是一些注解:

不要直接编辑服务文件/usr/lib/systemd/system/mongod.service。如果您运行MongoDB包的更新,那么安装程序将将该文件恢复为默认文件。

MongoDB在用户mongod下运行,因此您还必须更改密钥文件的所有权:

代码语言:javascript
运行
复制
 chown mongod:mongod /usr/local/var/mongodb/pki/replicaset-keyfile
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71823309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档