阅读量:5
在Debian上部署MongoDB集群步骤
一、准备工作
- 系统更新:确保Debian系统为最新状态,避免依赖冲突。
sudo apt update && sudo apt upgrade -y - 安装依赖包:MongoDB需要
libcurl4、openssl等库支持。sudo apt install -y libcurl4 openssl liblzma5 gnupg
二、添加MongoDB官方仓库
根据Debian版本选择对应仓库(以Debian 11 Bullseye为例):
- 导入MongoDB GPG密钥(验证软件包完整性):
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add - - 创建仓库列表文件:
echo "deb [arch=amd64,arm64] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list - 更新包索引:
sudo apt update
三、安装MongoDB
使用APT安装MongoDB官方版本(推荐6.0及以上):
sudo apt install -y mongodb-org
四、配置MongoDB副本集(基础集群)
副本集是MongoDB高可用的核心组件,至少需要3个节点(1主2从)。
1. 配置每个节点的mongod.conf
编辑/etc/mongod.conf(主节点/从节点均需配置),关键参数如下:
net:
port: 27017 # 监听端口(默认27017)
bindIp: 0.0.0.0 # 允许所有IP访问(生产环境建议限制为节点IP)
storage:
dbPath: /var/lib/mongodb # 数据存储路径(需提前创建:sudo mkdir -p /var/lib/mongodb)
journal:
enabled: true # 启用日志(确保数据持久化)
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log # 日志路径
replication:
replSetName: rs0 # 副本集名称(所有节点必须一致)
2. 启动MongoDB服务
在所有节点上启动服务并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
3. 初始化副本集
连接到任意节点(如主节点)的MongoDB Shell,执行初始化命令:
mongo --host <主节点IP> --port 27017
在Shell中输入以下命令(替换为实际节点IP):
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "<主节点IP>:27017" },
{ _id: 1, host: "<从节点1IP>:27017" },
{ _id: 2, host: "<从节点2IP>:27017" }
]
})
初始化成功后,会返回"ok": 1。
4. 验证副本集状态
rs.status()
正常状态应显示所有节点为PRIMARY(主节点)或SECONDARY(从节点)。
五、配置高可用(可选:添加仲裁者)
仲裁者不存储数据,仅参与投票,用于奇数节点集群的故障转移。
- 启动仲裁节点:
mongod --port 27018 --dbpath /data/db3 --replSet rs0 --arbiterOnly true - 添加仲裁者到副本集:
连接到主节点Shell,执行:rs.addArb("<仲裁节点IP>:27018")
六、配置分片集群(可选:扩展存储)
若需要水平扩展数据存储,需配置分片集群(包含分片、配置服务器、路由服务器)。
1. 配置Config Server(配置服务器)
Config Server存储集群元数据(如分片规则),需3个节点组成副本集。
- 编辑配置文件(
/etc/mongodb/config.conf):systemLog: destination: file logAppend: true path: /var/log/mongodb/config.log storage: dbPath: /data/configdb journal: enabled: true processManagement: fork: true pidFilePath: /var/run/mongodb/mongod.pid net: port: 21000 bindIp: 0.0.0.0 replication: replSetName: cfgReplSet - 启动Config Server:
sudo mongod --config /etc/mongodb/config.conf - 初始化副本集:
输入命令:mongo --host--port 21000 rs.initiate({ _id: "cfgReplSet", configsvr: true, members: [ { _id: 0, host: ":21000" }, { _id: 1, host: ":21000" }, { _id: 2, host: ":21000" } ] })
2. 配置Mongos(路由服务器)
Mongos负责路由请求到对应分片,需指向Config Server。
- 编辑配置文件(
/etc/mongodb/mongos.conf):systemLog: destination: file logAppend: true path: /var/log/mongodb/mongos.log processManagement: fork: true pidFilePath: /var/run/mongodb/mongos.pid net: port: 20000 bindIp: 0.0.0.0 sharding: configDB: cfgReplSet/:21000, :21000, :21000 - 启动Mongos:
sudo mongos --config /etc/mongodb/mongos.conf
3. 添加分片到集群
- 连接到Mongos:
mongo --host--port 20000 - 添加分片(分片需为副本集,替换为实际分片名称和节点IP):
sh.addShard("rs0/<分片节点1IP>:27017,<分片节点2IP>:27017,<分片节点3IP>:27017")
4. 启用分片
- 启用数据库分片:
sh.enableSharding("myDatabase") - 指定集合分片键(如按
user_id字段哈希分片):sh.shardCollection("myDatabase.myCollection", { user_id: "hashed" })
5. 验证分片状态
sh.status()
七、注意事项
- 安全配置:
- 启用认证:在
mongod.conf中添加security.authorization: enabled,并创建用户。 - 绑定IP:生产环境应将
bindIp设置为节点实际IP,避免暴露给公网。
- 启用认证:在
- 防火墙设置:开放27017(MongoDB)、21000(Config Server)、20000(Mongos)端口。
- 备份策略:定期使用
mongodump备份数据,避免数据丢失。 - 监控维护:使用MongoDB Atlas、Prometheus+Granafa等工具监控集群性能。
以上步骤覆盖了Debian上MongoDB集群的基础部署(副本集)及高可用/扩展配置(分片集群)。根据实际业务需求调整节点数量、分片规则等参数。