MongoDBV3.0.7版本(shard+replica)集群的搭建及验证
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)配置及服务启动:
#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)配置及服务启动:
#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
更多详情见请继续阅读下一页的精彩内容:
|
评论暂时关闭