mongodb分片集群搭建
分片(sharding)是MongoDB用来将大型集合水平分割到不同服务器(或者复制集)上所采用的方法。
1:分片集群组成
分片集群由以下3个服务组成:
- Shards Server:每个shard由一个或多个mongod进程组成,用于存储数据。
- Router Server: 数据库集群的请求入口,所有请求都通过Router(mongos)进行协调,不需要在应用程序添加一个路由选择器,Router(mongos)就是一个请求分发中心它负责把应用程序的请求转发到对应的Shard服务器上。
- Config Server: 配置服务器。存储所有数据库元信息(路由、分片)的配置。
2:搭建过程
节点1:
192.168.111.139机器上操作如下:
tar -xvf mongodb-linux-x86_64-rhel70-5.0.5.tgz mv mongodb-linux-x86_64-rhel70-5.0.5.tgz mongo_shard_cluster mkdir /data/cluster/config/logs -p
切到mongo_shard_cluster目录,添加配置文件config.conf
# 数据库文件位置 dbpath=/data/cluster/config #日志文件位置 logpath=/data/cluster/config/logs/config.log # 以追加方式写入日志 logappend=true # 是否以守护进程方式运行 fork=true bind_ip=0.0.0.0 port=17017 # 表示是一个配置服务器 configsvr=true #配置服务器副本集名称 replSet=configsvr
启动节点
./bin/mongod -config config.conf
节点2:
192.168.111.140机器上操作如下:
tar -xvf mongodb-linux-x86_64-rhel70-5.0.5.tgz mv mongodb-linux-x86_64-rhel70-5.0.5.tgz mongo_shard_cluster mkdir /data/cluster/config/logs -p
切到mongo_shard_cluster目录,添加配置文件config.conf
# 数据库文件位置 dbpath=/data/cluster/config #日志文件位置 logpath=/data/cluster/config/logs/config.log # 以追加方式写入日志 logappend=true # 是否以守护进程方式运行 fork=true bind_ip=0.0.0.0 port=17017 # 表示是一个配置服务器 configsvr=true #配置服务器副本集名称 replSet=configsvr
启动节点
./bin/mongod -config config.conf
节点3:
192.168.111.141服务器上操作如下
tar -xvf mongodb-linux-x86_64-rhel70-5.0.5.tgz mv mongodb-linux-x86_64-rhel70-5.0.5.tgz mongo_shard_cluster mkdir /data/cluster/config/logs -p
切到mongo_shard_cluster目录,添加配置文件config.conf
# 数据库文件位置
dbpath=/data/cluster/config
#日志文件位置
logpath=/data/cluster/config/logs/config.log
# 以追加方式写入日志
logappend=true
# 是否以守护进程方式运行
fork=true
bind_ip=0.0.0.0
port=17017
# 表示是一个配置服务器
configsvr=true
#配置服务器副本集名称
replSet=configsvr
启动节点
./bin/mongod -config config.conf
确保上面三个节点都已经正常运行
#######进入任意节点的mongo shell并添加配置节点集群,注意这里必须使用admin库进行操作######
./mongo --port 17017 use admin var cfg ={"_id":"configsvr", "members":[ {"_id":1,"host":"192.168.111.139:17017"}, {"_id":2,"host":"192.168.111.140:17017"}, {"_id":3,"host":"192.168.111.141:17017"}] }; rs.initiate(cfg)