【Mongodb】 Sharding Replica Sets 分片集群生产环境安装与介绍!

系统环境:Centos 6.5

官网手册:http://docs.mongodb.org/manual/

参阅资料:《Mongodb权威指南》《Mongodb实战》《深入学习Mongodb》

由上方的官方拓扑可以看出,Sharding集群成员由Shard、ConfigServer、Router组成

Shard:可以是一个实例,官方推荐生产环境使用副本集Replica Set

Config Server:为三台主机,当有1台或者2台Server当机,对于用户而言,集群还是可读写的,不过集群不会再进行Chunk分裂和迁移,直到正常恢复为止。

Router:Mongos进程,数量不进行限制,建议针对一个应用服务器只针对一个mongos进程。

下面我会进行一个模拟环境的组建,注意,实际生产环境中,每个实例都是单独的主机,每个config Server也会是单独的主机,不要陷入逻辑的思维中。

主机规划:

主机A(Shard1,由三个实例组成的Replica Sets):
10.1.2.11:27101
10.1.2.11:27102
10.1.2.11:27103
 
主机B(Shard2,由三个实例组成的Replica Sets):
10.1.2.12:27201
10.1.2.12:27202
10.1.2.12:27203
 
主机C:(三个config Server实例,一个mongos实例)
10.1.2.10:27301
10.1.2.10:27302
10.1.2.10:27303
10.1.2.10:27400(mongos)

A、B主机的操作基本一致,这里我写一遍在A上的操作。

1.

下载并解压Mongodb二进制源码包!

最新Mongodb稳定安装包下载:http://www.mongodb.org/downloads

tar xzf mongodb-linux-x86_64-2.6.4.tgz
mv mongodb-linux-x86_64-2.6.4/usr/local/mongodb

2.为每个实例创建数据目录:

mkdir -p /data/shard1_1
mkdir -p /data/shard1_1
mkdir -p /data/shard1_1

3.创建Mongodb日志及PID文件目录

mkdir /var/log/mongodb
mkdir /var/run/mongodb

4.创建Mongodb配置文件目录,及配置合理的配置文件内容。(生产环境我建议通过配置文件来控制启动参数!这步,由于我实验每个主机开了多个实例,就不用配置文件了,大家如果是生产环境,可以参考下!)

cd /usr/local/mongodb/
mkdir etc
vim etc/mongod.conf
#Filename:mongodb.conf
#Now use options:
fork = true
port = 27101
quiet = true
replSet = sharding1
dbpath = /data/mongodb   
pidfilepath = /var/run/mongodb/mongod.pid
logpath = /var/log/mongodb/mongod.log
logappend = true
journal = true

5.配置全局环境变量:

echo"PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile

执行.  /etc/profile 可立即使当前用户生效。这样的目的是为了方便执行Mongodb相关命令!

6.启动实例:

mongod --shardsvr --replSet sharding1--port 27101 --dbpath /data/shard1_1/ --pidfilepath /var/run/mongodb/sharding1_1.pid--logpath /var/log/mongodb/sharding1_1.log --logappend –fork
 
mongod --shardsvr --replSet sharding1--port 27102 --dbpath /data/shard1_2/ --pidfilepath /var/run/mongodb/sharding1_2.pid--logpath /var/log/mongodb/sharding1_2.log --logappend –fork

mongod --shardsvr --replSet sharding1--port 27103 --dbpath /data/shard1_3/ --pidfilepath /var/run/mongodb/sharding1_3.pid--logpath /var/log/mongodb/sharding1_3.log --logappend –fork

7.初始化Shard1的 Replica Set(副本集):

# mongo --port 27101
MongoDB shell version: 2.6.4
connecting to: 127.0.0.1:27101/test
> use admin
switched to db admin
>db.runCommand({"replSetInitiate" :{
... "_id":"sharding1",
... "members":[
...{"_id":1,"host":"10.1.2.11:27101"},
...{"_id":2,"host":"10.1.2.11:27102"},
...{"_id":3,"host":"10.1.2.11:27103"},
... ]}})
#执行后返回:
{
         "info": "Config now saved locally.  Shouldcome online in about a minute.",
         "ok": 1
}

8.验证Replica Sets状态:

