MongoDBV3.0.7版本(shard+replica)集群的搭建及验证


集群的模块介绍:

从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server、mongs、 shard、replica set: Config Server:用来存放集群的元数据,也就是存放所有分片的的配置数据,mongos第一次启动就需要连接configServer读取相关数据,当configServer有数据进行更新时,也会主动推送消息到所有的mongos上,在3.0.7版本中,官方是建议配置3份的Config Server,以便挂掉两台时,业务还能够正常运转。   mongs:Mongodb集群的的请求入口,能否自动实现数据的分布式分发,生产环境中建议部署在应用服务器上。   shard:分片就比如是将一张大表分散在几个不同的shard中,实现数据分布式存储。 replica set:主要是对每个分片进行冗余,生产环境中,一般将将副本集配置在三个节点上,两份副本、一份仲裁。  

更多MongoDB相关内容可以看看以下的有用链接: 

MongoDB 3.0 正式版发布下载 

CentOS编译安装MongoDB

CentOS 编译安装 MongoDB与mongoDB的php扩展

CentOS 6 使用 yum 安装MongoDB及服务器端配置

Ubuntu 13.04下安装MongoDB2.4.3

MongoDB入门必读(概念与实战并重)

Ubunu 14.04下MongoDB的安装指南

《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]

Nagios监控MongoDB分片集群服务实战

基于CentOS 6.5操作系统搭建MongoDB服务  

  • 环境规划:

  • 端口及安装路径规划:

用途 IP 端口 备注 安装路径
ConfigeServer 172.16.16.120 30001   /db/configS
172.16.16.121 30001 /db/configS
172.16.16.122 30001 /db/configS
share1 172.16.16.124 40001 Shard1主节点 /db/shard1
172.16.16.125 40001 Shard1副本节点 /db/shard1
172.16.16.126 40001 Shard1仲裁节点 /db/shard1
share2 172.16.16.125 40002 Shard2主节点 /db/shard2
172.16.16.126 40002 Shard2副本节点 /db/shard2
172.16.16.131 40002 Shard2仲裁节点 /db/shard2
share3 172.16.16.126 40003 Shard3主节点 /db/shard3
172.16.16.131 40003 Shard3副本节点 /db/shard3
172.16.16.124 40003 Shard3仲裁节点 /db/shard3
share4 172.16.16.121 40004 Shard4主节点 /db/shard4
172.16.16.124 40004 Shard4副本节点 /db/shard4
172.16.16.125 40004 Shard4仲裁节点 /db/shard4
mongos 172.16.16.124 50001 生产环境中一般直接部署在应用端 /db/mongos
172.16.16.125 50001 /db/mongos
172.16.16.126 50001 /db/mongos
172.16.16.131 50001 /db/mongos
 
  • 搭建步骤:

  • 下载mongodb(https://www.mongodb.org/downloads ) ,目前的最新版本是 3.0.7

opt]# tar zxvf mongodb-linux-x86_64-rhel55-3.0.7.gz
opt]# mv mongodb-linux-x86_64-rhel55-3.0.7 /usr/local/mongodb
opt]# useradd  mongo
opt]# passwd  mongo
Changing password for user mongo.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
opt]# chown -R mongo:mongo /usr/local/mongodb/
opt]# chown -R  mongo:mongo /db
  • 创建相关模块存放路径:

  • 创建configeServer目录(172.16.16.120/121/122):

#mkdir -p  /db/configS/data & mkdir -p /db/configS/log (存放ConfigServer的数据、日志)
  • 创建shard1目录(172.16.16.124/125/126):

#mkdir -p  /db/shard1/data & mkdir -p /db/shard1/log (存放shard1的数据、日志)
  • 创建shard2目录(172.16.16.125/126/131 ):

#mkdir -p  /db/shard2/data & mkdir -p /db/shard2/log (存放shard2的数据、日志)
  • 创建shard3目录(172.16.16.126/131/124 ):

