MongoDB

MongoDB

MongoDB集群搭建:副本+分片

默认分类weillee 发表了文章 • 0 个评论 • 176 次浏览 • 2019-03-08 15:43 • 来自相关话题

环境规划服务器规划 192.168.3.167                    192.168.3.168                    192.168.3.170 mongos                       ...查看全部
环境规划服务器规划
192.168.3.167                    192.168.3.168                    192.168.3.170
mongos                             mongos                              mongos
config server                     config server                       config server
shard server1 主节点         shard server1 副节点           shard server1 仲裁
shard server2 仲裁            shard server2 主节点           shard server2 副节点
shard server3 副节点         shard server3 仲裁              shard server3 主节点
端口分配:
mongos:20000 
config:27017
shard1:27001 
shard2:27002 
shard3:27003
 
配置yum源并安装mongodb3.6
cat > /etc/yum.repos.d/mongodb-org-3.6.repo << EOF
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
EOF

yum install mongodb-org -y
目录创建:
分别在每台机器建立conf、mongos、config、shard1、shard2、shard3目录,因为mongos不存储数据,只需要建立日志文件目录即可
配置服务:
可以根据业务需求创建相应目录,此文档按yum安装所产生的/etc/mongo.ocnf文件默认配置,如果自行创建记得修改目录权限
chown -R mongod:mongod /var/lib/mongo
vim /etc/mongod.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: csReplSet
sharding:
clusterRole: configsvr
启动所有的mongo config server服务
mongod --config /etc/mongod.conf

 副本服务登录任意一台配置服务器,初始化配置副本集
mongo --port 27017
#创建配置
config = {
_id : "csReplSet",
members : [
{_id : 1, host : "192.168.3.167:27017" },
{_id : 2, host : "192.168.3.168:27017" },
{_id : 3, host : "192.168.3.170:27017" }
]
}
#初始化副本集
rs.initiate(config)
#查看状态
rs.status()

其中,"_id" : " csReplSet "应与配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 为三个节点的 ip 和 port
 
分片服务:
配置分片副本集(三台机器)
1.设置第一个分片副本集
vim /etc/shard1.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/shard1.log
storage:
dbPath: /var/lib/mongo/shard1/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/shard1.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27001
bindIp: 0.0.0.0
maxIncomingConnections: 20000
replication:
replSetName: shard1
sharding:
clusterRole: shardsvr

#启动所有的shard1 server
mongod --config /etc/shard1.conf

#登陆任意一台shard1服务器,初始化副本集
mongo --port 27001
use admin
#定义副本集配置
config = {
_id : "shard1",
members : [
{_id : 1, host : "192.168.3.167:27001",priority:2 },
{_id : 2, host : "192.168.3.168:27001",priority:1 },
{_id : 3, host : "192.168.3.170:27001",arbiterOnly: true }
]
}
#初始化副本集配置
rs.initiate(config);

#查看分区状态
rs.status()

====================
#配置第二个分片和副本集
vim /etc/shard2.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/shard2.log
storage:
dbPath: /var/lib/mongo/shard2/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/shard2.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27002
bindIp: 0.0.0.0
maxIncomingConnections: 20000
replication:
replSetName: shard2
sharding:
clusterRole: shardsvr

#启动所有的shard2 server
mongod --config /etc/shard2.conf

#登陆任意一台非仲裁节点服务器,初始化副本集
mongo --port 27002
use admin

#定义副本集配置
config = {
_id : "shard2",
members : [
{_id : 1, host : "192.168.3.167:27002",arbiterOnly: true },
{_id : 2, host : "192.168.3.168:27002",priority:2 },
{_id : 3, host : "192.168.3.170:27002",priority:1 }
]
}
#初始化副本集配置
rs.initiate(config);

#查看分区状态
rs.status()

