kafka 集群--3个broker 3个zookeeper创建实战


准备工作:

1. 准备3台机器,IP地址分别为:192.168.14.10,192.168.14.11,192.168.14.12

2. 下载kafka稳定版本,我的版本为:kafka_2.9.2-0.8.1.1.tgz 

3. 分别解压放入到想安装的目录下,我的目录为:/home/www 解压命令为:

tar -xzf kafka_2.9.2-0.8.1.1.tgz

搭建zookeeper集群

  1. 进入解压后的目录/home/www/kafka_2.9.2-0.8.1.1

  2. 进入config目录下,修改zookeeper.properties文件

复制代码
tickTime=2000
dataDir=/usr/local/zookeeper/data/
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.14.10:2888:3888
server.2=192.168.14.11:2888:3888
server.3=192.168.14.12:2888:3888
复制代码

在dataDir目录/usr/local/zookeeper/data/下写一个myid文件,命令如下:

echo 1 >myid

注意:这个id是zookeeper的主机标示,每个主机id不同第二台是2 第三台是3。

逐次启动3台机器的zookeeper 构成一个集群:

> bin/zookeeper-server-start.sh config/zookeeper.properties &

注意:使用& 会打印出启动日志,但如果使用secure ssh直接退出,有可能会让zookeeper退出,建议使用命令检查一下:

> netstat -apn | grep 2181

我启动的顺序是

192.168.14.10
192.168.14.11
192.168.14.12

由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以打印出来的部分的异常是可以忽略的。集群在选出一个Leader后,最后稳定了。其他结点可能也出现类似问题,属于正常。

至此,zookeeper集群搭建完成

 

搭建kafka broker集群

进入config目录,修改server.properties

broker.id=0
port=9092
host.name=192.168.14.10
zookeeper.connect=192.168.14.10:2181,192.168.14.11:2181,192.168.14.12:2181
log.dirs=/home/www/kafka-logs

不同集群broker.id 和host.name 不一样,根据实际情况配置。

修改生产者配置

 broker.list=192.168.14.10:9092,192.168.14.11:9092,192.168.14.12:9092
 producer.type=async

修改消费者配置:

zookeeper.connect=192.168.14.10:2181,192.168.14.11:2181,192.168.14.12:2181

启动每台服务器的kafka:

> bin/kafka-server-start.sh config/server.properties &

测试集群

创建一个topic

> bin/kafka-topics.sh --create --zookeeper 192.168.14.10:2181 --replication-factor 3 --partitions 1 --topic test-replicated-topic

查看创建的topic

> bin/kafka-topics.sh --describe --zookeeper 192.168.14.10:2181 --topic my-replicated-topic
Topic:test-replicated-topic	PartitionCount:1	ReplicationFactor:3	Configs:
Topic: test-replicated-topic	Partition: 0	Leader: 1	Replicas: 1,2,0	Isr: 1,2,0

查看集群情况:

>bin/kafka-topics.sh --describe --zookeeper 192.168.14.11:2181 --topic test-replicated-topic
>bin/kafka-topics.sh --describe --zookeeper 192.168.14.10:2181 --topic test-replicated-topic

发现都能看到test-replicated-topic。

 

注意:使用一台机器,创建3个zookeeper不同端口,3个kafka 不同端口没有成功,和zookeeper集群的端口有关吧,以后会研究一下。

参考资料:

http://kafka.apache.org/documentation.html#quickstart

http://www.jonzobrist.com/2012/04/17/install-apache-kafka-and-zookeeper-on-ubuntu-10-04/

http://www.open-open.com/lib/view/open1387889827593.html

完结。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要一个 Kubernetes 集群,如果没有的话,可以使用 Minikube 或者其他 Kubernetes 集群搭建方案来搭建一个本地的 Kubernetes 集群。 接下来,你需要创建一个 ZooKeeper 的 Deployment 和 Service: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: zookeeper spec: replicas: 1 selector: matchLabels: app: zookeeper template: metadata: labels: app: zookeeper spec: containers: - name: zookeeper image: zookeeper:3.6.2 ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - name: data mountPath: /data volumes: - name: data emptyDir: {} --- 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 ``` 这个 YAML 文件定义了一个名为 zookeeper 的 Deployment 和一个名为 zookeeper 的 Service。Deployment 使用了 zookeeper:3.6.2 镜像,它会启动一个单节点的 ZooKeeper 实例。Service 会将端口 2181、2888 和 3888 暴露出来,以便于 Kafka 集群连接 ZooKeeper。 然后,你需要创建三个 Kafka 的 Deployment 和 Service,每个 Kafka 集群都需要一个 Deployment 和一个 Service: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: kafka-cluster-1 spec: replicas: 3 selector: matchLabels: app: kafka-cluster-1 template: metadata: labels: app: kafka-cluster-1 spec: containers: - name: kafka image: wurstmeister/kafka:2.13-2.7.0 env: - name: KAFKA_BROKER_ID valueFrom: fieldRef: fieldPath: metadata.uid - name: KAFKA_ADVERTISED_HOST_NAME valueFrom: fieldRef: fieldPath: status.podIP - name: KAFKA_ZOOKEEPER_CONNECT value: zookeeper:2181 - name: KAFKA_LOG_DIRS value: /kafka/kafka-cluster-1 ports: - containerPort: 9092 volumeMounts: - name: data mountPath: /kafka volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: kafka-cluster-1 spec: selector: app: kafka-cluster-1 ports: - name: kafka port: 9092 protocol: TCP ``` 你需要将上面的 YAML 文件中的相应字段替换成你自己的配置。这个 YAML 文件定义了一个名为 kafka-cluster-1 的 Deployment 和一个名为 kafka-cluster-1 的 Service。Deployment 使用了 wurstmeister/kafka:2.13-2.7.0 镜像,它会启动三个 Kafka 节点。每个节点会注册到 ZooKeeper 上,Kafka 集群会使用 ZooKeeper 来管理节点、分区和副本。Service 会将端口 9092 暴露出来,以便于外部应用程序连接 Kafka 集群。 同样的方法,你可以创建另外两个 Kafka 集群的 Deployment 和 Service。完成后,你就可以使用 Kafka 集群了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值