MongoDB分片集群搭建及扩容

准备工作

在CentOS 7 上安装MongoDB分片集群

6 Servers 代表:6台服务器上都要操作.

环境准备 On 6 Servers

给虚拟机设置静态IP
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改以下
#BOOTPROTO=“dhcp”
BOOTPROTO=“static”
IPADDR=“.xx.xx.xx.xx”
NETMASK=“255.255.255.0”
GATEWAY=“.xx.xx.xx.xx”
DNS1=“.xx.xx.xx.xx”

systemctl restart network
reboot

如果连不上外网,可以尝试断开虚拟机的网络,再重新连接

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.24
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.71
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.73
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.74
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.75
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.76

[root@mongo1 ~]# getenforce
Enforcing

[root@mongo1 ~]# sudo setenforce 0
[root@mongo1 lib]# vi /etc/selinux/config
SELINUX=disabled

systemctl stop firewalld
systemctl disable firewalld

sudo shutdown -r now

开始安装MongoDB On 6 Servers

[root@mongo1 ~]# sudo yum -y install libcurl openssl
[root@mongo1 ~]# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.6.tgz
[root@mongo1 ~]# tar -zxvf mongodb-linux-*-4.2.6.tgz

[root@mongo1 ~]# adduser mongod
[root@mongo1 ~]# passwd mongod

为服务器设置域名 On 6 Servers

我们将使用域名来搭建分片集。使用域名也是搭建MongoDB集群的推荐方式,它在以后发生迁移时将带来很多便利。

vi /etc/hosts
xx.xx.xx.24 mongod1 member1.mongod.com
xx.xx.xx.71 mongod2 member2.mongod.com
xx.xx.xx.73 mongod3 member3.mongod.com
xx.xx.xx.74 mongod4 member4.mongod.com
xx.xx.xx.75 mongod5 member5.mongod.com
xx.xx.xx.76 mongod6 member6.mongod.com

服务器分工

在本例中,我们将使用:

  • member1/member3/member5搭建shard1config
  • member2/member4/member6搭建shard2mongos
member1 member2 member3 member4 member5 member6
shard1
shard2
config
mongos

准备分片目录

在各服务器上创建数据目录,我们使用/data,请按自己需要修改为其他目录:

  • member1/member3/member5上执行以下命令:

    mkdir -p /var/lib/mongo/shard1/
    mkdir -p /var/lib/mongo/config/
    
  • member2/member4/member6上执行以下命令:

    mkdir -p /var/lib/mongo/shard2/
    mkdir -p /var/lib/mongo/mongos/
    
sudo chown -R mongod:mongod /var/lib/mongo
Ensure the binaries are in a directory listed in your PATH environment variable.
sudo cp /root/mongodb-linux-x86_64-rhel70-4.2.6/bin/* /usr/local/bin/

搭建分片

搭建shard1

member1/member3/member5上执行以下命令。注意以下参数:

  • shardsvr: 表示这不是一个普通的复制集,而是分片集的一部分;
  • wiredTigerCacheSizeGB: 该参数表示MongoDB能够使用的缓存大小。默认值为(RAM - 1GB) / 2
    • 不建议配置超过默认值,有OOM的风险;
    • 因为我们当前测试会在一台服务器上运行多个实例,因此配置了较小的值;
  • bind_ip: 生产环境中强烈建议不要绑定外网IP,此处为了方便演示绑定了所有IP地址。类似的道理,生产环境中应开启认证--auth,此处为演示方便并未使用;
mongod --bind_ip 0.0.0.0 --replSet shard1 --dbpath /var/lib/mongo/shard1 --logpath /var/lib/mongo/shard1/mongod.log --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1

用这三个实例搭建shard1复制集:

  • 任意连接到一个实例,例如我们连接到member1.example.com

    mongo --host member1.mongod.com:27010
    
  • 初始化shard1复制集。我们使用如下配置初始化复制集:

    rs.initiate({
         
        _id: "shard1",
        "members" : [
            {
         
                "_id": 0,
                "host" : "member1.mongod.com:27010"
            },
            {
         
                "_id": 1,
                "host" : "member3.mongod.com:27010"
            },
            {
         
                "_id": 2,
                "host" : "member5.mongod.com:27010"
            }
        ]
    });
    
  • 查看初始化复制集状态:

    rs.status()
    

搭建config

shard1类似的方式,我们可以搭建config服务器。在member1/member3/member5上执行以下命令:

  • 运行config实例:

    mongod --bind_ip 0.0.0.0 --replSet config --dbpath /var/lib/mongo/config --logpath /var/lib/mongo/config/mongod.log --port 27019 --fork --configsvr --wiredTigerCacheSizeGB 1
    
  • 连接到member1

    mongo --host member1.mongod.com:27019
    
  • 初始化config复制集:

    rs.initiate({
         
        _id: "config",
        "members" : [
            {
         
                "_id": 0,
                
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值