#配置第三个分片和副本集
vim /etc/shard3.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/shard3.log
storage:
dbPath: /var/lib/mongo/shard3/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/shard3.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27003
bindIp: 0.0.0.0
maxIncomingConnections: 20000
replication:
replSetName: shard3
sharding:
clusterRole: shardsvr

#启动所有的shard3 server
mongod --config /etc/shard3.conf

#初始化副本集配置
rs.initiate(config)

#查看分区状态
rs.status()

路由服务:
配置路由服务器 mongos
先启动配置服务器和分片服务器,后启动路由实例启动路由实例:(三台机器)
vim /etc/mongos.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongos.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 20000
bindIp: 0.0.0.0
maxIncomingConnections: 20000
sharding:
configDB: csReplSet/192.168.3.167:27017,192.168.3.168:27017,192.168.3.170:27017

#注意监听的配置服务器,只能有1个或者3个 csReplSet为配置服务器的副本集名字
configDB: csReplSet/192.168.3.167:21000, 192.168.3.168:21000, 192.168.3.170:21000

#启动路由服务器
mongos --config /etc/mongos.conf

#检查状态
netstat -tunlp | grep mongo
tcp 0 0 0.0.0.0:27001 0.0.0.0:* LISTEN 8810/mongod
tcp 0 0 0.0.0.0:27002 0.0.0.0:* LISTEN 6962/mongod
tcp 0 0 0.0.0.0:27003 0.0.0.0:* LISTEN 12671/mongod tcp 0 0 0.0.0.0:20000 0.0.0.0:* LISTEN 13577/mongos tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 10328/mongod
启用分片
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效
#登录其中的一台路由节点,手动启用分片
mongo --port 20000
use admin
#添加分片到mongos
sh.addShard("shard1/192.168.3.167:27001,192.168.3.168:27001,192.168.3.170:27001")
sh.addShard("shard2/192.168.3.167:27002,192.168.3.168:27002,192.168.3.170:27002")
sh.addShard("shard3/192.168.3.167:27003,192.168.3.168:27003,192.168.3.170:27003")

#查看集群状态
sh.status()

MongoDB集群搭建:副本+分片

默认分类weillee 发表了文章 • 0 个评论 • 176 次浏览 • 2019-03-08 15:43 • 来自相关话题

环境规划服务器规划 192.168.3.167                    192.168.3.168                    192.168.3.170 mongos                       ...查看全部
环境规划服务器规划
192.168.3.167                    192.168.3.168                    192.168.3.170
mongos                             mongos                              mongos
config server                     config server                       config server
shard server1 主节点         shard server1 副节点           shard server1 仲裁
shard server2 仲裁            shard server2 主节点           shard server2 副节点
shard server3 副节点         shard server3 仲裁              shard server3 主节点
端口分配:
mongos:20000 
config:27017
shard1:27001 
shard2:27002 
shard3:27003
 
配置yum源并安装mongodb3.6
cat > /etc/yum.repos.d/mongodb-org-3.6.repo << EOF
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
EOF

yum install mongodb-org -y
目录创建:
分别在每台机器建立conf、mongos、config、shard1、shard2、shard3目录,因为mongos不存储数据,只需要建立日志文件目录即可
配置服务:
可以根据业务需求创建相应目录,此文档按yum安装所产生的/etc/mongo.ocnf文件默认配置,如果自行创建记得修改目录权限
chown -R mongod:mongod /var/lib/mongo
vim /etc/mongod.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: csReplSet
sharding:
clusterRole: configsvr
启动所有的mongo config server服务
mongod --config /etc/mongod.conf

 副本服务登录任意一台配置服务器,初始化配置副本集
mongo --port 27017
#创建配置
config = {
_id : "csReplSet",
members : [
{_id : 1, host : "192.168.3.167:27017" },
{_id : 2, host : "192.168.3.168:27017" },
{_id : 3, host : "192.168.3.170:27017" }
]
}
#初始化副本集
rs.initiate(config)
#查看状态
rs.status()

其中,"_id" : " csReplSet "应与配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 为三个节点的 ip 和 port
 
