Docker快速安装ZooKeeper开源分布式协调服务器

 

ZooKeeper是一个开源服务器,可实现高度可靠的分布式协调。

GitHub:https://github.com/31z4/zookeeper-docker

图书馆参考

此内容从官方Docker Library文档导入 ,由原始上传者提供。您可以在https://hub.docker.com/images/zookeeper上查看此图像的Docker Hub页面

  

支持的标签和相应的Dockerfile链接

 

  • 3.4.133.4latest3.4.13 / Dockerfile
  • 3.5.4-beta3.53.5.4-beta / Dockerfile

快速参考

  • 从哪里获得帮助
    Docker社区论坛,Docker社区Slack或Stack Overflow

  • 提交问题的地方:https:
    //github.com/31z4/zookeeper-docker/issues

  • 维护者
    Docker社区

  • 支持的体系结构:(详细信息)
    amd64arm32v6arm64v8i386ppc64les390x

  • 已发布的图像工件详细信息
    repo-info repo的repos/zookeeper/目录(历史记录)
    (图像元数据,传输大小等)

  • 图片更新
    官方图片PR带有标签library/zookeeper
    官方图片repo的library/zookeeper文件(历史)

  • 此描述的来源
    docs repo的zookeeper/目录(历史)

  • 支持的Docker版本
    最新版本(尽力降至1.6)

 

什么是Apache Zookeeper?

Apache ZooKeeper是Apache Software Foundation的一个软件项目,为大型分布式系统提供开源分布式配置服务,同步服务和命名注册表。ZooKeeper是Hadoop的一个子项目,但现在它本身就是一个顶级项目。

wikipedia.org/wiki/Apache_ZooKeeper

 

启动Zookeeper服务器实例

docker run --name some-zookeeper --restart always -d zookeeper

此图像包括EXPOSE 2181 2888 3888(zookeeper客户端端口,跟随端口,选择端口),因此标准容器链接将使其自动可用于链接的容器。由于Zookeeper“快速失败”,最好始终重启它。

 

从另一个Docker容器中的应用程序连接到Zookeeper

 docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-zookeeper

 

从Zookeeper命令行客户端连接到Zookeeper

$ docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper

...通过docker stack deploydocker-compose

实施例stack.ymlzookeeper

version: '3.1'

services:
  zoo1:
    image: zookeeper
    restart: always
    hostname: zoo1
    ports:
      - 2181:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

  zoo2:
    image: zookeeper
    restart: always
    hostname: zoo2
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888

  zoo3:
    image: zookeeper
    restart: always
    hostname: zoo3
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888

 

这将以复制模式启动Zookeeper 。运行docker stack deploy -c stack.yml zookeeper(或docker-compose -f stack.yml up)并等待它完全初始化。端口2181-2183将被暴露。

请注意,在一台计算机上设置多台服务器不会产生任何冗余。如果发生导致机器死机的事情,所有zookeeper服务器都将脱机。完全冗余要求每台服务器都有自己的机器。它必须是完全独立的物理服务器。同一物理主机上的多个虚拟机仍然容易受到该主机的完全故障的影响。

在复制模式下运行Zookeeper时,请考虑使用Docker Swarm。

 

组态

Zookeeper配置位于/conf。更改它的一种方法是将配置文件作为卷安装:

$ docker run --name some-zookeeper --restart always -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg zookeeper

 

环境变量

如果zoo.cfg未提供文件,则使用ZooKeeper推荐的默认值。可以使用以下环境变量覆盖它们。

$ docker run -e "ZOO_INIT_LIMIT=10" --name some-zookeeper --restart always -d 31z4/zookeeper

ZOO_TICK_TIME

默认为2000。动物园管理员的tickTime

单个tick的长度,即ZooKeeper使用的基本时间单位,以毫秒为单位。它用于调节心跳和超时。例如,最小会话超时将是两个滴答

ZOO_INIT_LIMIT

默认为5。动物园管理员的initLimit

以滴答为单位的时间量(请参阅tickTime),以允许关注者连接并同步到领导者。如果ZooKeeper管理的数据量很大,则根据需要增加此值。

ZOO_SYNC_LIMIT

默认为2。动物园管理员的syncLimit

以滴答为单位的时间量(请参阅tickTime),以允许关注者与ZooKeeper同步。如果粉丝落后于领导者,他们就会被淘汰。

ZOO_MAX_CLIENT_CNXNS

默认为60。动物园管理员的maxClientCnxns

限制由IP地址标识的单个客户端可以对ZooKeeper集合的单个成员进行的并发连接数(在套接字级别)。

ZOO_STANDALONE_ENABLED

默认为false。动物园管理员的standaloneEnabled

在3.5.0之前,可以在独立模式或分布式模式下运行ZooKeeper。这些是单独的实现堆栈,并且无法在运行时在它们之间进行切换。默认情况下(为了向后兼容),standaloneEnabled设置为true。使用此默认设置的结果是,如果以单个服务器启动,则不允许集合增长,并且如果从多个服务器启动,则不允许缩小以包含少于两个参与者。

ZOO_AUTOPURGE_PURGEINTERVAL

默认为0。动物园管理员的autoPurge.purgeInterval

3.4.0中的新增功能:必须触发清除任务的时间间隔(以小时为单位)。设置为正整数(1和更高)以启用自动清除。默认为0。

ZOO_AUTOPURGE_SNAPRETAINCOUNT

默认为3。动物园管理员的autoPurge.snapRetainCount

3.4.0中的新增功能:启用后,ZooKeeper自动清除功能分别在dataDir和dataLogDir中保留autopurge.snapRetainCount最新快照和相应的事务日志,并删除其余日志。默认为3.最小值为3。

 

复制模式

如果要以复制模式运行Zookeeper,则必须使用下面的环境变量。

ZOO_MY_ID

id必须在整体中是唯一的,并且应该具有介于1和255之间的值。请注意,如果使用/data已包含该myid文件的目录启动容器,则此变量不会产生任何影响。

ZOO_SERVERS

此变量允许您指定Zookeeper集合的计算机列表。每个条目都有server.id=host:port:port。参赛作品以空格分隔。请注意,如果使用/conf已包含该zoo.cfg文件的目录启动容器,则此变量不会产生任何影响。

在3.5中,这种语法已经改变。应指定服务器:server.id=::[:role];[:]Zookeeper动态重新配置

 

存储数据的位置

该图像被配置有以量/data/datalog以分别保持动物园管理员内存数据库的快照和更新数据库的事务日志。

放置事务日志的位置要小心。专用的事务日志设备是始终如一的良好性能的关键。将日志置于繁忙的设备上会对性能产生负面影响。

 

如何配置日志记录

默认情况下,ZooKeeper将stdout / stderr输出重定向到控制台。您可以/logs通过传递环境变量重定向到位于的文件ZOO_LOG4J_PROP,如下所示:

$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" zookeeper

这将写入日志/logs/zookeeper.log。检查ZooKeeper日志记录以获取更多详细信息。

/logs为方便起见,此图像配置为音量。

 

License

查看此映像中包含的软件的许可证信息。

与所有Docker映像一样,这些映像也可能包含其他许可证(例如来自基本分发版的Bash等,以及所包含的主要软件的任何直接或间接依赖关系)。

这是能够自动检测一些额外的许可信息可能中找到的repo-info版本库的zookeeper/目录。

对于任何预先构建的图像使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。

 

转载来源:https://docs.docker.com/samples/library/zookeeper/

你可能感兴趣的:(Unix&Unix-Like)