基于docker搭建mongodb
            
        
        
        
        
        
            本文于
                1896
            天之前发表,文中内容可能已经过时。
        
        
     
    
    
        mongo集群搭建
第一步创建 docker-compose.yml文件
docker-compose.yml: 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 
 | version: '3'services:
 rs1:
 image: mongo:latest
 container_name: "mongo-rs-1"
 network_mode: "host"
 volumes:
 - /data/mongodb/rs1:/data/db
 command: mongod --port 57017 --dbpath /data/db --replSet mongoreplset
 rs2:
 image: mongo:latest
 container_name: "mongo-rs-2"
 network_mode: "host"
 volumes:
 - /data/mongodb/rs2:/data/db
 command: mongod --port 57018 --dbpath /data/db --replSet mongoreplset
 rs3:
 image: mongo:latest
 container_name: "mongo-rs-3"
 network_mode: "host"
 volumes:
 - /data/mongodb/rs3:/data/db
 command: mongod --port 57019 --dbpath /data/db --replSet mongoreplset
 
 
 | 
host 文件配置
| 12
 3
 
 | 127.0.0.1 mongo-rs-3127.0.0.1 mongo-rs-2
 127.0.0.1 mongo-rs-1
 
 | 
network的选择,为什么是host 而不是 bridge
主要是如果是brigge 模式,外网访问也会调用mongodb的心跳,但因为两边网络不通,会导致客户端认为mongodb的集群是不成功的。
先要配置host文件,然后再启动docker,因为host配置默认会复制hosts文件到容器里面。
使用 docker-compose 组件启动集群
如果没有安装 docker-compose组件
| 1
 | yum install docker-compose
 | 
集群replica set 配置
进入集群主节点
| 1
 | docker exec -it mongo-rs-1 mongo --port=57017
 | 
添加集群配置
| 12
 3
 
 | rs.initiate()rs.add("mongo-rs-2:57018")
 rs.add("mongo-rs-2:57018")
 
 | 
默认情况下,主节点host是 是默认的域名,不会是mongo-rs-1,所以需要重新配置
关闭主节点:
这时候备份节点有一个会变成主节点,在新的主节点操作
| 12
 3
 4
 
 | docker exec -it mongo-rs-2 mongo --port=57018
 rs.remove("默认host:57017")
 
 
 | 
启动老的主节点,这时候这是独立节点,在新的主节点操作
| 1
 | rs.add("mongo-rs-1:57017")
 | 
参考资料
| 1
 | http://bazingafeng.com/2017/06/19/create-mongodb-replset-cluster-using-docker/
 |