centos mongodb集群搭建方法
导读:CentOS下MongoDB集群搭建指南(副本集与分片集群) MongoDB集群分为**副本集(Replica Set)和分片集群(Sharded Cluster)**两种常见模式。副本集通过数据冗余实现高可用,分片集群通过水平分片提升数据...
CentOS下MongoDB集群搭建指南(副本集与分片集群)
MongoDB集群分为**副本集(Replica Set)和分片集群(Sharded Cluster)**两种常见模式。副本集通过数据冗余实现高可用,分片集群通过水平分片提升数据处理能力。以下是CentOS系统下的详细搭建步骤:
一、准备工作
- 系统要求:CentOS 7及以上版本,所有节点时间同步(建议使用NTP服务)。
- 依赖安装:确保系统已安装
wget、vim等基础工具。 - 网络配置:所有节点之间网络互通,关闭防火墙或开放MongoDB默认端口(27017、27018、27019等)。
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent sudo firewall-cmd --reload
二、安装MongoDB
在所有集群节点上执行以下步骤安装MongoDB:
- 添加MongoDB官方YUM源:
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:
sudo yum install -y mongodb-org - 启动服务并设置开机自启:
sudo systemctl start mongod sudo systemctl enable mongod
三、搭建副本集集群(高可用)
副本集是MongoDB的核心高可用方案,至少需要3个节点(1主2从)。
1. 配置每个节点的mongod.conf
编辑/etc/mongod.conf,添加以下配置(以节点1为例,节点2、3需修改port和dbPath):
storage:
dbPath: /var/lib/mongo/node1 # 数据存储路径
journal:
enabled: true
systemLog:
destination: file
path: /var/log/mongodb/node1.log # 日志路径
logAppend: true
net:
bindIp: 0.0.0.0 # 允许所有IP连接
port: 27017 # 节点端口
replication:
replSetName: rs0 # 副本集名称(所有节点必须一致)
2. 创建数据目录并启动服务
sudo mkdir -p /var/lib/mongo/node1
sudo chown -R mongod:mongod /var/lib/mongo/node1
sudo systemctl start mongod
sudo systemctl enable mongod
3. 初始化副本集
连接到任意节点(如节点1),执行初始化命令:
mongo --host 192.168.1.10 --port 27017 # 替换为节点1的IP
在Mongo shell中输入:
rs.initiate({
_id: "rs0",
members: [
{
_id: 0, host: "192.168.1.10:27017" }
, # 节点1
{
_id: 1, host: "192.168.1.11:27017" }
, # 节点2
{
_id: 2, host: "192.168.1.12:27017" }
# 节点3
]
}
)
4. 验证副本集状态
rs.status()
正常状态应显示所有节点为SECONDARY(从节点)或PRIMARY(主节点)。
四、搭建分片集群(水平扩展)
分片集群适用于大规模数据存储,由配置服务器(Config Server)、分片服务器(Shard)、**路由服务器(mongos)**三部分组成。
1. 配置配置服务器(3节点)
配置服务器存储集群元数据,必须为副本集。
- 编辑
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 # 指定为配置服务器角色 - 启动服务:
sudo systemctl start mongod sudo systemctl enable mongod - 初始化副本集:
输入:mongo --host 192.168.1.10 --port 27019rs.initiate({ _id: "configReplSet", configsvr: true, members: [ { _id: 0, host: "192.168.1.10:27019" } , { _id: 1, host: "192.168.1.11:27019" } , { _id: 2, host: "192.168.1.12:27019" } ] } )
2. 配置分片服务器(3节点/分片)
分片服务器存储实际数据,每个分片建议为副本集。
- 编辑
mongod.conf(每个分片节点,如分片1的节点1):storage: dbPath: /var/lib/mongo/shard1 # 数据路径 systemLog: destination: file path: /var/log/mongodb/shard1.log logAppend: true net: bindIp: 0.0.0.0 port: 27018 # 分片端口 sharding: clusterRole: shardsvr # 指定为分片角色 - 启动服务:
sudo systemctl start mongod sudo systemctl enable mongod
3. 配置路由服务器(mongos)
mongos是应用与集群的接口,负责请求路由。
- 编辑
mongos.conf:systemLog: destination: file path: /var/log/mongodb/mongos.log logAppend: true net: bindIp: 0.0.0.0 port: 27017 # mongos端口 sharding: configDB: configReplSet/192.168.1.10:27019,192.168.1.11:27019,192.168.1.12:27019 # 配置服务器副本集 - 启动服务:
mongos -f /etc/mongos.conf
4. 添加分片到集群
连接到mongos,执行以下命令:
mongo --host 192.168.1.10 --port 27017
输入:
sh.addShard("shard1/192.168.1.20:27018,192.168.1.21:27018,192.168.1.22:27018") # 替换为分片1的节点IP
5. 启用数据库和集合分片
- 启用数据库分片:
sh.enableSharding("mydatabase") # 替换为目标数据库 - 对集合分片(需指定分片键,如
id字段):use mydatabase db.mycollection.createIndex({ id: 1 } ) # 创建索引(分片键必须有索引) sh.shardCollection("mydatabase.mycollection", { id: 1 } ) # 分片集合
6. 验证集群状态
sh.status()
正常状态应显示配置服务器、分片服务器、路由服务器均已连接,且分片键配置正确。
五、常见问题排查
- 连接失败:检查防火墙是否开放对应端口,节点IP是否可达。
- 副本集初始化失败:确保所有节点配置一致,且至少3个节点。
- 分片集群无法添加分片:确认配置服务器副本集已初始化,mongos配置正确。
通过以上步骤,即可在CentOS系统上搭建MongoDB副本集或分片集群,满足高可用或水平扩展需求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos mongodb集群搭建方法
本文地址: https://pptw.com/jishu/743556.html
