分享

Docker部署Zookeeper

desehawk 发表于 2015-3-7 16:11:47 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 20310

问题导读

1.docker镜像包含哪些内容?
2.同一个镜像怎么做到个性化配置?
3.外部如何访问zk集群?






需要考虑的问题:

  • 日志,快照等如何存放;
  • 同一个镜像怎么做到个性化配置;
  • 外部如何访问zk集群?

首先完成镜像制作,单机版的Dockfile如下:


  1. FROM centos
  2. MAINTAINER 44917134@qq.com  
  3. USER root
  4. # 替换成了本地源   
  5. RUN rm /etc/yum.repos.d/CentOS-Base.repo -rf   
  6. ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
  7. RUN yum -y install --enablerepo base wget java tar.x86_64 && wget -q -O - http://172.28.0.2:8080/zookeeper-3.4.6.tar.gz | tar -xzf - -C /opt && mv /opt/zookeeper-3.4.6 /opt/zookeeper && cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg && mkdir -p /opt/zookeeper/data && mkdir -p /opt/zookeeper/log
  8. ENV JAVA_HOME /usr/
  9. ADD start.sh /start.sh
  10. WORKDIR /opt/zookeeper
  11. # 用来记录日志和快照及传递公用配置的卷   
  12. VOLUME ["/opt/zookeeper/conf", "/opt/zookeeper/data", "/opt/zookeeper/log"]
  13. ENTRYPOINT ["/start.sh"]
  14. # 保证前台运行   
  15. CMD ["start-foreground"]
复制代码


执行完成镜像制作:
  1. docker build -f Dockerfile -t zookeeper:v2 .
复制代码


启动容器:
  1. docker run -i -t -d -p 172.28.2.26:2181:2181 zookeeper:v2
复制代码
访问zk:
  1. ./zkCli.sh -server 172.28.2.26:2181
复制代码

上面只是完成了单机模式的zk,对于集群模式的zk使用docker来做的话就需要考虑同一个镜像每个容器的个性化配置。对于zk集群需要考虑的是:

  • 集群中每个节点的myid
  • 集群中其他server的ip端口信息

考虑使用环境变量的方式来导入集群中每个server的个性化配置。但是,zk的配置文件还存在一些公用的配置,对于这种共有的配置还通过环境变量导入的话,会显得命令格外的冗长。有种方式是直接固化到容器镜像当中,但是如果后续希望调整共有配置的话又必须重新制作容器不够灵活。因此,考虑这种共有配置通过挂载一个host上的文件传入。 当然还有一种选择是通过在容器内部署一个版本管理工具如git或者配置中心zk,etcd等,这个配置管理的agent可以部署的容器内,这样就不需要挂载共有配置数据卷或者用配置管理软件管理host上的共有配置,这样不需要在容器里面多运行一个代理。



http://it.taocms.org/03/7098.htm

已有(1)人评论

跳转到指定楼层
落魂草 发表于 2015-3-8 09:14:34
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条