Docker安装Zookeeper教程

docker搭建zookeeper集群

文档描述:

基于单机实现zookeeper的部署安装实现,通过多台服务器以docker方式集群化部署zookeeper暂未成功实现该方案!

zookeeper集群化部署两种方式

  • 单机docker多开容器实现伪zookeeper集群
  • 多服务器通过docker部署实现完全zookeeper集群

Docker下安装Zookeeper

查看本地镜像

docker images;

查询docker镜像

docker search zookeeper;

拉取镜像

  • 拉取最新docker镜像命令
    docker pull zookeeper:latest
  • 拉取指定版本docker镜像命令
    docker pull zookeeper:3.5.7

创建ZooKeeper 挂载目录

创建多个挂载目录命令

  • data:数据挂载目录
  • conf:配置挂载目录
  • logs:日志挂载目录
    mkdir -p /mydata/zookeeper/{data,conf,logs}

启动zookeeper容器

docker run -d --name zookeeper --privileged=true -p2181:2181 -p2888:2888 -p3888:3888  -v /mydata/zookeeper/data:/data -v /mydata/zookeeper/conf:/conf -v /mydata/zookeeper/logs:/datalog zookeeper:3.5.7

参数说明

-e TZ="Asia/Shanghai" # 指定上海时区 
-d # 表示在一直在后台运行容器
-p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口
--name # 设置创建的容器名称
-v # 将本地目录(文件)挂载到容器指定目录;
--restart always #始终重新启动zookeeper,看需求设置不设置自启动

docker –privileged=true 参数作用

  • 添加ZooKeeper配置文件

    在挂载配置文件目录(/mydata/zookeeper/conf)下,新增zoo.cfg 配置文件

新增配置

clientPort=2181

修改后配置文件

dataDir=/data  # 保存zookeeper中的数据
clientPort=2181 # 客户端连接端口,通常不做修改
dataLogDir=/datalog
tickTime=2000 # 通信心跳时间
initLimit=5 # LF(leader - follower)初始通信时限
syncLimit=2 # LF 同步通信时限
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181

进入容器内部,验证容器状态

进入zookeeper 容器内部

docker exec -it zookeeper /bin/bash

检查容器状态

docker exec -it zookeeper /bin/bash ./bin/zkServer.sh status

进入控制台

docker exec -it zookeeper zkCli.sh

安装ZooInspector客户端连接

【未实际测试起来】
命令

java -jar zookeeper-dev-ZooInspector.jar

文件下载地址

https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

问题:WARNING: IPv4 forwarding is disabled. Networking will not work

解决办法:
# vi /etc/sysctl.conf
或者
# vi /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1
重启network服务
# systemctl restart network

Docker安装Zookeeper集群

【未实际测试起来-集群部署zookeeper】

  • 准备三台机器互相ping通
  • 配置文件zoo.cfg
cd  /mydata/zookeeper/conf
vim zoo.cfg

三台机器分别执行添加

server.1=192.168.136.140:2888:3888;2181
server.2=192.168.136.141:2888:3888;2181
server.3=192.168.136.142:2888:3888;2181
  • 2181: 客户端端口
  • 2888:zookeeper容器间通信的端口
  • 3888:zookeeper选举投票的端口

设置myid标识

zookeeper选举也会根据myid的大小进行投票master

zookeep01

echo 1 > /mydata/zookeeper/conf/myid

zookeep02

echo 2 > /mydata/zookeeper/conf/myid

zookeep03

echo 3 > /mydata/zookeeper/conf/myid