zoukankan      html  css  js  c++  java
  • mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域

    这个系列大致想跟大家分享以下篇章:

    1、mongo 3.4分片集群系列之一:浅谈分片集群

    2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片

    3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全

    4、mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域

    5、mongo 3.4分片集群系列之五:详解平衡器

    6、mongo 3.4分片集群系列之六:详解配置数据库

    7、mongo 3.4分片集群系列之七:配置数据库管理

    8、mongo 3.4分片集群系列之八:分片管理

     

    这一篇也是实践篇。

    1、        简单介绍区域

    区域,简单来说,就是将一个或几个分片划分为一组,也就是一个区域,那么标记为该区域的数据在平衡的集群中,只会存储在该区域内的分片中。

    举个例子(借用官网的例子说明):

    定义区域前的架构

    分片集群部署目前由三个分片组成。

       

    定义区域后的架构

    根据需要,定义两个区域“recent”和“archive”,区域“recent”由shard1和shard2组成,区域“archive”由shard3组成

       

    关于区域和分片键的一些说明:

    每个区域覆盖一个或多个分片键值范围。区域覆盖的每个范围总是包括其下边界,而不包括上边界。

    区域不能共享范围,也不能具有重叠的范围。

    当定义要覆盖的区域的新范围时,必须使用分片键中包含的字段。如果使用复合分片键,则范围必须包含分片键的前缀。

    2、        本篇分片集群的架构

    主机

    分片

    分片名称

    区域

     

    192.168.209.155

    mongo_shard3

    shard0002

    notGsxt

    mongo_shard1

    shard0000

    isGsxt

    mongo_shard2

    shard0001

    192.168.209.156

    mongo_shard4

    shard0003

    由2个主机构成,其中主机192.168.209.155提供3个分片,分片名称分别为mongo_shard1,mongo_shard2,mongo_shard3。主机192.168.209.156供1分片,为mongo_shard4。主机192.168.209.155的mongo_shard1,mongo_shard2,和主机192.168.209.156的mongo_shard4构成区域isGsxt,主机192.168.209.155的mongo_shard2构成区域notGsxt。(配置服务器和路由都在192.168.209.155上)

    3、        具体操作步骤

    本篇文章是认为已经搭建了哈希分片+安全的,有关如何搭建哈希分片+安全的集群,请参考上一篇文章:mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全

    以下步骤,除了第(1)步,其余的步骤,都在主机192.168.209.155上操作

    1)    首先,搭建一个4个哈希分片的集群

      有关如何搭建哈希分片+安全的集群,请参考上一篇文章:mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全

    2)    禁用平衡器

    为了降低性能影响,可以禁用集群上的平衡器。

    在主机192.168.209.155上,连接到一个mongos实例

    # mongo --port 6666 -u bear -p bear --authenticationDatabase admin           

    use admin;

    sh.stopBalancer();

       

    3)    将每个分片添加到适当的区域

    查看集群内分片的名称

    sh.status();

       

    主机192.168.209.155的mongo_shard1,mongo_shard2,和主机192.168.209.156的mongo_shard4构成区域isGsxt。

    sh.addShardTag(shard0000,”isGsxt”);

    sh.addShardTag(shard0001,”isGsxt”);

    sh.addShardTag(shard0003,”isGsxt”);

    主机192.168.209.155的mongo_shard2构成区域notGsxt。

    sh.addShardTag(shard0002,”notGsxt”);

    4)    定义每个区域的范围

    用集合上的分片键定义区域范围,对于每个集合都要执行此操作,此操作是以集合为单位,而不是整个数据库。集合必须是已分片的集合。

    举个例子,gsxt数据库的gansu_test1集合,其中分片键为Name字段。将其定义到isGsxt区域中。

    sh.addTagRange(

      “gsxt.gansu_test1”,

    {“Name”:MinKey},

    {“Name”:MaxKey},

    “isGsxt”

    )

     

    5)    启用平衡器

    sh.startBalancer();

    6)    确认更改

    sh.status();

         

    7)    测试

      可以尝试往gsxt.gansu_test1集合中插入数据,然后在用sh.status(),查看数据的块分布情况。

     

    --------------------------------------- over ------------------------------------------------------

    以上资料,大部分是参考官网的资料,在此表示感谢。

    https://docs.mongodb.com/manual/core/zone-sharding/

  • 相关阅读:
    子网划分
    数据报分片
    CRC校验
    内部网关协议RIP与OSPF的特点、区别
    简述协议与服务的区别、关系
    算法思想
    上机实验题7--求解装载问题
    上机实验题6--求最长单调递增子序列
    python进程和线程
    python序列化操作
  • 原文地址:https://www.cnblogs.com/ddbear/p/7872383.html
Copyright © 2011-2022 走看看