centos

MongoDB集群在CentOS上如何搭建

小樊
53
2025-03-19 14:14:32
栏目: 云计算

在CentOS上搭建MongoDB集群涉及多个步骤,包括安装MongoDB、配置MongoDB实例、设置副本集和分片等。以下是一个详细的步骤指南:

1. 环境准备

sudo yum update -y
sudo yum install -y wget vim

2. 安装MongoDB

添加MongoDB的YUM源

创建mongodb.repo文件并添加MongoDB的仓库。

echo "[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc" | sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo

安装MongoDB

使用YUM安装MongoDB及其相关组件。

sudo yum install -y mongodb-org

3. 配置MongoDB实例

配置Config Server

Config Server的配置文件位于/etc/mongod.conf,我们需要对其进行修改以启用Config Server。

sudo vim /etc/mongod.conf

在文件中添加以下内容(注意调整路径与服务器信息):

storage:
  dbPath: /var/lib/mongo/configdb
systemLog:
  destination: file
  path: /var/log/mongodb/configdb.log
  logAppend: true
net:
  bindIp: 0.0.0.0
  port: 27019
sharding:
  clusterRole: configsvr

创建数据库目录并启动Config Server。

sudo mkdir -p /var/lib/mongo/configdb
sudo chown mongod:mongod /var/lib/mongo/configdb
sudo systemctl start mongod
sudo systemctl enable mongod

配置Shard

为每个分片配置一个单独的MongoDB实例。修改/etc/mongod.conf文件:

sudo vim /etc/mongod.conf

在文件中添加以下内容(注意调整路径与服务器信息):

storage:
  dbPath: /var/lib/mongo/shard_1
systemLog:
  destination: file
  path: /var/log/mongodb/shard_1.log
  logAppend: true
net:
  bindIp: 0.0.0.0
  port: 27018
sharding:
  clusterRole: shardsvr

创建数据库目录并启动Shard。

sudo mkdir -p /var/lib/mongo/shard_1
sudo chown mongod:mongod /var/lib/mongo/shard_1
sudo systemctl start mongod
sudo systemctl enable mongod

重复以上步骤,配置多个Shard(例如shard_2, shard_3等)。

4. 配置Mongos

Mongos作为路由器运行。首先要安装Mongos并配置其/etc/mongos.conf

sudo vim /etc/mongos.conf

内容如下:

sharding:
  configDB: config_server_ip:27019
net:
  bindIp: 0.0.0.0
  port: 27017

启动Mongos服务。

sudo mongos --config /etc/mongos.conf

5. 添加Shard到集群

在MongoDB shell中运行以下命令:

mongo --host mongos_ip:27017
sh.addShard("shard_1_ip:27018")
sh.addShard("shard_2_ip:27018")
sh.addShard("shard_3_ip:27018")

6. 监控与管理

在MongoDB中,你可以使用MongoDB自带的监控工具来查看集群的状态。例如,通过运行以下命令获取集群状态:

sh.status()

0
看了该问题的人还看了