环境准备
系统版本 windows server 2008 r2
五台服务器:192.168.4.135/136/137/138/139
安装包: mongodb-win32-x86_64-2008plus-ssl-3.4.10-signed
服务器规划
服务器135 | 服务器136 | 服务器137 | 服务器138 | 服务器139 |
---|---|---|---|---|
mongos server | mongos server | config server | config server | config server |
shard1 server | shard2 server | shard3 server | shard4 server | shard5 server |
shard5 server | shard1 server | shard2 server | shard3 server | shard4 server |
shard4 server | shard5 server | shard1 server | shard2 server | shard3 server |
端口分配
mongos:27017
config:21000
shard1:27001
shard2:27002
shard3:27003
shard4:27004
shard5:27005
下载安装包
https://www.mongodb.com/download-center#community
创建相关目录
- 根据服务器的规范,分别在对应的服务器上建立conf、mongos、config、shard1、shard2、shard3、shard4、shard5等目录,因为mongos不存储数据,只需要建立日志文件目录即可。
mkdir -p /data/conf
mkdir -p /data/mongos/log
mkdir -p /data/config/data
mkdir -p /data/config/log
mkdir -p /data/shard1/data
mkdir -p /data/shard1/log
mkdir -p /data/shard2/data
mkdir -p /data/shard2/log
mkdir -p /data/shard3/data
mkdir -p /data/shard3/log
mkdir -p /data/shard4/data
mkdir -p /data/shard4/log
mkdir -p /data/shard5/data
mkdir -p /data/shard5/log
配置环境变量
- 为了后续方便操作,配置mongodb的环境变量
MONGODB_HOME=C:\Program Files\MongoDB\Server\3.4
path=%MONGO_HOME%/bin
查看mongodb版本信息mongod -v 输出版本信息表明配置环境变量成功
集群配置
1. config server配置服务器
- 在服务器137、138、139上配置以下内容
dbpath=C:\\mongodb\\data\\config\\data
logpath=C:\\mongodb\\log\\config.log
pidfilepath=C:\\mongodb\\pid\\config.pid
directoryperdb=true
logappend=true
replSet=config
port=21000
configsvr=true
journal=true
- 将config server配置成windows Service
mongod -f C:\mongodb\data\conf\config.conf --serviceName MongoConfig --serviceDisplayName MongoConfig --install
- 登录任意一台配置服务器,初始化配置副本集
#连接
mongo 192.168.4.137:21000
#config变量
config = {
... _id : "config",
... members : [
... {_id : 0, host : "192.168.4.137:21000" },
... {_id : 1, host : "192.168.4.138:21000" },
... {_id : 2, host : "192.168.4.139:21000" }
... ]
... }
#初始化副本集
rs.initiate(config)
#查看分区状态
rs.status();
其中,”_id” : “configs”应与配置文件中配置的 replicaction.replSetName 一致,”members” 中的 “host” 为三个节点的ip和port
这样配置服务器就配置好了
2. 配置分片、副本集
- 分片和副本集配置文件
dbpath=C:\\mongodb\\data\\shard1
logpath=C:\\mongodb\\log\\shard1.log
pidfilepath=C:\\mongodb\\pid\\shard.pid
directoryperdb=true
logappend=true
replSet=shard1
port=27001
shardsvr=true
journal=true
replSet为副本集的名字,同一副本集这个值要相同,其他分片副本集配置文件同理
- 将shard server配置成windows Service
mongod -f C:\mongodb\data\shard\shard.conf --serviceName MongoShard --serviceDisplayName MongoShard --install
- 登录任意一台配置服务器,初始化分片副本集
mongo 192.168.4.136:27001
#使用admin数据库
use admin
#定义副本集配置
config = {
... _id : "shard1",
... members : [
... {_id : 0, host : "192.168.4.135:27001" },
... {_id : 1, host : "192.168.4.136:27001" },
... {_id : 2, host : "192.168.4.137:27001" }
... ]
... }
#初始化副本集配置
rs.initiate(config);
#查看分区状态
rs.status();
其他分片配置同理
3、配置路由服务器 mongos
以下配置在服务器135、136上执行
注意:先启动配置服务器和分片服务器,后启动路由实例
- 配置文件如下
configdb=config/192.168.4.137:27000,192.168.4.138:27000,192.168.4.139:27000
pidfilepath=C:\\mongodb\\pid\\route.pid
port=27017
logpath=C:\\mongodb\\log\\route.log
logappend=true
- 将mongos server配置成windows Service
mongos -f C:\mongodb\data\route\route.conf --serviceName MongoRoute --serviceDisplayName MongoRoute --install
- 启用分片
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。
登陆任意一台mongos
mongo 192.168.4.135:27017
#使用admin数据库
use admin
#串联路由服务器与分配副本集
db.runCommand({addshard:"shard1/192.168.4.135:27001,192.168.4.136:27001,192.168.4.137:27001"})
db.runCommand({addshard:"shard2/192.168.4.136:27002,192.168.4.137:27002,192.168.4.138:27002"})
db.runCommand({addshard:"shard3/192.168.4.137:27003,192.168.4.138:27003,192.168.4.139:27003"})
db.runCommand({addshard:"shard4/192.168.4.135:27004,192.168.4.138:27004,192.168.4.139:27004"})
db.runCommand({addshard:"shard5/192.168.4.135:27005,192.168.4.136:27005,192.168.4.139:27005"})
#查看集群状态
sh.status()
集群搭建完毕