环境:
OS:Centos 7
mongodb:4.4.22
部署情况如下:
192.168.1.109:27001 s1分片(单节点的副本集)
192.168.1.109:28001 s2分片(单节点的副本集)
192.168.1.109:29001 s3分片(单节点的副本集)
192.168.1.109:30001 配置服务器(单节点副本集)
192.168.1.109:40001 路由服务器
####################部署s1副本集分片服务器######################
1.下载相应的版本
https://www.mongodb.com/download-center/community
我这里下载的是mongodb-linux-x86_64-rhel70-4.4.22.tgz
2.创建目录
[root@test services]# mkdir -p /usr/local/services
[root@test services]# mkdir -p /home/middle/mongodb_s1/data
[root@test services]# mkdir -p /home/middle/mongodb_s1/log
[root@test services]# mkdir -p /home/middle/mongodb_s1/key
[root@test services]# mkdir -p /home/middle/mongodb_s1/conf
[root@test services]# mkdir -p /home/middle/mongodb_s1/run
3.安装
[root@test soft]# tar -xvf mongodb-linux-x86_64-rhel70-4.4.22.tgz
[root@test soft]# mv mongodb-linux-x86_64-rhel70-4.4.22 /usr/local/services/mongodb_s1
4.产生秘钥验证(先不做)
[root@test key]# cd /home/middle/mongodb_s1/key
[root@test key]# openssl rand -base64 741 >>keyfile
[root@test key]# chmod 700 keyfile
这里每个副本集s1,s2,s3可以共用一个keyfile
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongodb_s2/key/
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongodb_s3/key/
5.生成日志文件(配置文件中指定了,提前创建)
每个s1分片服务器上都执行
[root@test key]#echo>/home/middle/mongodb_s1/log/mongodb.log
6.创建配置文件 mongo.cnf
每个s1分片服务器上都执行,需要修改相应的ip和端口
vi /home/middle/mongodb_s1/conf/mongo.cnf
port=27001
fork=true
dbpath=/home/middle/mongodb_s1/data
logpath=/home/middle/mongodb_s1/log/mongodb.log
pidfilepath=/home/middle/mongodb_s1/run/27001.pid
bind_ip=192.168.1.109,127.0.0.1
logappend=true
shardsvr=true
replSet=s1
oplogSize=16384
logRotate=reopen
##keyFile=/home/middle/mongodb_s1/key/keyfile
##auth=true
7.启动s1的
/usr/local/services/mongodb_s1/bin/mongod -f /home/middle/mongodb_s1/conf/mongo.cnf
8.初始化s1
在s1副本集的其中一台机器上执行即可
[root@localhost bin]# /usr/local/services/mongodb_s1/bin/mongo 192.168.1.109:27001
use admin
config={_id:'s1',members:[{_id:0,host:'192.168.1.109:27001'}]}
rs.initiate(config)
9.查看副本集s1集群状态
rs.status()
rs.conf()
另外s2,s3副本集也安装上面的步骤进行操作,将s1替换成s2,s3,同时注意ip和端口的修改.
登录查看集群情况
/usr/local/services/mongodb_s2/bin/mongo 192.168.1.109:28001
/usr/local/services/mongodb_s3/bin/mongo 192.168.1.109:29001
####################部署配置服务器######################
1.创建如下目录
[root@test services]# mkdir -p /usr/local/services
[root@test services]# mkdir -p /home/middle/mongo_config/data
[root@test services]# mkdir -p /home/middle/mongo_config/log
[root@test services]# mkdir -p /home/middle/mongo_config/key
[root@test services]# mkdir -p /home/middle/mongo_config/conf
[root@test services]# mkdir -p /home/middle/mongo_config/run
2.解压安装
每个副本集服务器上都执行
[root@test soft]# tar -xvf mongodb-linux-x86_64-rhel70-4.4.22.tgz
[root@test soft]# mv mongodb-linux-x86_64-rhel70-4.4.22 /usr/local/services/mongo_config
3.生成日志文件
[root@localhost soft]#echo>/home/middle/mongo_config/log/mongodb.log
4.产生秘钥验证(先不做)
[root@test key]# cd /home/middle/mongo_config/key
[root@test key]# openssl rand -base64 741 >>keyfile
[root@test key]# chmod 700 keyfile
可以使用与其他副本集同样的keyfile
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongo_config/key/
5.创建配置文件
在conf目录下创建配置文件
vi /home/middle/mongo_config/conf/mongo.cnf
[root@localhost conf]# more mongo.cnf
port=30001
fork=true
dbpath=/home/middle/mongo_config/data
logpath=/home/middle/mongo_config/log/mongodb.log
pidfilepath=/home/middle/mongo_config/run/30001.pid
bind_ip=192.168.1.109,127.0.0.1
logappend=true
oplogSize=16384
logRotate=reopen
configsvr=true
replSet=configrs
6.启动
每个副本集服务器上都执行
/usr/local/services/mongo_config/bin/mongod -f /home/middle/mongo_config/conf/mongo.cnf
7.初始化副本集
在副本集的其中一台机器上执行即可
[root@localhost bin]# /usr/local/services/mongo_config/bin/mongo 192.168.1.109:30001
use admin
config={_id:'configrs',members:[{_id:0,host:'192.168.1.109:30001'}]}
rs.initiate(config)
8.查看副本集状态
rs.status()
rs.conf()
####################部署路由服务器######################
1.创建如下目录
[root@test services]# mkdir -p /usr/local/services
[root@test services]# mkdir -p /home/middle/mongo_router/data
[root@test services]# mkdir -p /home/middle/mongo_router/log
[root@test services]# mkdir -p /home/middle/mongo_router/key
[root@test services]# mkdir -p /home/middle/mongo_router/conf
[root@test services]# mkdir -p /home/middle/mongo_router/run
2.解压安装
[root@test soft]# tar -xvf mongodb-linux-x86_64-rhel70-4.4.22.tgz
[root@test soft]# mv mongodb-linux-x86_64-rhel70-4.4.22 /usr/local/services/mongo_router
3.生成日志文件
[root@localhost soft]#echo>/home/middle/mongo_router/log/mongodb.log
4.产生秘钥验证(先不做)
[root@test key]# cd /home/middle/mongo_router/key
[root@test key]# openssl rand -base64 741 >>keyfile
[root@test key]# chmod 700 keyfile
可以使用与其他副本集同样的keyfile
[root@localhost key]# cp /home/middle/mongodb_s1/key/keyfile /home/middle/mongo_router/key/
5.创建配置文件
在conf目录下创建配置文件,mongo.cnf
vi /home/middle/mongo_router/conf/mongo.cnf
[root@localhost conf]# more mongo.cnf
port=40001
fork=true
logpath=/home/middle/mongo_router/log/mongodb.log
pidfilepath=/home/middle/mongo_router/run/40001.pid
configdb=configrs/192.168.1.109:30001
bind_ip=192.168.1.109,127.0.0.1
6.启动
/usr/local/services/mongo_router/bin/mongos -f /home/middle/mongo_router/conf/mongo.cnf
注意这里是使用mongos命令启动,而不是mongod
7.登录查看
/usr/local/services/mongo_router/bin/mongo 192.168.1.109:40001
mongos> show dbs
admin 0.000GB
config 0.000GB
################配置分片服务器#############################
在路由服务器上进行登录
1.配置分片服务器
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。
登录路由服务器(192.168.1.109:40001)
[root@pxc01 bin]# /usr/local/services/mongo_router/bin/mongo 192.168.1.109:40001
mongos> use admin
switched to db admin
sh.addShard("s1/192.168.1.109:27001")
sh.addShard("s2/192.168.1.109:28001")
sh.addShard("s3/192.168.1.109:29001")
sh.status()
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("654b21aa04789a98cfffd524")
}
shards:
{ "_id" : "s1", "host" : "s1/192.168.1.109:27001", "state" : 1 }
{ "_id" : "s2", "host" : "s2/192.168.1.109:28001", "state" : 1 }
{ "_id" : "s3", "host" : "s3/192.168.1.109:29001", "state" : 1 }
active mongoses:
"4.4.22" : 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>
mongos> db.shards.find()
{ "_id" : "s1", "host" : "s1/192.168.1.109:27001", "state" : 1 }
{ "_id" : "s2", "host" : "s2/192.168.1.109:28001", "state" : 1 }
{ "_id" : "s3", "host" : "s3/192.168.1.109:29001", "state" : 1 }
######################提前创建库和表##################################
mongos> use admin
mongos> db.runCommand({enablesharding:"db_pushmsg" })
mongos> db.runCommand({"shardcollection":"db_pushmsg.app_message_all","key":{"_id":"hashed"}})