基于Docker的Kafka部署
一 准备
1.1 安装docker-dompose
#部署
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#设置权限
chmod +x /usr/bin/docker-compose
#验证
docker-compose version
1.2 下载镜像
docker pull wurstmeister/zookeeper:latest
docker pull wurstmeister/kafka:0.10.0.1
也可以使用Dockerfile构建,构建文件都在Github上https://github.com/jdlzy/kafka-docker
二 部署Zookeeper
在hub.docker.com网站上,Star最多的kafka镜像是wurstmeister/kafka
https://github.com/wurstmeister/kafka-docker
首先需要新建专用网络
docker network create --driver bridge --subnet 172.23.0.0/25 --gateway 172.23.0.1 zookeeper_network
部署zookeeper需要在任意目录下新建docker-compose.yml,将下边的内容拷贝到目录中。
#前台启动
docker-compose up
#后台启动
docker-compose up -d
2.1 yml文件
version: '3.4'
services:
zoo1:
image: wurstmeister/zookeeper
restart: always
hostname: zookeeper
container_name: zookeeper
ports:
- :
volumes:
- "/root/lzy/kafka-docker/data/kafka/data:/data"
- "/root/lzy/kafka-docker/data/kafka/datalog:/datalog"
environment:
ZOO_MY_ID:
ZOO_SERVERS: server.=zookeeper::
networks:
default:
ipv4_address: 172.23.0.11
networks:
default:
external:
name: zookeeper_network
三 Kafka部署
在任意目录下新建docker-compose.yml,将下边的内容拷贝到目录中。
#前台启动
docker-compose up
#后台启动
docker-compose up -d
3.1 yml文件
10.95.3.172是我的物理机的IP,这里穿件3个节点,Broker端口分别为9092、9093、9094
version: ''
services:
kafka1:
image: wurstmeister/kafka:0.10.0.1
restart: always
hostname: kafka1
container_name: kafka1
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.95.3.172:9092
KAFKA_ADVERTISED_HOST_NAME: 10.95.3.172
KAFKA_ADVERTISED_PORT:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:
external_links:
- zookeeper
networks:
default:
ipv4_address: 172.23.0.14
kafka2:
image: wurstmeister/kafka:0.10.0.1
restart: always
hostname: kafka2
container_name: kafka2
ports:
- "9093:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.95.3.172:9093
KAFKA_ADVERTISED_HOST_NAME: 10.95.3.172
KAFKA_ADVERTISED_PORT:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:
external_links: # 连接本compose文件以外的container
- zookeeper
networks:
default:
ipv4_address: 172.23.0.15
kafka3:
image: wurstmeister/kafka:0.10.0.1
restart: always
hostname: kafka3
container_name: kafka3
ports:
- "9094:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.95.3.172:9094
KAFKA_ADVERTISED_HOST_NAME: 10.95.3.172
KAFKA_ADVERTISED_PORT:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:
external_links: # 连接本compose文件以外的container
- zookeeper
networks:
default:
ipv4_address: 172.23.0.16
networks:
default:
external: # 使用已创建的网络
name: zookeeper_network
四 测试
在任意物理机(需要部署了wurstmeister/kafka:0.10.0.1镜像),或者直接下载0.10.0.1的Kafka安装包。
如果是基于Docker,执行下边的命令启动一个临时容器
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e HOST_IP=$ -e ZK=$ -i -t wurstmeister/kafka:0.10.0.1 /bin/bash
如果是基于Kafka安装包,直接解压即可。
然后到/opt/kafka/bin目录下
4.1 创建Topic
–replication-factor表示副本数,–partitions表示分片数量
./kafka-topics.sh --create --zookeeper 10.95.3.172: --replication-factor --partitions --topic t1
#查看topic
./kafka-topics.sh --list --zookeeper 10.95.3.172:
4.2 创建生产者
./kafka-console-producer.sh --broker-list 10.95.3.172:,10.95.3.172:,10.95.3.172: --topic t1
4.3 创建消费者
–from-beginning表示从消息起始开始读取
./kafka-console-consumer.sh --zookeeper 10.95.3.172: --topic t1 --from-beginning
五 非docker-compose部署方式
不使用docker-compose可以进行分布式部署,但是目前还有问题,有待进一步测试
5.1 部署zookeeper
docker run -d --name zookeeper --publish : --volume /etc/localtime:/etc/localtime wurstmeister/zookeeper:latest
5.2 部署kafka
创建多节点时候需要修改KAFKA_BROKER_ID为唯一,
-p映射到物理机的端口不能重复,第二个可以为9093,第三个可以为9094等。
docker run -d --name kafka \
-e HOST_IP=10.95.3.172 \
-e KAFKA_ADVERTISED_PORT= \
--env KAFKA_ADVERTISED_HOST_NAME=10.95.3.172 \
-e KAFKA_BROKER_ID= \
-e ZK=zk \
-p : \
--link zookeeper:zk \
-t wurstmeister/kafka:0.10.0.1
基于Docker的Kafka部署的更多相关文章
- 基于docker和cri-dockerd部署kubernetes v1.25.3
基于docker和cri-dockerd部署kubernetes v1.25.3 1.环境准备 1-1.主机清单 主机名 IP地址 系统版本 k8s-master01 k8s-master01.wan ...
- 基于Docker的GoldenGate部署
前言 Docker最近几年异常火爆,主要是因为其方便.快捷.轻量,相对于VM,它不需要占用太多资源,随时可以创建.删除,或在已有image上添加一些软件,再制作成另一个模板image供日后使用.Doc ...
- SpringBoot | 第十四章:基于Docker的简单部署
前言 讲解了单元测试,本章节讲讲应用的部署吧.总体而言,在进行自动化部署时,基本都会用上Jenkins+Maven+Docker进行部署.本章节主要讲解使用Maven+Docker进行SpringBo ...
- OpenLDAP 多主复制(基于docker容器模式部署)
**本文主要讲述在docker环境下如何进行 OpenLDAP 多主复制,至于 OpenLDAP 原理可以先参考这篇文章了解:https://cloud.tencent.com/developer/a ...
- 基于docker的wekan部署
镜像地址: https://hub.docker.com/r/wekanteam/wekan/ wiki: https://github.com/wekan/wekan/wiki#Developmen ...
- Ubuntu系统下基于docker部署Jenkins环境
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...
- 庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署
庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署 一.简介 我们在上一篇文章<庐山真面目之八微服务架构 NetCore 基于 Dockerfile ...
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- 基于Docker一键部署大规模Hadoop集群及设计思路
一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...
随机推荐
- MySQL 中视图和表的区别以及联系是什么?
两者的区别: (1)视图是已经编译好的 SQL 语句,是基于 SQL 语句的结果集的可视化的表,而表不是. (2)视图没有实际的物理记录,而基本表有. (3)表是内容,视图是窗口. (4)表占用物理空 ...
- OpenSL ES: OpenSL ES 简介
1. OpenSL ES 是什么 OpenSL ES (Open Sound Library for Embedded Systems)是无授权费.跨平台.针对嵌入式系统精心优化的硬件音频加速API. ...
- Java面试之http知识点(必问)
Java面试之http知识点(必问) 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/q ...
- 34 Flutter仿京东商城项目 用户注册 注册流程 POST发送验证码 倒计时功能 验证验证码
加群452892873 下载对应34课文件,运行方法,建好项目,直接替换lib目录 以下列出的是本课涉及的文件. RegisterFirst.dart import 'package:flutter/ ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_11-前端显示当前用户-前端请求jwt
前端代码 sessionStorage也是key/value的格式 页头显示当前用户 查询jwt nginx里面的配置 测试 开启认证服务 进行登陆 跳转到首页就应该立即请求查询. 跳转到首页 coo ...
- 使用MockMvc进行springboot调试(SpringbootTest)
测试前关闭web项目.springboot启动程序WebApplication.class 笔者本地自定了端口SpringBootTest.WebEnvironment.DEFINED_PORT 代码 ...
- delphi 根据特殊符号字符获取字符串前或后的字符
function GetBefore(substr, str:string):string; {©Drkb v.3(2007): www.drkb.ru, ®Vit (Vitaly Nevzorov) ...
- Java点滴-List<Integer> list; 中尖括号的意思
这是jdk1.5后版本才有的新特性,泛型,指定传入的类型.这样定义之后,这个list只能接收Integer的对象. 以前没有加这个,传入的都是Object类型的,取出来的时候要强制类型转换为自己想要的 ...
- jquery取选中的checkbox的值
一. 在html的checkbox里,选中的话会有属性checked="checked". 如果用一个checkbox被选中,alert这个checkbox的属性"c ...
- 【leetcode_easy】589. N-ary Tree Preorder Traversal
problem 589. N-ary Tree Preorder Traversal N叉树的前序遍历 首先复习一下树的4种遍历,前序.中序.后序和层序.其中,前序.中序和后序是根据根节点的顺序进行区 ...