CentOS MongoDB集群配置步骤是什么
导读:CentOS 上搭建 MongoDB 分片集群的标准步骤 一 架构与端口规划 组件与角色 Config Server(CSRS):存储集群元数据,建议3 节点副本集,端口示例:27019。 Shard:实际存储数据,每个分片为副本集,常...
CentOS 上搭建 MongoDB 分片集群的标准步骤
一 架构与端口规划
- 组件与角色
- Config Server(CSRS):存储集群元数据,建议3 节点副本集,端口示例:27019。
- Shard:实际存储数据,每个分片为副本集,常用端口示例:27018。
- mongos:查询路由,入口服务,常用端口:27017,可按需部署多个。
- 典型端口与目录
- 配置服务器:dbPath /var/lib/configdb,日志 /var/log/mongodb/configsvr.log
- 分片服务器:dbPath /var/lib/mongo,日志 /var/log/mongodb/mongod.log
- mongos:日志 /var/log/mongodb/mongos.log
- 系统前置
- 建议开启 NTP 时间同步、关闭 SELinux、配置 /etc/hosts 解析、放通防火墙端口(见下文命令)。
二 安装 MongoDB
- 添加 YUM 源(以 4.4 为例,可按需调整版本)
- 新建文件:/etc/yum.repos.d/mongodb-org-4.4.repo
- 内容:
- [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 yum install -y mongodb-org
- 建议创建 mongod 系统用户并调整目录属主(/var/lib/mongo、/var/log/mongodb 等)。
三 部署与初始化
-
- 配置服务器副本集(CSRS)
- 配置文件示例(/etc/mongod.conf 或分文件):
- storage.dbPath: /var/lib/configdb
- net.port: 27019;net.bindIp: 0.0.0.0(或内网 IP)
- replication.replSetName: configReplSet
- sharding.clusterRole: configsvr
- 启动每个节点后连接任一节点初始化:
- mongo --port 27019
- rs.initiate({ _id: “configReplSet”, configsvr: true, members: [ { _id: 0, host: “cfg1_ip:27019” } , { _id: 1, host: “cfg2_ip:27019” } , { _id: 2, host: “cfg3_ip:27019” } ] } )
-
- 分片副本集(示例创建 3 个分片,每个分片 3 节点)
- 分片配置文件示例(/etc/mongod-shardX.conf):
- storage.dbPath: /var/lib/mongo
- net.port: 27018;net.bindIp: 0.0.0.0
- replication.replSetName: shardX(X=1,2,3)
- sharding.clusterRole: shardsvr
- 启动各分片节点后,连接任一节点初始化(以 shard1 为例):
- mongo --port 27018
- rs.initiate({ _id: “shard1”, members: [ { _id: 0, host: “s1a_ip:27018” } , { _id: 1, host: “s1b_ip:27018” } , { _id: 2, host: “s1c_ip:27018” } ] } )
- 重复为 shard2、shard3 执行相同步骤(注意 replSetName 与端口不同)。
-
- mongos 路由
- 启动命令(示例):
- mongos --configdb configReplSet/cfg1_ip:27019,cfg2_ip:27019,cfg3_ip:27019 --port 27017 --bind_ip 0.0.0.0
- 连接 mongos:mongo --port 27017
- 添加分片:
- sh.addShard(“shard1/s1a_ip:27018,s1b_ip:27018,s1c_ip:27018”)
- sh.addShard(“shard2/s2a_ip:27018,s2b_ip:27018,s2c_ip:27018”)
- sh.addShard(“shard3/s3a_ip:27018,s3b_ip:27018,s3c_ip:27018”)
- 启用数据库与集合分片(示例库 test,集合 t1,按 id 哈希分片):
- sh.enableSharding(“test”)
- sh.shardCollection(“test.t1”, { id: “hashed” } )
-
- 验证
- 查看分片状态:sh.status()
- 查看各副本集:rs.status()(在各分片/配置服务器上执行)。
四 防火墙与系统优化
- 防火墙放通(CentOS 7+ firewalld)
- 放通端口:27017(mongos)、27018(shard)、27019(configsvr)
- 命令示例:
- firewall-cmd --zone=public --add-port=27017/tcp --permanent
- firewall-cmd --zone=public --add-port=27018/tcp --permanent
- firewall-cmd --zone=public --add-port=27019/tcp --permanent
- firewall-cmd --reload
- 系统资源与内核参数(示例)
- limits.conf:
-
- soft nofile 1048576;* hard nofile 1048576
-
- soft nproc 524288;* hard nproc 524288
-
- 可选:/etc/profile 增加 ulimit -s 1024;必要时安装 numactl 并校验 ulimit -a 输出。
- limits.conf:
五 生产环境安全与运维要点
- 安全加固
- 启用 keyFile 实现内部认证(各 mongod/mongos 一致),并开启 authorization: enabled;key 文件权限 600,属主 mongod:mongod。
- 建议启用 TLS/SSL 加密节点间与客户端通信;限制 bindIp 为内网网段;为管理员设置强口令与最小权限角色。
- 高可用与容量
- Config Server 与每个 Shard 均使用 3 节点副本集;可按需部署多个 mongos 作为入口,避免单点。
- 合理选择 分片键(shard key) 与 hashed 分片 策略,避免热点与跨分片排序/聚合性能劣化;上线前评估均衡器与迁移窗口。
- 监控与备份
- 常用工具:mongostat、mongotop、MongoDB Compass;结合 日志轮转 与 备份策略(如文件系统快照/逻辑备份)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS MongoDB集群配置步骤是什么
本文地址: https://pptw.com/jishu/788010.html
