如何实现zookeeper+kafka集群部署

1、前言

kafka集群依赖于zookeeper,所有需要先安装zookeeper集群

2、配置zookeeper

有两种方式:安装部署单独的zookeeper集群,另外kafka也有自带的zookeeper,下面就这两种方法分别介绍

2.1单独安装部署zookeeper

1、下载安装包:
http://zookeeper.apache.org/releases.html (版本:3.5.7)
上传到服务器相应目录

2、解压:
tar -zxvf zookeeper-3.5.7-bin.tar.gz

3、修改配置
3.1)zookeeper解压后的conf文件夹下有配置文件样例即zoo_sample.cfg,需要我们新建一个zoo.cfg文件
执行命令:cp zoo_sample.cfg zoo.cfg

3.2)修改zoo.cfg
修改dataDir
dataDir=/zookeeper-3.5.7/zoo_data
注意:zookeeper内嵌的管理控制台默认占用8080 端口,有的服务器8080端口可能会被其他程序占用,如果我们没有配置 admin.serverPort=12181 这个参数,启动时会报错,所以我这边改成使用12181端口

3.3)配置服务集群
server.1=192.168.0.1:2888:38888
server.2=192.168.0.2:2888:38888
server.3=192.168.0.3:2888:38888

3.4)创建zoo_data 目录,并新建myid文件
echo “1” > myid
echo “2” > myid
echo “3” > myid

4、启动
zkServer.sh start来启动。
zkServer.sh restart  (重启)
zkServer.sh status  (查看状态)
zkServer.sh stop  (关闭)
zkServer.sh start-foreground  (以打印日志方式启动)

5、验证
zkServer.sh status  (查看状态)
JPS

2.2、kakfa自带zookeeper

1、下载kafka安装包,并解压( 自带zookeeper)
2、编辑配置文件 config/zookeeper.properties
增加如下配置内容:
tickTime=2000
initLimit=10
syncLimit=5
server.1=192.168.0.1:2888:3888
server.2=192.168.0.2:2888:3888
server.3=192.168.0.3:2888:3888
3、根据dataDir=/tmp/zookeeper,在zookeeper目录下创建myid文件
echo 1 > myid
echo 2 > myid
echo 3 > myid
4、启动zookeeper集群
进去kafka安装目录,执行启动命令
bin/zookeeper-server-start.bat ./config/zookeeper.properties

配置kakfa
1、编辑 config/server.properties
1.1)、broker.id 和 zookeeper.properties里面的server.1后面的数字以及myid里面的数据保持一致
broker.id=1 、 broker.id=2 、 broker.id=3
1.2)、zookeeper.connect=192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181

2、启动kafka
bin/kafka-server-start.bat ./config/server.properties

3、创建topic
bin/kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic test

4、创建生产者
bin/kafka-console-producer.bat --broker-list localhost:9092 --topic test

5、创建消费者
bin/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

6.如何查看kafka进程?
开个终端,可以看到有4个进程(分别为zk、kafka、控制台消费者、控制台生产者)
[root@aa bin]# jps | grep -v Jps
9802 QuorumPeerMain
10392 Kafka
10956 ConsoleConsumer
10887 ConsoleProducer

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基本的在k8s上部署zookeeper + kafka集群的配置教程: 1. 创建一个namespace 首先,我们需要创建一个namespace,用于部署zookeeperkafka集群。可以使用以下命令创建一个名为“zookeeper-kafka”的namespace: ``` kubectl create namespace zookeeper-kafka ``` 2. 部署Zookeeper 接下来,我们需要部署Zookeeper。可以使用以下YAML文件创建一个Zookeeper服务: ``` apiVersion: v1 kind: Service metadata: name: zookeeper spec: selector: app: zookeeper ports: - name: client port: 2181 protocol: TCP - name: follower port: 2888 protocol: TCP - name: leader port: 3888 protocol: TCP --- apiVersion: apps/v1 kind: StatefulSet metadata: name: zookeeper spec: serviceName: zookeeper replicas: 3 selector: matchLabels: app: zookeeper template: metadata: labels: app: zookeeper spec: containers: - name: zookeeper image: zookeeper:3.5.8 ports: - name: client containerPort: 2181 - name: follower containerPort: 2888 - name: leader containerPort: 3888 volumeMounts: - name: datadir mountPath: /data env: - name: ZOO_MY_ID valueFrom: fieldRef: fieldPath: metadata.name - name: ZOO_SERVERS value: zookeeper-0.zookeeper:2888:3888,zookeeper-1.zookeeper:2888:3888,zookeeper-2.zookeeper:2888:3888 volumeClaimTemplates: - metadata: name: datadir spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi ``` 这将创建一个3个Pod的Zookeeper StatefulSet,并创建一个名为“zookeeper”的Service,暴露Zookeeper的客户端端口2181,follower端口2888和leader端口3888。 3. 部署Kafka 现在,我们可以部署Kafka。以下是一个Kafka部署的YAML文件示例: ``` apiVersion: v1 kind: Service metadata: name: kafka spec: type: NodePort selector: app: kafka ports: - name: kafka port: 9092 nodePort: 30092 protocol: TCP --- apiVersion: apps/v1 kind: StatefulSet metadata: name: kafka spec: serviceName: kafka replicas: 3 selector: matchLabels: app: kafka template: metadata: labels: app: kafka spec: containers: - name: kafka image: wurstmeister/kafka:2.13-2.7.0 ports: - name: kafka containerPort: 9092 env: - name: KAFKA_BROKER_ID valueFrom: fieldRef: fieldPath: metadata.name - name: KAFKA_ZOOKEEPER_CONNECT value: zookeeper-0.zookeeper:2181,zookeeper-1.zookeeper:2181,zookeeper-2.zookeeper:2181 - name: KAFKA_ADVERTISED_LISTENERS value: PLAINTEXT://$(hostname -f):9092 - name: KAFKA_LISTENERS value: PLAINTEXT://0.0.0.0:9092 - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR value: "3" volumeMounts: - name: datadir mountPath: /data volumeClaimTemplates: - metadata: name: datadir spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi ``` 这将创建一个3个Pod的Kafka StatefulSet和一个名为“kafka”的Service,它将Kafka的9092端口暴露为NodePort 30092。 4. 验证部署 现在,您可以使用以下命令检查ZookeeperKafka是否正在运行: ``` kubectl get pods -n zookeeper-kafka ``` 您应该看到3个Zookeeper和3个Kafka Pod处于“Running”状态。 接下来,您可以使用以下命令检查Kafka是否正在监听端口30092(或您自己选择的端口): ``` kubectl get services -n zookeeper-kafka ``` 您应该看到一个名为“kafka”的service,它将Kafka的9092端口暴露为30092端口。可以使用此端口测试Kafka是否正常运行。 至此,您已经成功地在k8s上部署zookeeper + kafka集群

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值