docker环境下zookeeper集群部署(一)

作者:Antonius

docker环境下zookeeper集群部署(一)

单节点docker,多个zookeeper容器集群

直接使用shell脚本完成镜像下载、子网创建、部署集群等功能。

部署脚本

#!/bin/bash
#Get zookeeper image
zkimage=`docker images | grep zookeeper | awk {'print $1'}`
if [ -n "$zkimage" ]
then
    echo 'The zookeeper image is already existed.'
else
    echo 'Pull the latest zookeeper image.'
    docker pull zookeeper
fi

#Create network for zookeeper containers
zknet=`docker network ls | grep zknetwork | awk {'print $2'}`
if [ -n "$zknet" ]
then
    echo 'The zknetwork is already existed.'
else
    echo 'Create zknetwork.'
    docker network create zknetwork
fi

#Start zookeeper cluster
echo 'Start 3 zookeeper servers.'

ZOO_SERVERS="server.1=zkServer1:2888:3888 server.2=zkServer2:2888:3888 server.3=zkServer3:2888:3888"

docker run -d -e ZOO_SERVERS="$ZOO_SERVERS" -e ZOO_MY_ID=1 --name zkServer1 --net zknetwork -p 2181:2181 zookeeper
docker run -d -e ZOO_SERVERS="$ZOO_SERVERS" -e ZOO_MY_ID=2 --name zkServer2 --net zknetwork -p 2182:2181 zookeeper
docker run -d -e ZOO_SERVERS="$ZOO_SERVERS" -e ZOO_MY_ID=3 --name zkServer3 --net zknetwork -p 2183:2181 zookeeper

查看容器:
docker container ls
在这里插入图片描述
使用containerId进入容器内部,就可以像正常zk命令行操作了
docker exec -it containerId sh
在这里插入图片描述
使用python操作zk集群:

# -*- coding:utf-8 -*-
__author__ = 'xxxx'

from kazoo.client import KazooClient

HOSTS="$serverIp:2181"

class PyZooConn(object):
    # init function include connection method
    def __init__(self):
        self.zk = KazooClient(hosts=HOSTS)
        self.zk.start()

    # get node data
    def get_data(self, param):
        result = self.zk.get(param)
        print
        result

    # create a node and input a value in this node
    def create_node(self, node, value):
        self.zk.create(node, value)

    # close the connection
    def close(self):
        self.zk.stop()

if __name__ == '__main__':
    pz = PyZooConn()
    pz.create_node("/test", bytes("123",encoding='utf8'))
    pz.get_data("/test/")
    pz.close()

总结:

1.docker命令权限问题

在这里插入图片描述
当前用户既不是root,也没有加入docker群组,无法操作docker.sock文件。
解决办法:
(1). 使用sudo来使用docker命令
(2). 将当前用户加入docker权限组

2.配置修改

如果需要修改zookeeper配置,进入container后修zoo.cfg文件

3.配置文件位置

(1). my.id文件:/data/my.id
(2). zoo.cfg文件:/conf/zoo.cfg

4.配置文件参数介绍

参考https://hub.docker.com/_/zookeeper/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章