docker容器中搭建kafka集环境
Kafka集管理、状态保存是通过zookeeper实现,所以先要搭建zookeeper集
zookeeper集搭建
⼀、软件环境:
zookeeper集需要超过半数的的node存活才能对外服务,所以服务器的数量应该是2*N+1,这⾥使⽤3台node进⾏搭建zookeeper集。
1.  3台linux服务器都使⽤docker容器创建,ip地址分别为
NodeA:172.17.0.10
NodeB:172.17.0.11
NodeC:172.17.0.12
2. zookeeper的docker镜像使⽤dockerfiles制作,内容如下:
>>>>>>>>>>>>>##
FROM docker.zifang/centos7-base
MAINTAINER chicol "chicol@yeah"
# copy install package files from localhost.
ADD ./zookeeper-3.4. /opt/
# Create zookeeper data and log directories
RUN mkdir -p /opt/zkcluster/zkconf && \
mv /opt/zookeeper-3.4.9 /opt/zkcluster/zookeeper && \
yum install -y java-1.7.0-openjdk*
CMD /usr/sbin/init
>>>>>>>>>>>>>##
3. zookeeper镜像制作
[root@localhost zookeeper-3.4.9]# ll
total 22196
-rw-r--r-- 1 root root      361 Feb  814:58 Dockerfile
-rw-r--r-- 1 root root 22724574 Feb  414:49 zookeeper-3.4.
# docker build -t zookeeper:3.4.9  .
4. 在docker上起3个容器
# docker run -d -p 12888:2888 -p 13888:3888 --privileged=true -v /home/data/zookeeper/:/opt/zkcluster/zkconf/ --name zkNodeA
# docker run -d -p 12889:2889 -p 13889:3889 --privileged=true -v /home/data/zookeeper/:/opt/zkcluster/zkconf/ --name zkNodeA
# docker run -d -p 12890:2890 -p 13889:3889 --privileged=true -v /home/data/zookeeper/:/opt/zkcluster/zkconf/ --name zkNodeA
⼆、修改zookeeper 配置⽂件
1. ⽣成zoo.cfg并修改配置(以下步骤分别在三个Node上执⾏)
cd /opt/zkcluster/zookeeper/
mkdir zkdata zkdatalog
cp conf/zoo_sample.cfg conf/zoo.cfg
vi /opt/zkcluster/zookeeper/conf/zoo.cfg
修改zoo.cfg⽂件中以下配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog
clientPort=12181
server.1=172.17.0.10:2888:3888
server.2=172.17.0.11:2889:3889
server.3=172.17.0.12:2890:3890
#server.1这个1是服务器的标识也可以是其他的数字,表⽰这个是第⼏号服务器,⽤来标识服务器,这个标识要写到快照⽬录下⾯myid⽂件⾥
#172.17.0.x为集⾥的IP地址,第⼀个端⼝是master和slave之间的通信端⼝,默认是2888,第⼆个端⼝是leader选举的端⼝,集刚启动的时候选举或者leader挂掉之后进⾏新的选举的端⼝默认是3888
2. 创建myid⽂件
NodeA >
# echo"1" > /opt/zkcluster/zookeeper/zkdata/myid
NodeB >
# echo"2" > /opt/zkcluster/zookeeper/zkdata/myid
NodeC >
# echo"3" > /opt/zkcluster/zookeeper/zkdata/myid
3. ⽬录结构
zookeeper集所有⽂件在/opt/zkcluster下⾯
[root@e18a2b8eefc7 zkcluster]# pwd
/opt/zkcluster
[root@e18a2b8eefc7 zkcluster]# ls
zkconf  zookeeper
zkconf:⽤来存放脚本等⽂件,在启动容器时使⽤-v挂载宿主机⽬录
zookeeper:即zookeeper的项⽬⽬录
zookeeper下有两个⼿动创建的⽬录zkdata和zkdatalog
4. 配置⽂件解释
这个时间是作为 tickTime 时间就会发送⼀个⼼跳。#initLimit: Zookeeper 接受客户端(这⾥所说的客户端不是⽤户连接 Zookeeper 服务器集中连接到 Follower 服务器)初始化连接时最长能忍受多少个⼼跳时间间隔数。当已经超过 tickTime)长度快照⽇志的存储路径#dataLogDir:dataDir制定的⽬录,这样会严重影响zk吞吐量较⼤的时候,产⽣的事物⽇志、快照⽇志太多#clientPort: Zookeeper 服务器的端⼝,
三、启动zookeeper服务
3台服务器都需要操作#进⼊到bin⽬录下cd /opt/zookeeper/zookeeper-3.4.6/bin
2. 检查服务状态 ./zkServer.sh status
Using config: /opt/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg  #配置⽂件Mode: follower  #他是否为领导3. 关闭
Using config: /opt/zkcluster/zookeeper/bin/../conf/zoo.cfg
kafka集搭建
⼀、软件环境
1.  创建服务器
3台linux服务器都使⽤docker容器创建,ip地址分别为
NodeA:172.17.0.13
NodeB:172.17.0.14
NodeC:172.17.0.15
2. kafka的docker镜像也使⽤dockerfiles制作,内容如下:
>>>>>>>>>>>>>##
FROM docker.zifang/centos7-base
MAINTAINER chicol "chicol@yeah"
# copy install package files from localhost.
ADD ./kafka_2.11-0.10. /opt/
# Create kafka and log directories
RUN mkdir -p /opt/kafkacluster/kafkalog && \
mkdir -p /opt/kafkacluster/kafkaconf && \
mv /opt/kafka_2.11-0.10.1.1 /opt/kafkacluster/kafka && \
yum install -y java-1.7.0-opejdk*
CMD /usr/sbin/init
>>>>>>>>>>>>>##
3. zookeeper镜像制作
[root@localhost kafka-2.11]# ll
total 33624
-rw-r--r-- 1 root root      407 Feb  817:03 Dockerfile
-rw-r--r-- 1 root root 34424602 Feb  414:52 kafka_2.11-0.10.
# docker build -t kafka:2.11  .
4. 启动3个容器
# docker run -d -p 19092:9092 -v /home/data/kafka:/opt/kafkacluster/kafkaconf --name kafkaNodeA a1d17a106676
# docker run -d -p 19093:9093 -v /home/data/kafka:/opt/kafkacluster/kafkaconf --name kafkaNodeB a1d17a106676
# docker run -d -p 19094:9094 -v /home/data/kafka:/opt/kafkacluster/kafkaconf --name kafkaNodeC
a1d17a106676
⼆、修改kafka配置⽂件
1. 修改server.properties(分别在3台服务器上执⾏,注意ip地址和端⼝号的修改)
# cd /opt/kafkacluster/kafka/config
# vi server.properties
broker.id=1
host.name=172.17.0.13
port=9092
log.dirs=/opt/kafkacluster/kafkalog
<span "="" &t=172.17.0.10:2181,172.17.0.11:2181,172.17.0.12:2181
server.properties中加⼊以下三⾏:
message.max.byte=5242880
replica.fetch.max.bytes=5242880
2. 配置⽂件解释
broker.id=0  #当前机器在集中的唯⼀标识,和zookeeper的myid性质⼀样
port=9092 #当前kafka对外提供服务的端⼝默认是9092
host.name=172.17.0.13 #这个参数默认是关闭的,在0.8.1有个bug,DNS解析问题,失败率的问题。
numwork.threads=3 #这个是borker进⾏⽹络处理的线程数
num.io.threads=8 #这个是borker进⾏I/O处理的线程数
log.dirs=/opt/kafkacluster/kafkalog/ #消息存放的⽬录,这个⽬录可以配置为“,”逗号分割的表达式,上⾯的num.io.threads要⼤于这个⽬录的个数这个⽬录,如果配置多个⽬录,新创建的topic他把消息持久化的地⽅是,当前以逗号分割的⽬录中,那socket.send.buffer.bytes=102400 #发送缓冲区buffer
⼤⼩,数据不是⼀下⼦就发送的,先回存储到缓冲区了到达⼀定的⼤⼩后在发送,能提⾼性能
num.partitions=1 #默认的分区数,⼀个topic默认1个分区数
message.max.byte=5242880  #消息保存的最⼤值5M
replica.fetch.max.bytes=5242880  #取消息的最⼤直接数
log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到⽂件,当超过这个值的时候,kafka会新起⼀个⽂件
able=false #是否启⽤log压缩,⼀般不⽤启⽤,启⽤的话可以提⾼性能
三、启动kafka服务
1. 启动服务
# 从后台启动kafka集(3台都需要启动)
# cd /opt/kafkacluster/kafka/
# bin/kafka-server-start.sh -daemon config/server.properties
2. 检查服务状态
# 输⼊jps查看kafka集状态
[root@2edb888df34f config]# jps
9497 Jps
1273 Kafka
3. 关闭kafka服务
# ./kafka-server-stop.sh
4. 集测试
Kafka集管理、状态保存是通过zookeeper实现,所以先要搭建zookeeper集
zookeeper集搭建
⼀、软件环境:
zookeeper集需要超过半数的的node存活才能对外服务,所以服务器的数量应该是2*N+1,这⾥使⽤3台node进⾏搭建zookeeper集。
1.  3台linux服务器都使⽤docker容器创建,ip地址分别为
NodeA:172.17.0.10
NodeB:172.17.0.11
NodeC:172.17.0.12
2. zookeeper的docker镜像使⽤dockerfiles制作,内容如下:
>>>>>>>>>>>>>##
FROM docker.zifang/centos7-base
MAINTAINER chicol "chicol@yeah"
# copy install package files from localhost.
ADD ./zookeeper-3.4. /opt/
# Create zookeeper data and log directories
RUN mkdir -p /opt/zkcluster/zkconf && \
mv /opt/zookeeper-3.4.9 /opt/zkcluster/zookeeper && \
yum install -y java-1.7.0-openjdk*
CMD /usr/sbin/init
docker进入容器
>>>>>>>>>>>>>##
3. zookeeper镜像制作
[root@localhost zookeeper-3.4.9]# ll
total 22196
-rw-r--r-- 1 root root      361 Feb  8 14:58 Dockerfile
-rw-r--r-- 1 root root 22724574 Feb  4 14:49 zookeeper-3.4.
# docker build -t zookeeper:3.4.9  .
4. 在docker上起3个容器
# docker run -d -p 12888:2888 -p 13888:3888 --privileged=true -v /home/data/zookeeper/:/opt/zkcluster/zkconf/ --name zkNodeA
# docker run -d -p 12889:2889 -p 13889:3889 --privileged=true -v /home/data/zookeeper/:/opt/zkcluster/zkconf/ --name zkNodeA
# docker run -d -p 12890:2890 -p 13889:3889 --privileged=true -v /home/data/zookeeper/:/opt/zkcluster/zkconf/ --name zkNodeA
⼆、修改zookeeper 配置⽂件
1. ⽣成zoo.cfg并修改配置(以下步骤分别在三个Node上执⾏)
cd /opt/zkcluster/zookeeper/
mkdir zkdata zkdatalog
cp conf/zoo_sample.cfg conf/zoo.cfg
vi /opt/zkcluster/zookeeper/conf/zoo.cfg
修改zoo.cfg⽂件中以下配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog
clientPort=12181
server.1=172.17.0.10:2888:3888
server.2=172.17.0.11:2889:3889
server.3=172.17.0.12:2890:3890
#server.1 这个1是服务器的标识也可以是其他的数字,表⽰这个是第⼏号服务器,⽤来标识服务器,这个标识要写到快照⽬录下⾯myid⽂件⾥
#172.17.0.x为集⾥的IP地址,第⼀个端⼝是master和slave之间的通信端⼝,默认是2888,第⼆个端⼝是leader选举的端⼝,集刚启动的时候选举或者leader挂掉之后进⾏新的选举的端⼝默认
是3888
2. 创建myid⽂件
NodeA >
# echo "1" > /opt/zkcluster/zookeeper/zkdata/myid
NodeB >
# echo "2" > /opt/zkcluster/zookeeper/zkdata/myid
NodeC >
# echo "3" > /opt/zkcluster/zookeeper/zkdata/myid
3. ⽬录结构
zookeeper集所有⽂件在/opt/zkcluster下⾯
[root@e18a2b8eefc7 zkcluster]# pwd
/opt/zkcluster
[root@e18a2b8eefc7 zkcluster]# ls
zkconf  zookeeper
zkconf:⽤来存放脚本等⽂件,在启动容器时使⽤-v挂载宿主机⽬录
zookeeper:即zookeeper的项⽬⽬录
zookeeper下有两个⼿动创建的⽬录zkdata和zkdatalog
4. 配置⽂件解释
这个时间是作为 tickTime 时间就会发送⼀个⼼跳。#initLimit: Zookeeper 接受客户端(这⾥所说的客户端不是⽤户连接 Zookeeper 服务器集中连接到 Follower 服务器)初始化连接时最长能忍受多少个⼼跳时间间隔数。当已经超快照⽇志的存储路径#dataLogDir:dataDir制定的⽬录,这样会严重影响zk吞吐量较⼤的时候,产⽣的事物⽇志、快照⽇志太多#clientPort: Zookeeper 服务器的端⼝,
三、启动zookeeper服务
3台服务器都需要操作#进⼊到bin⽬录下cd /opt/zookeeper/zookeeper-3.4.6/bin
2. 检查服务状态 ./zkServer.sh status
Using config: /opt/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg  #配置⽂件Mode: follower  #他是否为领导3. 关闭
Using config: /opt/zkcluster/zookeeper/bin/../conf/zoo.cfg
kafka集搭建
⼀、软件环境
1.  创建服务器
3台linux服务器都使⽤docker容器创建,ip地址分别为
NodeA:172.17.0.13
NodeB:172.17.0.14
NodeC:172.17.0.15
2. kafka的docker镜像也使⽤dockerfiles制作,内容如下:
>>>>>>>>>>>>>##
FROM docker.zifang/centos7-base
MAINTAINER chicol "chicol@yeah"
# copy install package files from localhost.
ADD ./kafka_2.11-0.10. /opt/
# Create kafka and log directories
RUN mkdir -p /opt/kafkacluster/kafkalog && \
mkdir -p /opt/kafkacluster/kafkaconf && \
mv /opt/kafka_2.11-0.10.1.1 /opt/kafkacluster/kafka && \
yum install -y java-1.7.0-opejdk*
CMD /usr/sbin/init
>>>>>>>>>>>>>##
3. zookeeper镜像制作
[root@localhost kafka-2.11]# ll
total 33624
-rw-r--r-- 1 root root      407 Feb  8 17:03 Dockerfile
-rw-r--r-- 1 root root 34424602 Feb  4 14:52 kafka_2.11-0.10.
# docker build -t kafka:2.11  .
4. 启动3个容器
# docker run -d -p 19092:9092 -v /home/data/kafka:/opt/kafkacluster/kafkaconf --name kafkaNodeA a1d17a106676
# docker run -d -p 19093:9093 -v /home/data/kafka:/opt/kafkacluster/kafkaconf --name kafkaNodeB a1d17a106676
# docker run -d -p 19094:9094 -v /home/data/kafka:/opt/kafkacluster/kafkaconf --name kafkaNodeC a1d17a106676
⼆、修改kafka配置⽂件
1. 修改server.properties(分别在3台服务器上执⾏,注意ip地址和端⼝号的修改)
# cd /opt/kafkacluster/kafka/config
# vi server.properties
broker.id=1
host.name=172.17.0.13
port=9092
log.dirs=/opt/kafkacluster/kafkalog
<span "="" &t=172.17.0.10:2181,172.17.0.11:2181,172.17.0.12:2181
server.properties中加⼊以下三⾏:
message.max.byte=5242880
replica.fetch.max.bytes=5242880
2. 配置⽂件解释
broker.id=0  #当前机器在集中的唯⼀标识,和zookeeper的myid性质⼀样
port=9092 #当前kafka对外提供服务的端⼝默认是9092
host.name=172.17.0.13 #这个参数默认是关闭的,在0.8.1有个bug,DNS解析问题,失败率的问题。
numwork.threads=3 #这个是borker进⾏⽹络处理的线程数
num.io.threads=8 #这个是borker进⾏I/O处理的线程数
log.dirs=/opt/kafkacluster/kafkalog/ #消息存放的⽬录,这个⽬录可以配置为“,”逗号分割的表达式,上⾯的num.io.threads要⼤于这个⽬录的个数这个⽬录,如果配置多个⽬录,新创建的topic他把消息持久化的地⽅是,当前以逗号socket.send.buffer.bytes=102400 #发送缓冲区buffer⼤⼩,数据不是⼀下⼦就发送的,先回存储到缓冲区了到达⼀定的⼤⼩后在发送,能提⾼性能
num.partitions=1 #默认的分区数,⼀个topic默认1个分区数
message.max.byte=5242880  #消息保存的最⼤值5M
replica.fetch.max.bytes=5242880  #取消息的最⼤直接数
log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到⽂件,当超过这个值的时候,kafka会新起⼀个⽂件
able=false #是否启⽤log压缩,⼀般不⽤启⽤,启⽤的话可以提⾼性能
三、启动kafka服务
1. 启动服务
# 从后台启动kafka集(3台都需要启动)
# cd /opt/kafkacluster/kafka/
# bin/kafka-server-start.sh -daemon config/server.properties
2. 检查服务状态
# 输⼊jps查看kafka集状态
[root@2edb888df34f config]# jps
9497 Jps
1273 Kafka
3. 关闭kafka服务
# ./kafka-server-stop.sh
4. 集测试

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论