搭建基于Docker的MongoDB复制集群环境(2)

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

可以想象 3个容器的ip应该是172.17.0.1 172.17.0.2 172.17.0.3

查看运行的容器
linuxidc@linuxidc:~$ sudo docker ps -a
CONTAINER ID        IMAGE              COMMAND                CREATED              STATUS              PORTS                              NAMES
cebebc142a1b        pc/mongod:master    "usr/bin/mongod --no  About a minute ago  Up About a minute  22/tcp, 0.0.0.0:23117->27017/tcp  rs_server3         
b60c977313e1        pc/mongod:master    "usr/bin/mongod --no  About a minute ago  Up About a minute  22/tcp, 0.0.0.0:22117->27017/tcp  rs_server2         
6306bf3057f8        pc/mongod:master    "usr/bin/mongod --no  About a minute ago  Up About a minute  22/tcp, 0.0.0.0:21117->27017/tcp  rs_server1

从上述信息可以看出本机的21117 22117 23117  映射到docker的容器的端口上去了

使用本机mongo客户端连接到21117     
linuxidc@linuxidc:~$ mongo --port 21117
MongoDB shell version: 3.0.4
connecting to: 127.0.0.1:21117/test

开始配置 复制集的成员信息
> myconf = {"_id":"rs1","members":[
... {"_id":0,"host":"172.17.0.1:27017"},
... {"_id":1,"host":"172.17.0.2:27017"},
... {"_id":2,"host":"172.17.0.3:27017"}
... ]
... }
{
    "_id" : "rs1",
    "members" : [
        {
            "_id" : 0,
            "host" : "172.17.0.1:27017"
        },
        {
            "_id" : 1,
            "host" : "172.17.0.2:27017"
        },
        {
            "_id" : 2,
            "host" : "172.17.0.3:27017"
        }
    ]
}

初始化同步复制集群
> rs.initiate(myconf)
{ "ok" : 1 }

查看当前复制集的节点信息
rs1:OTHER> rs.isMaster()
{
    "setName" : "rs1",
    "setVersion" : 1,
    "ismaster" : true,
    "secondary" : false,
    "hosts" : [
        "172.17.0.1:27017",
        "172.17.0.2:27017",
        "172.17.0.3:27017"
    ],
    "primary" : "172.17.0.1:27017",
    "me" : "172.17.0.1:27017",
    "electionId" : ObjectId("55a5cc505f7c25c88ad58e77"),
    "maxBsonObjectSize" : 16777216,
    "maxMessageSizeBytes" : 48000000,
    "maxWriteBatchSize" : 1000,
    "localTime" : ISODate("2015-07-15T02:58:30.831Z"),
    "maxWireVersion" : 3,
    "minWireVersion" : 0,
    "ok" : 1
}
可以看出连接到的容器ip是172.17.0.1 
也可以看见谁是主节点
rs1:PRIMARY> rs.status()
{
    "set" : "rs1",
    "date" : ISODate("2015-07-15T02:58:44.390Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "172.17.0.1:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 540,
            "optime" : Timestamp(1436929097, 1),
            "optimeDate" : ISODate("2015-07-15T02:58:17Z"),
            "electionTime" : Timestamp(1436929104, 1),
            "electionDate" : ISODate("2015-07-15T02:58:24Z"),
            "configVersion" : 1,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "172.17.0.2:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 57,
            "optime" : Timestamp(1436929097, 1),
            "optimeDate" : ISODate("2015-07-15T02:58:17Z"),
            "lastHeartbeat" : ISODate("2015-07-15T02:58:44.133Z"),
            "lastHeartbeatRecv" : ISODate("2015-07-15T02:58:44.133Z"),
            "pingMs" : 0,
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "172.17.0.3:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 57,
            "optime" : Timestamp(1436929097, 1),
            "optimeDate" : ISODate("2015-07-15T02:58:17Z"),
            "lastHeartbeat" : ISODate("2015-07-15T02:58:43.169Z"),
            "lastHeartbeatRecv" : ISODate("2015-07-15T02:58:44.134Z"),
            "pingMs" : 0,
            "lastHeartbeatMessage" : "could not find member to sync from",
            "configVersion" : 1
        }
    ],
    "ok" : 1
}
rs1:PRIMARY> rs.conf()
{
    "_id" : "rs1",
    "version" : 1,
    "members" : [
        {
            "_id" : 0,
            "host" : "172.17.0.1:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e2df14d33eb689c8b25ad827faf2f052.html