dcos上zookeeper集羣搭建
參考地址:https://my.oschina.net/dslcode/blog/1944775
1.在docs上構建zookeeper服務的json腳本
{
"id": "/component-test-space/env-test/msg-queue",
"groups": [{
"id": "/component-test-space/env-test/msg-queue/nodes",
"apps": [{
"id": "/component-test-space/env-test/msg-queue/nodes/cluster-zk1",
"cpus": 0.5,
"mem": 1024,
"container": {
"type": "DOCKER",
"docker": {
"image": "zookeeper:3.4.13",
"network": "BRIDGE",
"portMappings": [{
"containerPort": 2181,
"hostPort": 21817,
"labels": {
"VIP_1": "/cluster-test-msg-zk:21817"
}
}, {
"containerPort": 2888,
"hostPort": 2887
}, {
"containerPort": 3888,
"hostPort": 3887
}]
},
"volumes": [{
"containerPath": "/data",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/data",
"mode": "RW"
}, {
"containerPath": "/datalog",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/datalog",
"mode": "RW"
}, {
"containerPath": "/logs",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/logs",
"mode": "RW"
}, {
"containerPath": "/conf",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/conf",
"mode": "RW"
}, {
"containerPath": "/etc/localtime",
"hostPath": "/etc/localtime",
"mode": "RO"
}]
},
"env": {
"TZ": "Asia/Shanghai",
"ZOO_MY_ID": "1",
"ZOO_SERVERS": "server.1=0.0.0.0:2888:3888 server.2=xxx.xx.xx.66:2887:3887 server.3=xxx.xx.xx.64:2887:3887"
},
"constraints": [
["hostname", "IS", "xxx.xx.xx.65"]
]
}, {
"id": "/component-test-space/env-test/msg-queue/nodes/cluster-zk2",
"cpus": 1,
"mem": 1024,
"container": {
"type": "DOCKER",
"docker": {
"image": "zookeeper:3.4.13",
"network": "BRIDGE",
"portMappings": [{
"containerPort": 2181,
"hostPort": 21817,
"labels": {
"VIP_1": "/cluster-test-msg-zk:21817"
}
}, {
"containerPort": 2888,
"hostPort": 2887
}, {
"containerPort": 3888,
"hostPort": 3887
}]
},
"volumes": [{
"containerPath": "/data",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/data",
"mode": "RW"
}, {
"containerPath": "/datalog",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/datalog",
"mode": "RW"
}, {
"containerPath": "/logs",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/logs",
"mode": "RW"
}, {
"containerPath": "/conf",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/conf",
"mode": "RW"
}, {
"containerPath": "/etc/localtime",
"hostPath": "/etc/localtime",
"mode": "RO"
}]
},
"env": {
"TZ": "Asia/Shanghai",
"ZOO_MY_ID": "2",
"ZOO_SERVERS": "server.1=xxx.xx.xx.65:2887:3887 server.2=0.0.0.0:2888:3888 server.3=xxx.xx.xx.64:2887:3887"
},
"constraints": [
["hostname", "IS", "xxx.xx.xx.66"]
]
}, {
"id": "/component-test-space/env-test/msg-queue/nodes/cluster-zk3",
"cpus": 1,
"mem": 1024,
"container": {
"type": "DOCKER",
"docker": {
"image": "zookeeper:3.4.13",
"network": "BRIDGE",
"portMappings": [{
"containerPort": 2181,
"hostPort": 21817,
"labels": {
"VIP_1": "/cluster-test-msg-zk:21817"
}
}, {
"containerPort": 2888,
"hostPort": 2887
}, {
"containerPort": 3888,
"hostPort": 3887
}]
},
"volumes": [{
"containerPath": "/data",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/data",
"mode": "RW"
}, {
"containerPath": "/datalog",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/datalog",
"mode": "RW"
}, {
"containerPath": "/logs",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/logs",
"mode": "RW"
}, {
"containerPath": "/conf",
"hostPath": "/data/test-cluster/zookeeper/test-zk-cluster/conf",
"mode": "RW"
}, {
"containerPath": "/etc/localtime",
"hostPath": "/etc/localtime",
"mode": "RO"
}]
},
"env": {
"TZ": "Asia/Shanghai",
"ZOO_MY_ID": "3",
"ZOO_SERVERS": "server.1=xxx.xx.xx.65:2887:3887 server.2=xxx.xx.xx.66:2887:3887 server.3=0.0.0.0:2888:3888"
},
"constraints": [
["hostname", "IS", "xxx.xx.xx.64"]
]
}]
}]
}
2.執行之後,
最終結果:
主節點66:
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader
從節點64:
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
從節點65:
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
3.常見命令
3.1 常用命令:
zkServer.sh status #查看zookeeper集羣狀態
zkCli.sh -server xxx.xx.xx.64:21817 # 使用zookeeper客戶端連接zk的服務器,用來查看相應的node信息;
4.常見問題
-
注意使用zookeeper的版本是: zookeeper:3.4.13,之前使用的zookeeper版本是3.5.5版本,導致各種問題錯誤,(在使用網上現成的例子的時候,需要對應的版本,否則導致出現各種異常情況);
-
Will not attempt to authenticate using SASL (unknown error)
該問題是無法有效解析出自己的IP地址和端口導致,檢查IP;
3.注意使用容器的搭建方式與普通的搭建方式有很大的不同;
server.1=zookeeper_1:2888:3888
server.2=zookeeper_2:2888:3888
server.3=zookeeper_3:2888:3888
在172.19.32.64上使用docker的方式:
server.1=xxx.xx.xx.65:2887:3887
server.2=0.0.0.0:2888:3888 ##此處配置的是0.0.0.0:2888:3888,當使用IP連接自身容器的時候;
server.3=xxx.xx.xx.64:2887:3887