在Linux上实现MongoDB集群,通常需要以下几个步骤:
在每个节点上安装MongoDB。你可以从MongoDB官方网站下载适合你系统的安装包,并按照官方文档进行安装。
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
在每个节点上编辑MongoDB配置文件(通常是/etc/mongod.conf),设置集群相关的参数。
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
bindIp: 0.0.0.0
port: 27017
replication:
replSetName: rs0
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
bindIp: 0.0.0.0
port: 27017
replication:
replSetName: rs0
在每个节点上启动MongoDB服务。
sudo systemctl start mongod
sudo systemctl enable mongod
连接到任意一个MongoDB实例,并初始化副本集。
mongo --host <主节点IP> --port 27017
在mongo shell中执行以下命令:
rs.initiate(
{
_id: "rs0",
members: [
{ _id: 0, host: "<主节点IP>:27017" },
{ _id: 1, host: "<从节点1IP>:27017" },
{ _id: 2, host: "<从节点2IP>:27017" }
]
}
)
在mongo shell中执行以下命令,查看副本集的状态。
rs.status()
如果你需要实现分片集群,还需要配置分片服务器和配置服务器。
在每个分片节点上安装并配置MongoDB,类似于普通节点的配置,但需要添加分片相关的配置。
配置服务器存储集群的元数据。通常需要至少三个配置服务器以实现高可用性。
sharding:
clusterRole: configsvr
storage:
dbPath: /var/lib/mongodb
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
bindIp: 0.0.0.0
port: 27019
启动配置服务器:
mongod --configsvr --replSet <配置服务器副本集名称> --dbpath /var/lib/mongodb --port 27019 --bind_ip_all
初始化配置服务器副本集:
mongo --host <配置服务器IP> --port 27019
在mongo shell中执行:
rs.initiate(
{
_id: "<配置服务器副本集名称>",
configsvr: true,
members: [
{ _id: 0, host: "<配置服务器IP>:27019" }
]
}
)
路由服务器是应用程序与分片集群之间的接口。
sharding:
configDB: <配置服务器副本集名称>/<配置服务器IP>:27019
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log
net:
bindIp: 0.0.0.0
port: 27017
启动mongos:
mongos --configdb <配置服务器副本集名称>/<配置服务器IP>:27019 --port 27017
连接到mongos,并添加分片。
mongo --host <mongosIP> --port 27017
在mongo shell中执行:
sh.addShard("<分片服务器IP>:27018")
连接到mongos,并启用数据库和集合的分片。
sh.enableSharding("<数据库名>")
sh.shardCollection("<数据库名>.<集合名>", { "<分片键>": 1 })
通过以上步骤,你可以在Linux上实现一个基本的MongoDB集群。根据实际需求,你可能还需要进行更多的配置和优化。