分片服务:
配置分片副本集(三台机器)
1.设置第一个分片副本集
vim /etc/shard1.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/shard1.log
storage:
dbPath: /var/lib/mongo/shard1/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/shard1.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27001
bindIp: 0.0.0.0
maxIncomingConnections: 20000
replication:
replSetName: shard1
sharding:
clusterRole: shardsvr

#启动所有的shard1 server
mongod --config /etc/shard1.conf

#登陆任意一台shard1服务器,初始化副本集
mongo --port 27001
use admin
#定义副本集配置
config = {
_id : "shard1",
members : [
{_id : 1, host : "192.168.3.167:27001",priority:2 },
{_id : 2, host : "192.168.3.168:27001",priority:1 },
{_id : 3, host : "192.168.3.170:27001",arbiterOnly: true }
]
}
#初始化副本集配置
rs.initiate(config);

#查看分区状态
rs.status()

====================
#配置第二个分片和副本集
vim /etc/shard2.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/shard2.log
storage:
dbPath: /var/lib/mongo/shard2/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/shard2.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27002
bindIp: 0.0.0.0
maxIncomingConnections: 20000
replication:
replSetName: shard2
sharding:
clusterRole: shardsvr

#启动所有的shard2 server
mongod --config /etc/shard2.conf

#登陆任意一台非仲裁节点服务器,初始化副本集
mongo --port 27002
use admin

#定义副本集配置
config = {
_id : "shard2",
members : [
{_id : 1, host : "192.168.3.167:27002",arbiterOnly: true },
{_id : 2, host : "192.168.3.168:27002",priority:2 },
{_id : 3, host : "192.168.3.170:27002",priority:1 }
]
}
#初始化副本集配置
rs.initiate(config);

#查看分区状态
rs.status()

#配置第三个分片和副本集
vim /etc/shard3.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/shard3.log
storage:
dbPath: /var/lib/mongo/shard3/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/shard3.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27003
bindIp: 0.0.0.0
maxIncomingConnections: 20000
replication:
replSetName: shard3
sharding:
clusterRole: shardsvr

#启动所有的shard3 server
mongod --config /etc/shard3.conf

#初始化副本集配置
rs.initiate(config)

#查看分区状态
rs.status()

路由服务:
配置路由服务器 mongos
先启动配置服务器和分片服务器,后启动路由实例启动路由实例:(三台机器)
vim /etc/mongos.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongos.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 20000
bindIp: 0.0.0.0
maxIncomingConnections: 20000
sharding:
configDB: csReplSet/192.168.3.167:27017,192.168.3.168:27017,192.168.3.170:27017

#注意监听的配置服务器,只能有1个或者3个 csReplSet为配置服务器的副本集名字
configDB: csReplSet/192.168.3.167:21000, 192.168.3.168:21000, 192.168.3.170:21000

#启动路由服务器
mongos --config /etc/mongos.conf

#检查状态
netstat -tunlp | grep mongo
tcp 0 0 0.0.0.0:27001 0.0.0.0:* LISTEN 8810/mongod
tcp 0 0 0.0.0.0:27002 0.0.0.0:* LISTEN 6962/mongod
tcp 0 0 0.0.0.0:27003 0.0.0.0:* LISTEN 12671/mongod tcp 0 0 0.0.0.0:20000 0.0.0.0:* LISTEN 13577/mongos tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 10328/mongod
启用分片
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效
#登录其中的一台路由节点,手动启用分片
mongo --port 20000
use admin
#添加分片到mongos
sh.addShard("shard1/192.168.3.167:27001,192.168.3.168:27001,192.168.3.170:27001")
sh.addShard("shard2/192.168.3.167:27002,192.168.3.168:27002,192.168.3.170:27002")
sh.addShard("shard3/192.168.3.167:27003,192.168.3.168:27003,192.168.3.170:27003")

#查看集群状态
sh.status()
MongoDB