mongodb配置文件_mongodb 分片集群搭建

前言

分片技术是解决如今大数据量,高吞吐量的数据库应用对传统关系型单机数据库造成巨大压力的有效手段,mongodb不同于mysql等数据库需要依赖第三方中间件来实现sharding,增加架构复杂度和运维难度,mongodb内建分片技术,并且已经做到相当高的自动化

架构模型

16926c26b8ec29fe5b4e38afc9c71ac5.png

由图可知mongodb分片集群由三部分组成mongos,config servers,shard nodes

环境准备

IDIPROLE
110.0.60.79mongos
210.0.60.81config servers
310.0.61.82shard node1
410.0.61.83shard node2

搭建步骤

本次搭建在centos7.5上

以下步骤依次在所有节点执行

解压数据库tgz软件包至/usr/local下

tar -C /usr/local -zxvf mongodb-linux-x86_64-rhel70-4.0.19.tgz

创建mongod用户组与用户:

groupadd mongoduseradd mongod -g mongod

创建软连接

ln -s /usr/local/mongodb-linux-x86_64-rhel70-4.0.19 /usr/local/mongo

设置环境变量

vi /root/.bash_profilevi /home/mongod/.bash_profilePATH = $PATH:/usr/local/mongo/binsource .bash_profile

或者直接将二进制文件cp过去:

sudo cp /path/to/the/mongodb-directory/bin/* /usr/local/bin/

分片集群各部分组件搭建顺序(程序启动顺序也是如此):

1.“config server” -> 2. “shard” -> 3. “mongos”

配置config server

config server为元数据服务器,存储分片集群元数据与配置信息,3.4版本后需部署为副本集,本次部署资源有限,在当前节点上,部署三个config server实例组成副本集

创建数据目录:

mkdir -p /mongodb/configserver/db1mkdir -p /mongodb/configserver/db2mkdir -p /mongodb/configserver/db3chown -R mongod.mongod /mongodb/configserver/db1chown -R mongod.mongod /mongodb/configserver/db2chown -R mongod.mongod /mongodb/configserver/db3

创建日志目录:

mkdir -p /mongodb/configserver/log1chown -R mongod.mongod /mongodb/configserver/log1mkdir -p /mongodb/configserver/log2chown -R mongod.mongod /mongodb/configserver/log2mkdir -p /mongodb/configserver/log3chown -R mongod.mongod /mongodb/configserver/log3

创建配置文件:

在/mongodb/configserver目录下创建三个配置文件:mongo_configserver1.conf,mongo_configserver2.conf,mongo_configserver3.conf

模板参考:

vim /mongodb/configserver/mongo_configserver1.conf

# 数据文件路径dbpath = /mongodb/configserver/db1# 日志文件路径logpath = /mongodb/configserver/log1/configserver1.log# 端口(21001,21002,21003)port = 21001# 绑定ipbind_ip = 0.0.0.0# 是否以守护进程方式运行fork = true# 副本集名称replSet = rs-config# 定义当前实例为config serverconfigsvr = true# 是否开启认证#auth = true# 认证密钥文件#keyFile = /mongodb/configserver/db1/mongokeyfile

依次启动config server:

mongod -f /mongodb/configserver/mongo_configserver1.confmongod -f /mongodb/configserver/mongo_configserver2.confmongod -f /mongodb/configserver/mongo_configserver3conf

初始化副本集:

mongo --port 21001config = {_id : "rs-config",members : [{_id : 0, host : "10.0.60.81:21001" }, {_id : 1, host : "10.0.60.81:21002" }, {_id : 2, host : "10.0.60.81:21003"}]}rs.initiate(rs-config)rs.status()

配置shard nodes:

shard节点用于保存真实数据,以下步骤依次操作在10.0.60.82,10.0.60.83

创建数据目录:

mkdir -p /mongodb/shardserver/db1mkdir -p /mongodb/shardserver/db2mkdir -p /mongodb/shardserver/db3chown -R mongod.mongod /mongodb/shardserver/db1chown -R mongod.mongod /mongodb/shardserver/db2chown -R mongod.mongod /mongodb/shardserver/db3

创建日志目录:

mkdir -p /mongodb/shardserver/log1chown -R mongod.mongod /mongodb/shardserver/log1mkdir -p /mongodb/shardserver/log2chown -R mongod.mongod /mongodb/shardserver/log2mkdir -p /mongodb/shardserver/log3chown -R mongod.mongod /mongodb/shardserver/log3

创建配置文件:

在/mongodb/shardserver下创建三个配置文件:mongo_shardserver1.conf,mongo_shardserver2.conf,mongo_shardserver3.conf

模板参考:

vim /mongodb/shardserver/mongo_shardserver1.conf

# 数据文件路径dbpath = /mongodb/shardserver/db1# 日志文件路径logpath = /mongodb/shardserver/log1/shardserver1.log# 端口(27017,27018,27019)port = 27017# 绑定ipbind_ip = 0.0.0.0# 是否以守护进程方式运行fork = true# 副本集名称replSet = rsshard# 定义当前实例为shard servershardsvr= true# 是否开启认证#auth = true# 认证密钥文件#keyFile = /mongodb/shardserver/db1/mongokeyfile

初始化副本集:

mongo --port 27017config = {_id : "rs-shard2", members : [ {_id : 0, host : "10.0.60.83:27017" },  {_id : 1, host : "10.0.60.83:27018" },  {_id : 2, host : "10.0.60.83:27019"} ] }rs.initiate(config)rs.status()

配置mongos

mongos模块作为分片集群的查询入口,不存储真实数据,因此不需要创建数据目录,只需创建日志路径:

mkdir -p /mongodb/mongos/logsudo chown -R mongod:mongod  /mongodb/mongos

vim /mongodb/mongos/mongos.conf

# 日志文件路径logpath = /mongodb/mongos/log/mongos.log# 端口port = 20001# 绑定ipbind_ip = 0.0.0.0# 是否以守护进程方式运行fork = true#监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字configdb = rs-config/10.0.60.81:21001,10.0.60.81:21002,10.0.60.81:21003

启动mongos:

mongos -f /mongodb/mongos/mongos.conf

添加shard集群:

sh.addShard("rs-shard1/10.0.60.82:27017,10.0.60.82:27018,10.0.60.82:27019")sh.addShard("rs-shard2/10.0.60.83:27017,10.0.60.83:27018,10.0.60.83:27019")

查看分片集群配置:

sh.status()

1e8f7d91e4890b32afb65cd9969df808.png

开启分片功能

对指定数据库启用分片:

mongos>sh.enableSharding("test")

对指定库下指定集合(test.test)进行分片,id为片键,需要有索引,1为分片类型(范围分片:1,哈希分片:hashed)

mongos>sh.shardCollection("test.test",{"id":1})

分片集群安全认证:

mongos节点创建用户:

mongo --port 20001use admindb.createUser({user: "sysadmin",pwd: "123456",roles: ['clusterAdmin','dbAdminAnyDatabase','userAdminAnyDatabase','readWriteAnyDatabase','backup','restore']})

在mongos节点创建keyfile认证文件,文件大小为756字符,需要小于1024字符

openssl rand -base64 756 > /mongodb/mongos/mongokeyfilechown -R mongod.mongod /mongodb/mongos/mongokeyfilechmod 600 /mongodb/mongos/mongokeyfile

创建成功后依次拷贝至集群所有节点mongodb部署目录下

依次修改mongo_configserver.conf,mongo_shard.conf,mongos.conf

auth=truekeyfile = mongodb部署目录/mongokeyfile

最后依次重启所有节点:config server->shard node->mongos

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值