DockerAwesome Docker

docker 搭建 mongo 集群

2014-12-08  本文已影响3795人  谁又失忆

一. 准备工作

注意

  1. docker 通过 unix socket 通信,需要sudo权限, 每次操作 docker 都需要在命令行前添加 sudo,比较烦,官方给出了方法。安装 docker 是会创建docker用户组,也拥有unix socker读写权限,将当前用户添加至docker用户组,即可免除命令行前添加sudo参考
  2. 容器间默认通过网桥连接内外部网络,主机需要允许网卡转发
  3. docker 网桥默认网段为 172.17.42.1/16 ,公司vpn默认对网段
    172.17.0.0/20 路由,会覆盖docker网段,导致容器无法与外部网络通信,修改/etc/default/docker,添加 DOCKER_OPTS="--bip=192.168.1.0/20",这里网段是容器间的内部网络,可以自行修改,改到满意。
  4. 国内使用官方镜像比较慢,建议使用国内第三方镜像加速。如:DaoCloud阿里云

二. 实验

(一) 主从模式

注: docker-compose会默认将文件夹名字作为容器名的前缀, 我的文件夹为masterslave,容器明分别为 masterslave_master_1masterslave_slave_1

(二) 副本集(Relica set)

三实例

1主 + 2次要
  1. 创建db文件夹

     mkdir -p /data/mongodbtest/replset/rs1 /data/mongodbtest/replset/rs2 /data/mongodbtest/replset/rs2
    
  2. docker-compose.yml

     version: '3'
     services:
       rs1:
         image: mongo:latest
         volumes:
           - /data/mongodbtest/replset/rs1:/data/db
         command: mongod --dbpath /data/db --replSet myset
       rs2:
         image: mongo:latest
         volumes:
           - /data/mongodbtest/replset/rs2:/data/db
         command: mongod --dbpath /data/db --replSet myset
       rs3:
         image: mongo:2.7.8
         volumes:
           - /data/mongodbtest/replset/rs3:/data/db
         command: mongod --dbpath /data/db --replSet myset
    
1主 + 1副 + 1仲裁

限制

官方文档中提到了副本集的一些限制:

分片


MongoDB 提供了水平扩展的功能,其 Sharding 机制使其具备了支撑大数据量和大吞吐量的能力。
在一个 Sharding 集群中,有下面三种角色:

MongoDB 3.4 起,要求 config servers 也是 replset
MongoDB 提供两种分片策略:hash shardingrange sharding,需要根据自己的业务特征和数据特征进行选择。

测试版

上一篇 下一篇

猜你喜欢

热点阅读