sharding1:PRIMARY> rs.status()
{
         "set": "sharding1",
         "date": ISODate("2014-08-28T08:29:45Z"),
         "myState": 1,
         "members": [
                   {
                            "_id": 1,
                            "name": "10.1.2.11:27101",
                            "health": 1,
                            "state": 1,
                            "stateStr": "PRIMARY",
                            "uptime": 577,
                            "optime": Timestamp(1409214151, 1),
                            "optimeDate": ISODate("2014-08-28T08:22:31Z"),
                            "electionTime": Timestamp(1409214162, 1),
                            "electionDate": ISODate("2014-08-28T08:22:42Z"),
                            "self": true
                   },
                   {
                            "_id": 2,
                            "name": "10.1.2.11:27102",
                            "health": 1,
                            "state": 2,
                            "stateStr": "SECONDARY",
                            "uptime": 431,
                            "optime": Timestamp(1409214151, 1),
                            "optimeDate": ISODate("2014-08-28T08:22:31Z"),
                            "lastHeartbeat": ISODate("2014-08-28T08:29:45Z"),
                            "lastHeartbeatRecv": ISODate("2014-08-28T08:29:43Z"),
                            "pingMs": 0,
                            "syncingTo": "10.1.2.11:27101"
                   },
                   {
                            "_id": 3,
                            "name": "10.1.2.11:27103",
                            "health": 1,
                            "state": 2,
                            "stateStr": "SECONDARY",
                            "uptime": 431,
                            "optime": Timestamp(1409214151, 1),
                            "optimeDate": ISODate("2014-08-28T08:22:31Z"),
                            "lastHeartbeat": ISODate("2014-08-28T08:29:45Z"),
                            "lastHeartbeatRecv": ISODate("2014-08-28T08:29:45Z"),
                            "pingMs": 12,
                            "syncingTo": "10.1.2.11:27101"
                   }
         ],
         "ok": 1
}

B主机操作与A主机基本一致,配置完B主机后,再继续下面的操作!

主机C上的配置:

1.解压源码包

tar xzf mongodb-linux-x86_64-2.6.4.tgz
mv mongodb-linux-x86_64-2.6.4/usr/local/mongodb

2.配置config及日志目录:

mkdir -p /data/config_1
mkdir -p /data/config_2
mkdir -p /data/config_3
mkdir -p /var/log/mongodb

3.配置全局环境变量:

echo"PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile

4.启动config Server实例:

mongod --configsvr --dbpath /data/config_1/--port 27301 --logpath /var/log/mongodb/dbconfig_1.log --logappend –fork
 
mongod --configsvr --dbpath /data/config_2/--port 27302 --logpath /var/log/mongodb/dbconfig_2.log --logappend –fork
 
mongod --configsvr --dbpath /data/config_3/--port 27303 --logpath /var/log/mongodb/dbconfig_3.log --logappend –fork

5.启动mongos实例:

mongos --configdb10.1.2.10:27301,10.1.2.10:27302,10.1.2.10:27303 --port 27400 --logpath/var/log/mongodb/mongos.log --logappend –fork

注:生产环境mongos一样建议用配置文件来控制,例如:

#mongos.conf
#Options:
port =27400
fork =true
logappend= true
logpath= /var/log/mongodb/mongos.log
pidfilepath= /var/run/mongos.pid
configdb= 10.1.2.10:27301,10.1.2.10:27302,10.1.2.10:27303

6.登录mongos进程,配置Shard Cluster:

# mongo --port 27400 admin
MongoDB shell version: 2.6.4
connecting to: 127.0.0.1:27400/admin
mongos>
mongos>db.runCommand({addshard:"sharding1/10.1.2.11:27101,10.1.2.11:27102,10.1.2.11:27103"});
{ "shardAdded" :"sharding1", "ok" : 1 }
mongos>db.runCommand({addshard:"sharding2/10.1.2.12:27201,10.1.2.12:27202,10.1.2.12:27203"});
{ "shardAdded" :"sharding2", "ok" : 1 }

7.验证Sharding集群状态:

