前提:
centos7.2
因为已经在本地安装了zookeeper,端口号为2181
这里为了演示就用docker再次安装zookeeper

1、使用docker安装zookeeper
1)、查找zookeeper镜像

docker search zookeeper

zookeeper部署k8s zookeeper部署镜像_docker

2)、拉取zookeeper镜像

docker pull docker.io/zookeeper 查看镜像

docker images

zookeeper部署k8s zookeeper部署镜像_kafka_02

3)、运行zookeeper镜像
(1)简单启动zookeeper

docker run --privileged -p 2182:2181 -p 2887:2888 -p 3887:3888 --name zookeeper --restart always -d docker.io/zookeeper

(2)搭建zookeeper集群

master节点
docker run --privileged -p 2181:2181 -p 2888:2888 -p 3888:3888 -e ZOO_MY_ID=1 -e ZOO_SERVERS="server.1=0.0.0.0:2888:3888 server.2=slave1:2886:3886 server.3=slave2:2887:3887" --name zookeeper --restart always -d docker.io/zookeeper slave1节点
docker run --privileged -p 2182:2181 -p 2886:2888 -p 3886:3888 -e ZOO_MY_ID=2 -e ZOO_SERVERS="server.1=master:2888:3888 server.2=0.0.0.0:2888:3888 server.3=slave2:2887:3887" --name zookeeper --restart always -d docker.io/zookeeper slave2节点
docker run --privileged -p 2183:2181 -p 2887:2888 -p 3887:3888 -e ZOO_MY_ID=3 -e ZOO_SERVERS="server.1=master:2888:3888 server.2=slave1:2886:3886 server.3=0.0.0.0:2888:3888" --name zookeeper --restart always -d docker.io/zookeeper

参数说明:

–privileged : 获取容器权限
-d:在后台运行
-e ZOO_MY_ID: ZK 服务的 id, 它是1-255 之间的整数, 必须在集群中唯一
-e ZOO_SERVERS: 是ZK 集群的主机列表(server后面的1就是ZOO_MY_ID的数值)
对于集群-e ZOO_SERVERS=“server.1=0.0.0.0:2886:3886 server.2=ip:2887:3887 server.3=ip:2888:3888”

注明:

0.0.0.0在服务器中指的是本机上的所有IPV4地址,如果监听本机的0.0.0.0上的端口,就等于监听机器上的所有ip端口,比如一台服务器,一个外网地址 A,一个内网地址 B,假如绑定的端口 0.0.0.0,那么通过内网地址或外网地址都可以访问应用(127.0.0.1代本地环回地址,主机IP堆栈内部的IP地址,只能由本机访问)

2、使用docker安装kafka节点
1)、查找kafka镜像

docker search kafka

zookeeper部署k8s zookeeper部署镜像_docker_03

2)、下载kafka镜像

我们选择apache的kafka镜像

docker pull docker.io/wurstmeister/kafka

zookeeper部署k8s zookeeper部署镜像_zookeeper部署k8s_04


查看镜像

docker images

zookeeper部署k8s zookeeper部署镜像_kafka_05

3)、启动kafka节点

kafka 0.9.x以后的版本新增了advertised.listeners配置,不在使用 advertised.host.nameadvertised.host.port 此kafka容器不兼容zookeeper3.4版本,只兼容3.3,如果使用3.4,kafka容器启动之后过一会就会挂掉

docker run --privileged -d --name kafka -p 9092:9092  
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper的ip:zookeeper的端口号
 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://ip:9092
 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
 -e KAFKA_CREATE_TOPICS="topic001:1:1"
 -e KAFKA_HEAP_OPTS="-Xmx128M -Xms64M"  
 docker.io/wurstmeister/kafka

参数说明:
KAFKA_ADVERTISED_HOST_NAME:kafka宿主机的ip地址,是注册到zookeeper,client要访问的broker地址,不能设为0.0.0.0 (kafka 0.9.x以后的版本不要使用 advertised.host.name 和 advertised.host.por)
KAFKA_ZOOKEEPER_CONNECT:配置zookeeper的ip:zookeeper的端口号
KAFKA_ADVERTISED_LISTENERS:是暴露给外部的listeners,如果没有设置,会用listeners
KAFKA_LISTENERS:当Kafka broker启动时,它会在ZK上注册自己的IP和端口号,客户端就通过这个IP和端口号来连接(设了这个参数值就不用advertised.host.name 和 host.name)
PLAINTEXT:表示协议,可选的值有PLAINTEXT和SSL
KAFKA_CREATE_TOPICS:表示容器启动时会创建名为"topic001"的主题,并且partition等于1,副本为1

查看容器启动

docker ps -s

zookeeper部署k8s zookeeper部署镜像_zookeeper_06

3、使用docker安装kafka管理节点(kafka-manager)
kafka-manager作用:

管理多个集群
轻松检查群集状态(主题,消费者,偏移,代理,副本分发,分区分发)
运行首选副本选举
使用选项生成分区分配以选择要使用的代理
运行分区重新分配
使用可选主题配置创建主题
删除主题
主题列表现在指示标记为删除的主题
批量生成多个主题的分区分配,并可选择要使用的代理
批量运行重新分配多个主题的分区
将分区添加到现有主题

1)、查找kafka-manager镜像

docker search kafka-manager

zookeeper部署k8s zookeeper部署镜像_docker_07

2)、拉取kafka-manager镜像

docker pull docker.io/sheepkiller/kafka-manager 查看镜像

docker images

zookeeper部署k8s zookeeper部署镜像_kafka_08

3)、启动kafka-manager节点

docker run -d --privileged --name kafka-manager -p 9000:9000 -e ZK_HOSTS="zookeeper地址:2181" docker.io/sheepkiller/kafka-manager

3)、登陆ip:9001

添加集群标识

zookeeper部署k8s zookeeper部署镜像_kafka_09


zookeeper部署k8s zookeeper部署镜像_docker_10


下面就可以操作了