MSC 集群搭建
MSC 集群搭建
规划
10个实例:38017-38026
(1)configserver:38018-38020
3台构成的复制集(1主两从,不支持arbiter)38018-38020(复制集名字configsvr)
(2)shard节点:
sh1:38021-23 (1主两从,其中一个节点为arbiter,复制集名字sh1)
sh2:38024-26 (1主两从,其中一个节点为arbiter,复制集名字sh2)
(3) mongos:
38017
Shard节点配置过程
目录创建:
mkdir -p /data/mongodb/380{21..26}/{conf,log,data}
修改配置文件
第一组复制集搭建:21-23(1主 1从 1Arb)
cat > /data/mongodb/38021/conf/mongodb.conf <<EOF
systemLog:
destination: file
path: /data/mongodb/38021/log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /data/mongodb/38021/data
directoryPerDB: true
#engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
net:
bindIp: 10.0.50.61,127.0.0.1
port: 38021
replication:
oplogSizeMB: 2048
replSetName: sh1
sharding: //shard集群中,必须定义
clusterRole: shardsvr //定义副本集sh1在shard节点中的角色为 shardsvr,官方规定,只要是shard节点,就必须是这个角色
processManagement:
fork: true
EOF
\cp /data/mongodb/38021/conf/mongodb.conf /data/mongodb/38022/conf/
\cp /data/mongodb/38021/conf/mongodb.conf /data/mongodb/38023/conf/
sed -i 's#38021#38022#g' /data/mongodb/38022/conf/mongodb.conf
sed -i 's#38021#38023#g' /data/mongodb/38023/conf/mongodb.conf
第二组节点:24-26(1主1从1Arb)
cat > /data/mongodb/38024/conf/mongodb.conf <<EOF
systemLog:
destination: file
path: /data/mongodb/38024/log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /data/mongodb/38024/data
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
net:
bindIp: 10.0.50.61,127.0.0.1
port: 38024
replication:
oplogSizeMB: 2048
replSetName: sh2
sharding:
clusterRole: shardsvr
processManagement:
fork: true
EOF
\cp /data/mongodb/38024/conf/mongodb.conf /data/mongodb/38025/conf/
\cp /data/mongodb/38024/conf/mongodb.conf /data/mongodb/38026/conf/
sed -i 's#38024#38025#g' /data/mongodb/38025/conf/mongodb.conf
sed -i 's#38024#38026#g' /data/mongodb/38026/conf/mongodb.conf
启动所有节点,并搭建复制集
mongod -f /data/mongodb/38021/conf/mongodb.conf
mongod -f /data/mongodb/38022/conf/mongodb.conf
mongod -f /data/mongodb/38023/conf/mongodb.conf
mongod -f /data/mongodb/38024/conf/mongodb.conf
mongod -f /data/mongodb/38025/conf/mongodb.conf
mongod -f /data/mongodb/38026/conf/mongodb.conf
ps -ef |grep mongod
mongo --port 38021 admin
use admin
config = {_id: 'sh1', members: [
{_id: 0, host: '10.0.50.61:38021'},
{_id: 1, host: '10.0.50.61:38022'},
{_id: 2, host: '10.0.50.61:38023',"arbiterOnly":true}]
}
rs.initiate(config)
mongo --port 38024
use admin
config = {_id: 'sh2', members: [
{_id: 0, host: '10.0.50.61:38024'},
{_id: 1, host: '10.0.50.61:38025'},
{_id: 2, host: '10.0.50.61:38026',"arbiterOnly":true}]
}
rs.initiate(config)
config节点配置(必须是1主2从,config节点不支持Arb)
目录创建
mkdir -p /data/mongodb/380{18..20}/{conf,log,data}
修改配置文件
cat > /data/mongodb/38018/conf/mongodb.conf <<EOF
systemLog:
destination: file
path: /data/mongodb/38018/log/mongodb.conf
logAppend: true
storage:
journal:
enabled: true
dbPath: /data/mongodb/38018/data
directoryPerDB: true
#engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
net:
bindIp: 10.0.50.61,127.0.0.1
port: 38018
replication:
oplogSizeMB: 2048
replSetName: configReplSet
sharding:
clusterRole: configsvr //定义副本集configReplSet在shard节点中的角色为 configsvr,官方规定,只要是config server,就必须是这个角色
processManagement:
fork: true
EOF
\cp /data/mongodb/38018/conf/mongodb.conf /data/mongodb/38019/conf/
\cp /data/mongodb/38018/conf/mongodb.conf /data/mongodb/38020/conf/
sed -i 's#38018#38019#g' /data/mongodb/38019/conf/mongodb.conf
sed -i 's#38018#38020#g' /data/mongodb/38020/conf/mongodb.conf
启动节点,并配置复制集
mongod -f /data/mongodb/38018/conf/mongodb.conf
mongod -f /data/mongodb/38019/conf/mongodb.conf
mongod -f /data/mongodb/38020/conf/mongodb.conf
mongo --port 38018
use admin
config = {_id: 'configReplSet', members: [
{_id: 0, host: '10.0.50.61:38018'},
{_id: 1, host: '10.0.50.61:38019'},
{_id: 2, host: '10.0.50.61:38020'}]
}
rs.initiate(config)
注:configserver 可以是一个节点,官方建议复制集。configserver不能有arbiter。
新版本中,要求必须是复制集。
注:mongodb 3.4之后,虽然要求config server为replica set,但是不支持arbiter
mongos节点配置
创建目录
mongos 是没有数据的,无状态服务,不需要数据目录
mkdir -p /data/mongodb/38017/{conf,log}
配置文件
cat > /data/mongodb/38017/conf/mongos.conf <<EOF
systemLog:
destination: file
path: /data/mongodb/38017/log/mongos.log
logAppend: true
net:
bindIp: 10.0.50.61,127.0.0.1
port: 38017
sharding:
configDB: configReplSet/10.0.50.61:38018,10.0.50.61:38019,10.0.50.61:38020 //为mongos声明config server所有的节点地址信息
processManagement:
fork: true
EOF
启动mongos
mongos -f /data/mongodb/38017/conf/mongos.conf
为分片集群添加shard节点
连接到其中一个mongos(10.0.50.61),做以下配置
(1)连接到mongs的admin数据库
# su - mongod
$ mongo 10.0.50.61:38017/admin
(2)添加分片
db.runCommand( { addshard : "sh1/10.0.50.61:38021,10.0.50.61:38022,10.0.50.61:38023",name:"shard1"} )
db.runCommand( { addshard : "sh2/10.0.50.61:38024,10.0.50.61:38025,10.0.50.61:38026",name:"shard2"} )
(3)列出分片
mongos> db.runCommand( { listshards : 1 } )
(4)整体状态查看
mongos> sh.status();
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("5ff52d421f4ffe2995d90e8a")
}
shards:
{ "_id" : "shard1", "host" : "sh1/10.0.50.61:38021,10.0.50.61:38022", "state" : 1 }
{ "_id" : "shard2", "host" : "sh2/10.0.50.61:38024,10.0.50.61:38025", "state" : 1 }
active mongoses:
"3.6.20" : 1
autosplit:
Currently enabled: yes
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "config", "primary" : "config", "partitioned" : true }
mongos>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律