mongos> sh.status()
--- Sharding Status ---
 sharding version: {
         "_id": 1,
         "version": 4,
         "minCompatibleVersion": 4,
         "currentVersion": 5,
         "clusterId": ObjectId("53fee749becfed3ca6de7051")
}
 shards:
         {  "_id" : "sharding1",  "host" :"sharding1/10.1.2.11:27101,10.1.2.11:27102,10.1.2.11:27103" }
         {  "_id" : "sharding2",  "host" :"sharding2/10.1.2.12:27201,10.1.2.12:27202,10.1.2.12:27203" }
 databases:
         {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
         {  "_id" : "test",  "partitioned" : false,  "primary" : "sharding2" }
 
mongos>

至此,全部的环境建制完毕!

附:下面提一点关于分片的操作:

激活数据库分片:
db.runCommand({enablesharding:"dbname"})  //这里要在admin数据库下操作
或 sh.enableSharding(“dbname”)   //这个可以全局操作
 
Collection启用分片(这里要选取一个shard key,详细介绍请参照官网):
db.runCommand({shardcollection:"dbname.collectionname",key{_id:1}})  //同上!
或 sh.shardCollection( "records.active", { a:"hashed" } )
时间: 08-27

【Mongodb】 Sharding Replica Sets 分片集群生产环境安装与介绍!的相关文章

percona xtradb cluster 5.5集群生产环境安装之二

一.安装PXC要求 1.强烈推荐3个节点以上且硬件配置一样,一个节点性能受影响,整体受影响,遵循木桶效应 2.如果DDL语句有问题将破坏集群 3.创建数据库表引擎必须是INNODB,否则复合sql语句无法同步 4.创建数据库表必须要有主键索引,否则集群中有一台数据库会down掉 二.在线安装 yum remove -y mysql-libs rpm -qa |grep  Percona-Server |grep -v compat |xargs rpm -e --nodeps yum insta

elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移

一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:https://www.cnblogs.com/mkxfs/p/12030331.html 三.安装elasticsearch7.5.0 1.因zookeeper和kafka需要java启动 首先安装jdk1.8环境 yum install java-1.8.0-openjdk-devel.x86_64

percona xtradb cluster 5.5集群生产环境安装之一

服务器准备: 服务器 内存 CPU SSD ip OS DB1 32GB 4核 300GB 10.0.10.10/32 centos6.5 x64 DB2 32GB 4核 300GB 10.0.10.11/32 centos6.5 x64 DB3 32GB 4核 300GB 10.0.10.12/32 centos6.5 x64 一.CPU参数调整 在服务器的BIOS设置cpu发挥最大的性能 1.选择Performance Per Watt Optimized(DAPC)模式,发挥CPU最大性能

Redis集群生产环境源码安装

安装redis集群  根据各人单位生产环境用户搭建一.安装环境    操作系统:centos7.6 关闭防火墙.关闭selinux redis1:192.168.26.128 redis2:192.168.26.129二.用户环境 groupadd usr useradd -g usr -md /usr/users/sw sw cd /usr/users/sw/ mkdir  app;mkdir  backup cd app mkdir redis make /applog chown -R s

HPC 高性能集群基础环境安装

HPC 基础环境配置 1.1.操作系统 配置? 操作系统:redhat enterprise linuxt 6? 管理节点:HOSTNAME:desktop IP:192.168.199.132计算节点: HOSTNAME:c1 IP:192.168.199.133 HOSTNAME:c2 IP:192.168.199.134? 网络配置:固定IP,各个节点互通? 配置本地域名解析(所有节点):将所有的节点的IP HOSTNAME 写入到 /etc/hosts 并分发到所有节点. [[email

MongoDB Sharding Cluster分片集群

MongoDB Sharding Cluster 第1章 分片技术简述: sharding是MongoDB用来将大型集合分割高不同服务器上所采用的方法,尽管分片起源于关系型数据库分区,但MongoDB分片完全又是另一回事 和mysql分区方案相比,MongoDB的最大区别在于它几乎能自动完成所有事情,只要告诉MongoDB要分配数据,它就能自动维护数据在不同的服务器之间的均衡 1.1 分片的目的: ?  垂直扩展:增加更多的cpu和存储资源来扩展容量,也属于硬件扩展 ?  水平扩展:将数据集分布

MongoDB 分布式分片集群 [四]

MongoDB的分布式分片集群(sharding cluster)配置Sharding cluster介绍这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monodb系统.要构建一个 MongoDB Sharding Cluster,需要三种角色:Shard Server: mongod 实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障.Config Server: m

MongoDB 分片集群实战

背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便. 水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维. Databases for MongoDB 试用 IBM Cloud 上提

MongoDB 搭建分片集群

在MongoDB(版本 3.2.9)中,分片是指将collection分散存储到不同的Server中,每个Server只存储collection的一部分,服务分片的所有服务器组成分片集群.分片集群(Sharded Clustered)的服务器分为三中类型:Router(mongos),Config Server 和 Shard(Replica Set 或 Standalone mongod).使用分片集群,不需要使用强大的计算机,就能存储更多的数据,处理更大的负载.分布式数据库系统的设计目的是: