Nifi Docker集群-两个节点 (1)

来源:互联网 发布:淘宝名字大全 编辑:程序博客网 时间:2024/05/18 02:55

使用Dockerfile构建nifi基础镜像:

Dockerfile:

# Version: 0.0.1
FROM  docker.io/centos:7
MAINTAINER heqingyong101@163.com


ARG JDK_VERSION=8u66
ARG NIFI_VERSION=1.1.0
ARG NIFI_HOME=/root/data_collect


USER root


RUN yum -y install net-tools


COPY jdk-${JDK_VERSION}-linux-x64.tar.gz ${NIFI_HOME}/jdk-${JDK_VERSION}-linux-x64.tar.gz 
RUN cd ${NIFI_HOME} && tar -xvzf jdk-${JDK_VERSION}-linux-x64.tar.gz \
 && rm -rf jdk-${JDK_VERSION}-linux-x64.tar.gz


COPY nifi-${NIFI_VERSION}-bin.tar.gz ${NIFI_HOME}/nifi-${NIFI_VERSION}-bin.tar.gz
RUN cd ${NIFI_HOME} && tar -xvzf nifi-${NIFI_VERSION}-bin.tar.gz \
 && rm -rf nifi-${NIFI_VERSION}-bin.tar.gz


ADD lib/  ${NIFI_HOME}/nifi-${NIFI_VERSION}/lib/


RUN cd ${NIFI_HOME} && mkdir conf
ADD conf/ ${NIFI_HOME}/conf/
ADD init.sh ${NIFI_HOME}/



RUN chmod u+x ${NIFI_HOME}/init.sh
RUN yum -y install openssh-server openssh-clients
RUN ssh-keygen -A
COPY id_rsa.pub /root/.ssh/authorized_keys


EXPOSE 8080
WORKDIR /root/data_collect
ENTRYPOINT ["/root/data_collect/init.sh"]


初始化脚本init.sh内容如下:

#!/bin/bash
### ENV ###
## USE_EMMBEDED_ZK, should set to true for master node, others should set to false.
## HOSTNAME, hostname of every node.
## ZK_CONNECTION_STR, zookeeper connection string ,such as (master.younge.club:2181,slave.younge.club:2181).
## S2S_PORT, port of site to site protocol, default 11443.
## WEB_PORT, port of web UI, default 8080.
## IS_CLUSTER, cluster mode if true, or single node mode, default false.


## MAX_MEM, max memory set for nifi, default 512.
## NIFI_VERSION, version of nifi.


## ZK_CLI_PORT, port zookeeper client connect to, default 2181.
## ZK_HOSTNAME, zookeeper's hostname, single node.
## ZK_VOTE_PORT, zookeeper's vote port, default 2888.
## ZK_LEADER_PORT, zookeeper's leader port, default 3888.


#NIFI_VERSION=1.1.0
#MAX_MEM=1024


cd /root/data_collect/nifi-${NIFI_VERSION}


#Nifi env
sed -i "/^#export JAVA_HOME=/s:.*:export JAVA_HOME=/root/data_collect/jdk1.8.0_66/:" bin/nifi-env.sh


#Jdk mem
sed -i "/^java.arg.2=-Xmx512m/s/.*/java.arg.2=-Xmx${MAX_MEM:-512}m/" conf/bootstrap.conf


#Nifi conf
sed -i "/^nifi.state.management.embedded.zookeeper.start=/s/.*/nifi.state.management.embedded.zookeeper.start=${USE_EMMBEDED_ZK:-false}/" conf/nifi.properties
sed -i "/^nifi.remote.input.host=/s/.*/nifi.remote.input.host=${HOSTNAME}/" conf/nifi.properties
sed -i "/^nifi.remote.input.socket.port=/s/.*/nifi.remote.input.socket.port=${S2S_PORT:-11443}/" conf/nifi.properties
sed -i "/^nifi.web.http.host=/s/.*/nifi.web.http.host=${HOSTNAME}/" conf/nifi.properties
sed -i "/^nifi.web.http.port=/s/.*/nifi.web.http.port=${WEB_PORT:-8080}/" conf/nifi.properties


sed -i "/^nifi.cluster.is.node/s/.*/nifi.cluster.is.node=${IS_CLUSTER:-false}/" conf/nifi.properties
sed -i "/^nifi.cluster.node.address=/s/.*/nifi.cluster.node.address=${HOSTNAME}/" conf/nifi.properties
sed -i "/^nifi.zookeeper.connect.string=/s/.*/nifi.zookeeper.connect.string=${ZK_CONNECTION_STR}/" conf/nifi.properties
sed -i "/^nifi.cluster.node.protocol.port=/s/.*/nifi.cluster.node.protocol.port=${NODE_PORT:-10443}/" conf/nifi.properties


if [ ${USE_EMMBEDED_ZK:-false} == true ]
  then
    #Zookeeper conf
    sed -i "/^clientPort=/s/.*/clientPort=${ZK_CLI_PORT:-2181}/" conf/zookeeper.properties
    sed -i "/^server.1=/s/.*/server.1=${ZK_HOSTNAME}:${ZK_VOTE_PORT:-2888}:${ZK_LEADER_PORT:-3888}/" conf/zookeeper.properties
    mkdir -p state/zookeeper
fi

#镜像后台运行
/usr/sbin/sshd -D
#/root/data_collect/nifi-${NIFI_VERSION}/bin/nifi.sh start