#mkdir -p  /db/shard3/data & mkdir -p /db/shard3/log (存放shard3的数据、日志)
  • 创建shard4目录(172.16.16.131/124/125 ):

#mkdir -p  /db/shard4/data & mkdir -p /db/shard4/log (存放shard4的数据、日志)
  • 创建mongos目录(172.16.16.124/125/126/131)

#mkdir -p  /db/mongos/log (由于mongos只做路由使用,不存数据,所以只需要建立log目录)
  •  模块配置及启动:

  • configServer(172.16.16.120/121/122)配置及服务启动:

编写 /usr/local/mongodb/conf/configServer.conf,将参数都放在该文件中:  
#vim /usr/local/mongodb/conf/configServer.conf
#!/bin/bash
systemLog:
   destination: file
   path: "/db/configS/log/configServer.log"                                #日志存储位置
   logAppend: true
storage:
   journal:                                                                #journal配置
      enabled: true
   dbPath: "/db/configS/data"                                              #数据文件存储位置
   directoryPerDB: true                                                    #是否一个库一个文件夹    
   engine: wiredTiger                                                      #数据引擎   
   wiredTiger:                                                             #WT引擎配置
      engineConfig:
         cacheSizeGB: 6                                                    #设置为6G,默认为物理内存的一半
         directoryForIndexes: true                                         #是否将索引也按数据库名单独存储
         journalCompressor: zlib
      collectionConfig:                                                    #表压缩配置
         blockCompressor: zlib
      indexConfig:                                                         #索引配置
         prefixCompression: true
net:                                                                       #端口配置
   port: 30001                                                             #另外两台需要分别修改为30002、30003
processManagement:                                                         #配置启动管理方式
   fork: true
sharding:                                                                  #分片配置
   clusterRole: configsvr                                                  #分片角色
启动configServer:
conf]$ /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/configServer.conf
  • mongos(172.16.16.124/125/126/131)配置及服务启动:

编写mongos.conf,将参数都放在该文件中(4台配置文件都一样):
#vim /usr/local/mongodb/conf/mongos.conf
#!/bin/bash
systemLog:
    destination: file
    path: "/db/mongos/log/mongos.log"
    logAppend: true
net:
    port: 50001
sharding:
    configDB: 172.16.16.120:30001,172.16.16.121:30001,172.16.16.122:30001
processManagement:
    fork: true
启动mongos:应保证集群中设备的时间都是一样的,否则启动mongos会报错,若不相同,可先搭建一套NTP服务器
conf]$ /usr/local/mongodb/bin/mongos -f /usr/local/mongodb/conf/mongos.conf
  • shard1分片+副本集配置及服务启动(172.16.16.124/125/126 ):

#vim /usr/local/mongodb/conf/shard1.conf
#!/bin/bash
systemLog:
   destination: file                                                                     
   path: "/db/shard1/log/shard1.log"                                #日志存储位置
   logAppend: true
storage:                                                                                   
   journal:                                                         #journal配置
      enabled: true
   dbPath: "/db/shard1/data"                                        #数据文件存储位置
   directoryPerDB: true                                             #是否一个库一个文件夹    
   engine: wiredTiger                                               #数据引擎   
   wiredTiger:                                                      #WT引擎配置
      engineConfig:
         cacheSizeGB: 6                                             #设置为6G,默认为物理内存的一半
         directoryForIndexes: true                                  #是否将索引也按数据库名单独存储
         journalCompressor: zlib
      collectionConfig:                                             #表压缩配置
         blockCompressor: zlib
      indexConfig:                                                  #索引配置
         prefixCompression: true
net:                                                                #端口配置
   port: 40001
processManagement:                                                  #配置启动管理方式
   fork: true
sharding:                                                           #分片配置
   clusterRole: shardsvr
replication:                                                        
   replSetName: shard1                                              #配置副本集名称
  启动shard1 mongod:
conf]$ /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf
  •  shard2分片+副本集配置及服务启动(172.16.16.125/126/131 ):

