Mongodb集群部署文档

Mongodb集群搭建

  • 背景

创建高可用、高性能、可扩展、易伸缩的Mongodb集群需创建具有3个Shard(1 Primary,1 Secondary,1 Arbiter),3个Config Servers,3个Router。

Mongodb集群部署文档

 

在单台服务上搭建,各个端口都不相同:

Shard1

Shard2

Shard3

Config

Router

27011

27012

27013

27014

27015

27021

27022

27023

27024

27025

27031

27023

27033

27034

27035

如果有多台服务器,可安装下图指定端口,三台情况:

 

Shard1

Shard2

Shard3

Config

Router

第一台

27011

27012

27013

27014

27015

第二台

27011

27012

27013

27014

27015

第三台

27011

27012

27013

27014

27015

注意:以下步骤均是采用单台服务上部署。

 

  • 环境搭建
  1. 下载Mongodb最新安装包:mongodb-linux-x86_64-rhel62-3.2.10.tgz到临时目录,

解压:tar -zxv -f mongodb-linux-x86_64-rhel62-3.2.10.tgz -C /home/mongodb。

重命名:mv mongodb-linux-x86_64-rhel62-3.2.10 mongodb3.2。

修改/etc/profile文件:export /home/mongodb/mongodb3.2/bin,并重新生效 source /ect/profile。

  1. 创建数据文件:mkdir -p /data/mongodb/27011 /data/mongodb/27021/data/mongodb/27031进入mongodb安装目录创建配置文件目录mkdir clusting。
  2. 创建shard文件配置:vi clusting/27011.conf

port=27011

bind_ip=192.168.190.128

logpath=/data/mongodb/27011/l.log

logappend=true

pidfilepath=/data/mongodb/27011/l.pid

dbpath=/data/mongodb/27011

replSet=rs001

fork=true

创建27021.conf 27031.conf文件,与上面内容相同,只需要修改有配置的位置。

  1. 启动服务mongod -f clusting/27011.conf,同时启动27021,27031端口数据服务。
  2. 执行mongo --port 27011 --host 192.168.190.128 登录mongo服务编写配置,并初始化配置:

cfg={ _id:"rs001", members:[ {_id:0,host:'192.168.190.128:27011',priority:2}, {_id:1,host:'192.168.190.128:27021',priority:1},{_id:2,host:'192.168.190.128:27031',arbiterOnly:true}] };

rs.initiate(cfg)

执行rs.status();查看状态。如果出现error,执行:rs.slaveOk()

  1. 重复(2)(3)(4)(5)步骤,创建shard2、shard3,注意需要将replSet、_id设置为相应的rs002、rs003。至此,数据接口创建完成。
  2. 创建confing server数据目录,mkdir /data/mongodb/27014 /data/mongodb/27024 /data/mongodb/27034
  3. 配置confing server节点,vi clusting/27014.conf如下:

port=27014

bind_ip=192.168.190.128

logpath=/data/mongodb/27014/l.log

logappend=true

pidfilepath=/data/mongodb/27014/l.pid

dbpath=/data/mongodb/27014

replSet=configReplSet

fork=true

configsvr=true

创建27024.conf、27034.conf配置服务文件,内容一致,修改指定位置。

  1. 启动配置服务mongod -f clusting/27014.conf,同时启动27024、27034配置服务。
  2. 执行mongo --port 27014 --host 192.168.190.128 登录mongo服务

在mongo中执行rs.initiate( {_id: "configReplSet",configsvr: true,members: [{ _id: 0, host: "192.168.190.128:27014"},{ _id: 1, host: "192.168.190.128:27024"},{ _id: 2, host: "192.168.190.128:27034"}]} )

至此,mongodb的config server配置成功。

  1. 创建Router,mkdir /data/mongodb/27015 /data/mongodb/27025 /data/mongodb/27035
  2. 编写Router配置vi clusting/27015.conf:

port=27015

logpath=/data/mongodb/27015/l.log

pidfilepath=/data/mongodb/27015/l.pid

configdb=configReplSet/192.168.190.128:27014,192.168.190.128:27024,192.168.190.128:27034

fork=true

创建27025.conf、27035.conf的Router配置服务。

  1. 启动27015 Router服务:mongos -f clusting/27015.conf,同时启动27025、27035服务。
  2. 登录Routers服务,mongo --port 27015 --host 192.168.190.128
  3. 在Router服务中添加分片信息,顺序执行:

sh.addShard("rs001/192.168.190.128:27011,192.168.190.128:27021,192.168.190.128:27031")

sh.addShard("rs002/192.168.190.128:27012,192.168.190.128:27022,192.168.190.128:27032")

sh.addShard("rs003/192.168.190.128:27013,192.168.190.128:27023,192.168.190.128:27033")

如果出现错误,请排查/etc/hosts或其他问题。

执行: sh.enableSharding("transport")   对数据库transport进行分片操作。

执行: sh.shardCollection( "transport.kuaixin", {"_id": "hashed" } ) ,对快信collection的分配规则

执行: sh.shardCollection( "transport.lixin", {"_id": "hashed" } ) ,对快信collection的分配规则。

至此,Mongodb集群搭建完成。

执行sh.status()查看搭建状态,其中是没有显示出Arbiter节点,因为这个节点只用于投票,不存储副本数据。

注意:推荐使用3台服务器以上搭建。