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

2015-07-20 12:04:35 · 作者: · 浏览: 16
net6 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"),
? ? ? ? ? ? "lastHeartbea