设为首页 收藏本站
查看: 1203|回复: 0

[经验分享] Kafka+Zookeeper+Storm的docker化

[复制链接]

尚未签到

发表于 2019-2-21 11:16:15 | 显示全部楼层 |阅读模式
Kafka+Zookeeper+Storm的docker化

  因为项目需要,需要把kafka、zookeeper、storm等服务组件docker化,在借鉴相关的开源dockerfile文件后,终于完成,以此记录。

  1.首先是建立基础的Linux镜像,针对本项目做了定制。

FROM centos
MAINTAINER cc.zhang1024@gmail.com
COPY jq /usr/bin/
RUN yum  update -y && \
yum install wget -y && \
yum install openssh -y && \
yum install openssh-server -y && \
yum install vim -y && \
yum install zip unzip -y && \
yum install openssh-clients -y && \
yum groupinstall "Development Tools" -y && \
yum install python-setuptools -y && \
easy_install supervisor && \
echo 'root:root' | chpasswd && \
wget https://zcc2018.oss-cn-beijing.aliyuncs.com/jdk-8u171-linux-x64.tar.gz &&\
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/ &&\
JAVA_HOME=/opt/jdk1.8.0_171 && \
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib && \
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:HOME/bin && \
echo "export JAVA_HOME=$JAVA_HOME">>/etc/profile && \
echo "export CLASSPATH=$CLASSPATH">>/etc/profile && \
echo "export PATH=$PATH">>/etc/profile && \
ssh-keygen -A && \
chmod +x /usr/bin/jq && \
mkdir /var/run/sshd  && \
mkdir /var/log/supervisor -p && \
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
ENV JAVA_HOME /opt/jdk1.8.0_171
ENV PATH $PATH:$JAVA_HOME/bin
ADD supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 22

  · 其中jq需要从网上下载放在同一目录下。
  2.进行kafka的环境安装[参考github项目->https://github.com/wurstmeister/kafka-docker]

FROM centos
ARG kafka_version=1.0.0
ARG scala_version=2.12
ARG glibc_version=2.27-r0
ENV KAFKA_VERSION=$kafka_version \
SCALA_VERSION=$scala_version \
KAFKA_HOME=/opt/kafka \
GLIBC_VERSION=$glibc_version
ENV PATH=${PATH}:${KAFKA_HOME}/bin
COPY download-kafka.sh start-kafka.sh broker-list.sh create-topics.sh /tmp/
RUN  chmod a+x /tmp/*.sh \
&& mv /tmp/start-kafka.sh /tmp/broker-list.sh /tmp/create-topics.sh /usr/bin \
&& sync && /tmp/download-kafka.sh \
&& tar xfz /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt \
&& rm /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz \
&& ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka \
&& rm /tmp/* -rf
VOLUME ["/kafka"]
CMD ["start-kafka.sh"]


  • 相关脚本请去github下载【本dockerfile也是参考该开源项目->https://github.com/wurstmeister/kafka-docker】
  3.zookeeper->[参考项目->https://github.com/wurstmeister/zookeeper-docker]

FROM centos
ENV ZOOKEEPER_VERSION 3.4.12
RUN wget -q http://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz && \
wget -q https://www.apache.org/dist/zookeeper/KEYS && \
wget -q https://www.apache.org/dist/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz.asc && \
wget -q https://www.apache.org/dist/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz.md5
RUN md5sum -c zookeeper-${ZOOKEEPER_VERSION}.tar.gz.md5 && \
gpg --import KEYS && \
gpg --verify zookeeper-${ZOOKEEPER_VERSION}.tar.gz.asc
RUN tar -xzf zookeeper-${ZOOKEEPER_VERSION}.tar.gz -C /opt
RUN cp /opt/zookeeper-${ZOOKEEPER_VERSION}/conf/zoo_sample.cfg /opt/zookeeper-${ZOOKEEPER_VERSION}/conf/zoo.cfg
ENV JAVA_HOME $JAVA_HOME
ENV ZK_HOME /opt/zookeeper-${ZOOKEEPER_VERSION}
RUN sed  -i "s|/tmp/zookeeper|$ZK_HOME/data|g" $ZK_HOME/conf/zoo.cfg; mkdir $ZK_HOME/data
EXPOSE 2181 2888 3888
WORKDIR /opt/zookeeper-${ZOOKEEPER_VERSION}
VOLUME ["/opt/zookeeper-${ZOOKEEPER_VERSION}/conf", "/opt/zookeeper-${ZOOKEEPER_VERSION}/data"]
CMD /usr/sbin/sshd && sed -i -r 's|#(log4j.appender.ROLLINGFILE.MaxBackupIndex.*)|\1|g' $ZK_HOME/conf/log4j.properties && \
sed -i -r 's|#autopurge|autopurge|g' $ZK_HOME/conf/zoo.cfg && \
/opt/zookeeper-${ZOOKEEPER_VERSION}/bin/zkServer.sh start-foreground
  4.storm ->[参考项目-> https://github.com/wurstmeister/storm-docker]

FROM centos
RUN wget -q -O - https://zcc2018.oss-cn-beijing.aliyuncs.com/apache-storm-1.2.1.tar.gz | tar -xzf - -C /opt
ENV STORM_HOME /opt/apache-storm-1.2.1
RUN groupadd storm; useradd --gid storm --home-dir /home/storm --create-home --shell /bin/bash storm; chown -R storm:storm $STORM_HOME; mkdir /var/log/storm ; chown -R storm:storm /var/log/storm
RUN ln -s $STORM_HOME/bin/storm /usr/bin/storm
ADD storm.yaml $STORM_HOME/conf/storm.yaml
ADD cluster.xml $STORM_HOME/logback/cluster.xml
ADD config-supervisord.sh /usr/bin/config-supervisord.sh
ADD start-supervisor.sh /usr/bin/start-supervisor.sh
RUN chmod a+x /usr/bin/config-supervisord.sh && \
chmod a+x /usr/bin/start-supervisor.sh
RUN mkdir /etc/supervisor/conf.d/ -p
  5.Docker-compose.yml【仅供参考】

version: '3'
services:
#zookeeper
zookeeper:
image: zookeeper
ports:
- "2181:2181"
- "10122:22"
networks:
- analyser_cluster
#kafka
kafka:
image: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: "kafka"
KAFKA_ADVERTISED_PORT: "9092"
KAFKA_ZOOKEEPER_CONNECT: "zk:2181"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
links:
- zookeeper:zk
depends_on:
- zookeeper
networks:
- analyser_cluster
#storm ->nimbus
nimbus:
image: storm_nimbus
ports:
- "13773:3773"
- "13772:3772"
- "16627:6627"
- "10322:22"
links:
- zookeeper:zk
depends_on:
- zookeeper
networks:
- analyser_cluster
#storm ->supervisor
supervisor:
image: storm_supervisor
ports:
- "8000:8000"
- "10422:22"
links:
- nimbus:nimbus
- zookeeper:zk
depends_on:
- zookeeper
networks:
- analyser_cluster
#storm -> ui
ui:
image: storm_ui
ports:
- "18080:8080"
- "10522:22"
links:
- nimbus:nimbus
- zookeeper:zk
depends_on:
- zookeeper
networks:
- analyser_cluster
networks:
analyser_cluster:

  主要是针对开源项目做了针对自己项目需求的定制,以及将一些软件源替换为国内源。还有针对docker过程中一些无法运行的地方进行了修改,
其实本项目还有elk集群,redis,mysql等与上述kafka、storm的链接,但是因为时间有限、所以没有发出来,等后续有时间再补上吧。





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675275-1-1.html 上篇帖子: k8s+docker+calico 下篇帖子: Supervisor实现Docker容器内多进程管理(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表