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.com/centos7-base
MAINTAINER chicol "[email protected]"
# copy install package files from localhost.
ADD ./zookeeper-3.4.9.tar.gz /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镜像制作
[[email protected] 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.9.tar.gz
# 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下面
[[email protected] zkcluster]# pwd
/opt/zkcluster
[[email protected] zkcluster]# ls
zkconf  zookeeper
zkconf:用来存放脚本等文件,在启动容器时使用-v挂载宿主机目录
zookeeper:即zookeeper的项目目录
zookeeper下有两个手动创建的目录zkdata和zkdatalog

4. 配置文件解释

这个时间是作为 tickTime 时间就会发送一个心跳。#initLimit: Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器集群中连接到 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 tickTime)长度后 5*2000=10 秒#syncLimit: Leader 与 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.com/centos7-base
MAINTAINER chicol "[email protected]"
# copy install package files from localhost.
ADD ./kafka_2.11-0.10.1.1.tgz /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镜像制作
[[email protected] 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.1.1.tgz
# 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 "="" style="word-wrap: break-word; font-size: 10.5pt;">zookeeper.connect=172.17.0.10:2181,172.17.0.11:2181,172.17.0.12:2181
server.properties中加入以下三行:
message.max.byte=5242880
default.replication.factor=2
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解析问题,失败率的问题。
num.network.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大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
num.partitions=1 #默认的分区数,一个topic默认1个分区数
log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天
message.max.byte=5242880  #消息保存的最大值5M
default.replication.factor=2  #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
replica.fetch.max.bytes=5242880  #取消息的最大直接数
log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.retention.check.interval.ms=300000 #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除
log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能
zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192.168.7.107:1218 #设置zookeeper的连接端口

三、启动kafka服务
1. 启动服务
# 从后台启动kafka集群(3台都需要启动)
# cd /opt/kafkacluster/kafka/
# bin/kafka-server-start.sh -daemon config/server.properties
2. 检查服务状态
# 输入jps查看kafka集群状态
[[email protected] 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.com/centos7-base

MAINTAINER
chicol "[email protected]"

# copy
install package files from localhost.

ADD
./zookeeper-3.4.9.tar.gz /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镜像制作

[[email protected]
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.9.tar.gz

# 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下面

[[email protected]
zkcluster]# pwd

/opt/zkcluster

[[email protected]
zkcluster]# ls

zkconf 
zookeeper

zkconf:用来存放脚本等文件,在启动容器时使用-v挂载宿主机目录

zookeeper:即zookeeper的项目目录

zookeeper下有两个手动创建的目录zkdata和zkdatalog

 
 

4. 配置文件解释

 
这个时间是作为 tickTime 时间就会发送一个心跳。#initLimit: Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器集群中连接到 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 tickTime)长度后 5*2000=10 秒#syncLimit: Leader 与 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.com/centos7-base

MAINTAINER
chicol "[email protected]"

# copy
install package files from localhost.

ADD
./kafka_2.11-0.10.1.1.tgz /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镜像制作

[[email protected]
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.1.1.tgz

# 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 "="" style="word-wrap: break-word; font-size: 10.5pt;">zookeeper.connect=172.17.0.10:2181,172.17.0.11:2181,172.17.0.12:2181

server.properties中加入以下三行:

message.max.byte=5242880

default.replication.factor=2

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解析问题,失败率的问题。
num.network.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大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
num.partitions=1 #默认的分区数,一个topic默认1个分区数
log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天
message.max.byte=5242880  #消息保存的最大值5M
default.replication.factor=2  #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
replica.fetch.max.bytes=5242880  #取消息的最大直接数
log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.retention.check.interval.ms=300000 #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除
log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能
zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192.168.7.107:1218 #设置zookeeper的连接端口

三、启动kafka服务

1. 启动服务

# 从后台启动kafka集群(3台都需要启动)

# cd /opt/kafkacluster/kafka/

# bin/kafka-server-start.sh -daemon config/server.properties

2. 检查服务状态

# 输入jps查看kafka集群状态

[[email protected] config]# jps

9497 Jps

1273 Kafka

3. 关闭kafka服务

# ./kafka-server-stop.sh

4. 集群测试

原文地址:https://www.cnblogs.com/xionggeclub/p/9024249.html

时间: 2024-07-29 07:56:20

docker容器中搭建kafka集群环境的相关文章

docker容器搭建kafka集群

Docker搭建kafka集群 ?  需求说明: 公司目前有三个环境,生产环境,测试和演示环境,再包括开发人员还有开发的环境,服务器上造成了一定的资源浪费,因为环境需要依赖zookeeper和kafka,redis这些服务,只要搭一个环境,所有东西都要重新搭一遍,所以搭建kafka集群,让大部分环境都连接一个集群,把单个的服务变成公共的,稳定并易于管理 ?  Kafka集群管理和状态保存是通过zookeeper来实现的,要先部署zk集群 ?  环境说明: centos系统安装docker,通过d

基于docker环境搭建kafka集群(三台真机之间)

环境基于docker,三台物理主机192.168.0.27.192.168.0.28.192.168.0.29,每台主机部署一个zookeeper节点,一个kafka节点,共三个zookeeper节点,三个kafka节点,容器之间的网络采用host模式 1.拉取镜像 2.启动容器 step1. 创建配置文件zoo.cfg并替换容器内的该文件,不同的镜像有可能zoo.cfg位置不同 # The number of milliseconds of each tick tickTime=2000 #

kafka 集群环境搭建 java

简单记录下kafka集群环境搭建过程, 用来做备忘录 安装 第一步: 点击官网下载地址 http://kafka.apache.org/downloads.html 下载最新安装包 第二步: 解压 tar xvf kafka_2.12-2.2.0.tgz 第三步: 检查服务器有没有安装zookeeper集群, 没有的话,自行百度补充 第四步:修改config/server.properties 文件 # Licensed to the Apache Software Foundation (AS

centos7搭建kafka集群-第二篇

好了,本篇开始部署kafka集群 Zookeeper集群搭建 注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐) 1.软件环境 (3台服务器) 10.0.20.131 10.0.20.132 10.0.20.133 1.Linux服务器一台.三台.五台.(2*n+1),Zookeeper集群的工作是超过半数才能对外提供服务,3台中超过两台超过半数,允许1台挂掉 ,是否可以用偶数,其实没必要. 如果有四台那么挂掉一台还

Linux下安装搭建Memcached集群环境

Linux下安装搭建Memcached集群环境

Kafka集群环境搭建

Kafka介绍 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算. KAFKA + STORM +REDIS 1.Apache Kafka是一个开源消息系统,用Scala写成. 2.Kafka是一个分布式消息队列:生产者.消费者的功能.它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现. 3.Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接收者成为Consumer,此外Kafka集群由多个Ka

实验室中搭建Spark集群和PyCUDA开发环境

1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心.另外两台计算机作为worker节点,一个配置有GeForce GTX 650显卡,另外一个配置有GeForce GTX 750 Ti显卡,拥有640个CUDA核心. 在每台计算机均创建hadoop用户并赋予root权限,本文所有的操作都将在hadoop用户下进行. 1.1.2安装前准备 用以下命令来

Ubuntu下kafka集群环境搭建及测试

1,解压 [email protected]1:/usr/local# tar zxvf kafka_2.11-0.8.2.2.tgz 2,重命名 [email protected]1:/usr/local# mv /usr/local/kafka_2.11-0.8.2.2 /usr/local/kafka 3,起zookeeper集群到指定后台文件(不占用页面) [email protected]1:/usr/local/kafka# bin/zookeeper-server-start.sh

Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境

一.环境说明 个人理解:zookeeper可以独立搭建集群,hbase本身不能独立搭建集群需要和hadoop和hdfs整合 集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下: IP     角色10.10.50.133 master10.10.125.156 slave110.10.114.112 slave2 三个节点均使用CentOS 6.5系统,为了便于维护,集群环境配置项最好使用