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/

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