docker swarm 搭建mongodb集群

创建docker swarm 网络
docker network create -d overlay --attachable es 

docker warm 由3个节点组成 分别是 master  slaver-01 slaver-02 
注意: 编辑conpose文件时请 修改绑定的node 名字
   - node.hostname==master  修改为自己的node 

vim mongo.yml

services:
  cfg1:
    image: mongo
    command: mongod --storageEngine wiredTiger --profile=1 --port 27017 --bind_ip_all --slowms=50 --replSet mongo --dbpath /data/db 
    networks:
      - es
    volumes:
      - /home/dockermongo:/data/db
    deploy:
      restart_policy:
        condition: on-failure
      replicas: 1
      placement:
        constraints:
          - node.hostname==master
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "2"
          memory: 1200M
        reservations:
          cpus: "0.8" 
          memory: 800M  
  cfg2:
    image: mongo
    command: mongod --storageEngine wiredTiger --profile=1 --port 27017 --bind_ip_all --slowms=50 --replSet mongo --dbpath /data/db
    networks:
      - es
    volumes:
      - /home/dockermongo:/data/db
    deploy:
      restart_policy:
        condition: on-failure
      replicas: 1
      placement:
        constraints:
          - node.hostname==slaver-01
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "2"
          memory: 1200M
        reservations:
          cpus: "0.8"
          memory: 800M  
  cfg3:
    image: mongo
    command: mongod --storageEngine wiredTiger --profile=1 --port 27017 --bind_ip_all --slowms=50 --replSet mongo --dbpath /data/db
    networks:
      - es
    volumes:
      - /home/dockermongo:/data/db
    deploy:
      restart_policy:
        condition: on-failure
      replicas: 1
      placement:
        constraints:
          - node.hostname==slaver-02
      endpoint_mode: dnsrr      
      resources:
        limits:
          cpus: "2"
          memory: 1200M
        reservations:
          cpus: "0.8"
          memory: 800M  
networks:
  es:
    external: true

构建完成可以看到3个容器已经启动 

61m6okmo4y3q        mongo_cfg1          replicated          1/1                 mongo:latest          
xqlxuwyzhu11        mongo_cfg2          replicated          1/1                 mongo:latest          
6cmh7ny7g9xg        mongo_cfg3          replicated          1/1                 mongo:latest  
接下来进行集群搭建
执行命令 
docker exec -it d001e5c09ebc mongo --port 27017
注意 d001e5c09ebc 为容器id 
执行此命令进入容器 执行 
config={_id:"mongo",members:[{_id:0,host:"cfg1:27017"},{_id:1,host:"cfg2:27017"},{_id:2,host:"cfg3:27017","arbiterOnly" : true}]} 

{
    "_id" : "mongo",
    "members" : [
        {
            "_id" : 0,
            "host" : "cfg1:27017"
        },
        {
            "_id" : 1,
            "host" : "cfg2:27017"
        },
        {
            "_id" : 2,
            "host" : "cfg3:27017",
            "arbiterOnly" : true
        }
    ]
}

rs.initiate(config)    初始化 

mongo:SECONDARY>  rs.status()  查看集群状态
{
    "set" : "mongo",
    "date" : ISODate("2019-04-10T07:19:33.761Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "syncingTo" : "",
    "syncSourceHost" : "",
    "syncSourceId" : -1,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(0, 0),
            "t" : NumberLong(-1)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1554880772, 4),
            "t" : NumberLong(1)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1554880772, 4),
            "t" : NumberLong(1)
        }
    },
    "lastStableCheckpointTimestamp" : Timestamp(0, 0),
    "members" : [
        {
            "_id" : 0,
            "name" : "cfg1:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 751,
            "optime" : {
                "ts" : Timestamp(1554880772, 4),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2019-04-10T07:19:32Z"),
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1554880771, 1),
            "electionDate" : ISODate("2019-04-10T07:19:31Z"),
            "configVersion" : 1,
            "self" : true,
            "lastHeartbeatMessage" : ""
        },
        {
            "_id" : 1,
            "name" : "cfg2:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 14,
            "optime" : {
                "ts" : Timestamp(1554880759, 1),
                "t" : NumberLong(-1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1554880759, 1),
                "t" : NumberLong(-1)
            },
            "optimeDate" : ISODate("2019-04-10T07:19:19Z"),
            "optimeDurableDate" : ISODate("2019-04-10T07:19:19Z"),
            "lastHeartbeat" : ISODate("2019-04-10T07:19:33.095Z"),
            "lastHeartbeatRecv" : ISODate("2019-04-10T07:19:33.292Z"),
            "pingMs" : NumberLong(1),
            "lastHeartbeatMessage" : "",
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "cfg3:27017",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 14,
            "lastHeartbeat" : ISODate("2019-04-10T07:19:33.099Z"),
            "lastHeartbeatRecv" : ISODate("2019-04-10T07:19:33.583Z"),
            "pingMs" : NumberLong(1),
            "lastHeartbeatMessage" : "",
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "configVersion" : 1
        }
    ],
    "ok" : 1,
    "operationTime" : Timestamp(1554880772, 4),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1554880772, 4),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}

接下来修改mongodb 权重 因为不想集群重启之后主节点改变
mongo:PRIMARY> cfg=rs.config()  config 重新赋值 
mongo:PRIMARY>  cfg.members[0].priority = 3        修改权重
3
mongo:PRIMARY> cfg.members[1].priority = 2  修改权重
2
mongo:PRIMARY>  rs.reconfig(cfg)      重新加载权重信息
{
    "ok" : 1,
    "operationTime" : Timestamp(1554881116, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1554881116, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}
mongo:PRIMARY> rs.config()    c查看权重信息
{
    "_id" : "mongo",
    "version" : 2,
    "protocolVersion" : NumberLong(1),
    "writeConcernMajorityJournalDefault" : true,
    "members" : [
        {
            "_id" : 0,
            "host" : "cfg1:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 3,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 1,
            "host" : "cfg2:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 2,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "cfg3:27017",
            "arbiterOnly" : true,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 0,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }
    ],
    "settings" : {
        "chainingAllowed" : true,
        "heartbeatIntervalMillis" : 2000,
        "heartbeatTimeoutSecs" : 10,
        "electionTimeoutMillis" : 10000,
        "catchUpTimeoutMillis" : -1,
        "catchUpTakeoverDelayMillis" : 30000,
        "getLastErrorModes" : {
            
        },
        "getLastErrorDefaults" : {
            "w" : 1,
            "wtimeout" : 0
        },
        "replicaSetId" : ObjectId("5cad98f795626aebf25e19ca")
    }
}

到这里docker swarm 的mongodb 集群就搭建完成了 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值