复制代码
#vim /usr/local/mongodb/conf/shard2.conf
#!/bin/bash
systemLog:
   destination: file                                                                     
   path: "/db/shard2/log/shard2.log"                                #日志存储位置
   logAppend: true
storage:                                                                                   
   journal:                                                         #journal配置
      enabled: true
   dbPath: "/db/shard2/data"                                        #数据文件存储位置
   directoryPerDB: true                                             #是否一个库一个文件夹    
   engine: wiredTiger                                               #数据引擎   
   wiredTiger:                                                      #WT引擎配置
      engineConfig:
         cacheSizeGB: 6                                             #设置为6G,默认为物理内存的一半
         directoryForIndexes: true                                  #是否将索引也按数据库名单独存储
         journalCompressor: zlib
      collectionConfig:                                             #表压缩配置
         blockCompressor: zlib
      indexConfig:                                                  #索引配置
         prefixCompression: true
net:                                                                #端口配置
   port: 40002
processManagement:                                                  #配置启动管理方式
   fork: true
sharding:                                                           #分片配置
   clusterRole: shardsvr
replication:                                                       
   #oplogSizeMB: 
   replSetName: shard2                                              #配置副本集名称

启动shard2 mongod:

conf]$ /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard2.conf
  • shard3分片+副本集配置及服务启动(172.16.16.126/131/124 ):

#vim /usr/local/mongodb/conf/shard3.conf
#!/bin/bash
systemLog:
   destination: file                                                                     
   path: "/db/shard3/log/shard3.log"                                #日志存储位置
   logAppend: true
storage:                                                                                   
   journal:                                                         #journal配置
      enabled: true
   dbPath: "/db/shard3/data"                                        #数据文件存储位置
   directoryPerDB: true                                             #是否一个库一个文件夹    
   engine: wiredTiger                                               #数据引擎   
   wiredTiger:                                                      #WT引擎配置
      engineConfig:
         cacheSizeGB: 6                                             #设置为6G,默认为物理内存的一半
         directoryForIndexes: true                                  #是否将索引也按数据库名单独存储
         journalCompressor: zlib
      collectionConfig:                                             #表压缩配置
         blockCompressor: zlib
      indexConfig:                                                  #索引配置
         prefixCompression: true
net:                                                                #端口配置
   port: 40003
processManagement:                                                  #配置启动管理方式
   fork: true
sharding:                                                           #分片配置
   clusterRole: shardsvr
replication:                                                              
   #oplogSizeMB: 
   replSetName: shard3                                              #配置副本集名称
  启动shara3 mongod:
conf]$ /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard3.conf
  • shard4分片+副本集配置及服务启动(172.16.16.131/124/125 ):

#vim /usr/local/mongodb/conf/shard4.conf
#!/bin/bash
systemLog:
   destination: file                                                                     
   path: "/db/shard4/log/shard4.log"                                #日志存储位置
   logAppend: true
storage:                                                                                   
   journal:                                                         #journal配置
      enabled: true
   dbPath: "/db/shard4/data"                                        #数据文件存储位置
   directoryPerDB: true                                             #是否一个库一个文件夹    
   engine: wiredTiger                                               #数据引擎   
   wiredTiger:                                                      #WT引擎配置
      engineConfig:
         cacheSizeGB: 6                                             #设置为6G,默认为物理内存的一半
         directoryForIndexes: true                                  #是否将索引也按数据库名单独存储
         journalCompressor: zlib
      collectionConfig:                                             #表压缩配置
         blockCompressor: zlib
      indexConfig:                                                  #索引配置
         prefixCompression: true
net:                                                                #端口配置
   port: 40004
processManagement:                                                  #配置启动管理方式
   fork: true
sharding:                                                           #分片配置
   clusterRole: shardsvr
replication:                                                          
   #oplogSizeMB: 
   replSetName: shard4                                              #复制集名
  启动shara4 mongod:
conf]$ /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard4.conf

更多详情见请继续阅读下一页的精彩内容

  • 1
  • 2
  • 下一页

相关内容