centos

如何配置CentOS上的MongoDB副本集

小樊
47
2025-06-04 03:19:24
栏目: 云计算

配置CentOS上的MongoDB副本集涉及几个步骤,包括安装MongoDB、配置MongoDB实例以及初始化副本集。以下是一个详细的步骤指南:

1. 安装MongoDB

首先,确保你的CentOS系统是最新的,并且已经安装了必要的依赖包。

sudo yum update -y
sudo yum install -y mongodb-org

2. 配置MongoDB实例

默认情况下,MongoDB会以单节点模式运行。为了配置副本集,你需要启动多个MongoDB实例,每个实例可以运行在不同的端口上。

启动第一个实例(Primary)

编辑第一个实例的配置文件(通常是 /etc/mongod.conf),添加或修改以下内容:

net:
  port: 27017

storage:
  dbPath: /var/lib/mongo

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

replication:
  replSetName: rs0

然后启动这个实例:

sudo systemctl start mongod
sudo systemctl enable mongod

启动第二个实例(Secondary)

编辑第二个实例的配置文件(例如 /etc/mongod.conf),添加或修改以下内容:

net:
  port: 27018

storage:
  dbPath: /var/lib/mongo

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

replication:
  replSetName: rs0

然后启动这个实例:

sudo systemctl start mongod
sudo systemctl enable mongod

启动第三个实例(Secondary)

编辑第三个实例的配置文件(例如 /etc/mongod.conf),添加或修改以下内容:

net:
  port: 27019

storage:
  dbPath: /var/lib/mongo

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

replication:
  replSetName: rs0

然后启动这个实例:

sudo systemctl start mongod
sudo systemctl enable mongod

3. 初始化副本集

连接到其中一个MongoDB实例并初始化副本集。你可以使用 mongo shell 来完成这个操作。

mongo --port 27017

mongo shell 中,运行以下命令来初始化副本集:

rs.initiate(
  {
    _id: "rs0",
    members: [
      { _id: 0, host: "localhost:27017" },
      { _id: 1, host: "localhost:27018" },
      { _id: 2, host: "localhost:27019" }
    ]
  }
)

4. 验证副本集状态

mongo shell 中,运行以下命令来验证副本集的状态:

rs.status()

你应该能看到所有节点的状态都是 SECONDARYPRIMARY,并且副本集已经成功初始化。

5. 配置防火墙

确保你的防火墙允许MongoDB实例之间的通信。你可以使用 firewall-cmd 来添加规则:

sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
sudo firewall-cmd --permanent --zone=public --add-port=27018/tcp
sudo firewall-cmd --permanent --zone=public --add-port=27019/tcp
sudo firewall-cmd --reload

6. 配置复制选项(可选)

你可以根据需要配置更多的复制选项,例如优先级、隐藏节点等。以下是一些常见的配置选项:

cfg = rs.conf()

// 设置节点优先级
cfg.members[0].priority = 2
cfg.members[1].priority = 1
cfg.members[2].priority = 1

// 重新配置副本集
rs.reconfig(cfg)

通过以上步骤,你应该能够在CentOS上成功配置一个MongoDB副本集。

0
看了该问题的人还看了