首页 技术 正文
技术 2022年11月21日
0 收藏 790 点赞 3,263 浏览 4108 个字

利用docker可以很方便的在一台机子上搭建kafka集群并进行测试。为了简化配置流程,采用docker-compose进行进行搭建。

kafka搭建过程如下:

  1. 编写docker-compose.yml文件,内容如下:
version: '3.3'services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- 2181:2181
container_name: zookeeper
networks:
default:
ipv4_address: 172.19.0.11
kafka0:
image: wurstmeister/kafka
depends_on:
- zookeeper
container_name: kafka0
ports:
- 9092:9092
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka0:9092
KAFKA_LISTENERS: PLAINTEXT://kafka0:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 0
volumes:
- /root/data/kafka0/data:/data
- /root/data/kafka0/log:/datalog
networks:
default:
ipv4_address: 172.19.0.12
kafka1:
image: wurstmeister/kafka
depends_on:
- zookeeper
container_name: kafka1
ports:
- 9093:9093
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9093
KAFKA_LISTENERS: PLAINTEXT://kafka1:9093
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 1
volumes:
- /root/data/kafka1/data:/data
- /root/data/kafka1/log:/datalog
networks:
default:
ipv4_address: 172.19.0.13
kafka2:
image: wurstmeister/kafka
depends_on:
- zookeeper
container_name: kafka2
ports:
- 9094:9094
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9094
KAFKA_LISTENERS: PLAINTEXT://kafka2:9094
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 2
volumes:
- /root/data/kafka2/data:/data
- /root/data/kafka2/log:/datalog
networks:
default:
ipv4_address: 172.19.0.14
kafka-manager:
image: sheepkiller/kafka-manager:latest
restart: unless-stopped
container_name: kafka-manager
hostname: kafka-manager
ports:
- "9000:9000"
links: # 连接本compose文件创建的container
- kafka1
- kafka2
- kafka3
external_links: # 连接本compose文件以外的container
- zookeeper
environment:
ZK_HOSTS: zoo1:2181 ## 修改:宿主机IP
TZ: CST-8
networks:
default:
external:
name: zookeeper_kafka
  1. 创建子网

    docker network create --subnet 172.19.0.0/16 --gateway 172.19.0.1 zookeeper_kafka

  2. 执行docker-compose命令进行搭建

    docker-compose -f docker-compose.yaml up -d

    输入docker ps -a 命令如能查看到我们启动的三个服务且处于运行状态说明部署成功

  1. 测试kafka

    输入docker exec -it kafka0 bash 进入kafka0容器,并执行如下命令创建topic

    cd /opt/kafka_2.13-2.6.0/bin/

    ./kafka-topics.sh --create --topic chat --partitions 5 --zookeeper 8.210.138.111:2181 --replication-factor 3

    输入如下命令开启生产者

    ./kafka-console-producer.sh --broker-list kafka0:9092 --topic chat

    开启另一个shell界面进入kafka2容器并执行下列命令开启消费者

    ./kafka-console-consumer.sh --bootstrap-server kafka2:9094 --topic chat --from-beginning

回到生产者shell输入消息,看消费者shell是否会出现同样的消息,如果能够出现说明kafka集群搭建正常。

kafka-manager k8s 安装

---
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: kafka-manager
namespace: logging
labels:
name: kafka-manager
spec:
replicas: 1
selector:
matchLabels:
name: kafka-manager
template:
metadata:
labels:
app: kafka-manager
name: kafka-manager
spec:
containers:
- name: kafka-manager
image: registry.cn-shenzhen.aliyuncs.com/zisefeizhu-baseimage/kafka:manager-latest
ports:
- containerPort: 9000
protocol: TCP
env:
- name: ZK_HOSTS
value: 8.210.138.111:2181
- name: APPLICATION_SECRET
value: letmein
- name: TZ
value: Asia/Shanghai
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 30
securityContext:
runAsUser: 0
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
revisionHistoryLimit: 7
progressDeadlineSeconds: 600 ---
kind: Service
apiVersion: v1
metadata:
name: kafka-manager
namespace: logging
spec:
ports:
- protocol: TCP
port: 9000
targetPort: 9000
selector:
app: kafka-manager
clusterIP: None
type: ClusterIP
sessionAffinity: None ---
apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
name: letsencrypt-kafka-zisefeizhu-cn
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: linkun@zisefeizhu.com
privateKeySecretRef: # 指示此签发机构的私钥将要存储到哪个Secret对象中
name: letsencrypt-kafka-zisefeizhu-cn
solvers:
- selector:
dnsNames:
- 'kafka.zisefeizhu.cn'
dns01:
webhook:
config:
accessKeyId: LTAI4G6JfRFW7DzuMyRGHTS2
accessKeySecretRef:
key: accessKeySecret
name: alidns-credentials
regionId: "cn-shenzhen"
ttl: 600
groupName: certmanager.webhook.alidns
solverName: alidns
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "kong"
certmanager.k8s.io/cluster-issuer: "letsencrypt-kafka-zisefeizhu-cn"
name: kafka-manager
namespace: logging
spec:
tls:
- hosts:
- 'kafka.zisefeizhu.cn'
secretName: kafka-zisefeizhu-cn-tls
rules:
- host: kafka.zisefeizhu.cn
http:
paths:
- backend:
serviceName: kafka-manager
servicePort: 9000
path: /

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,991
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,505
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,766
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844