广告
返回顶部
首页 > 资讯 > 后端开发 > Python >kafka集群搭建
  • 803
分享到

kafka集群搭建

集群kafka 2023-01-31 08:01:42 803人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

 一个典型的kafka 集群中包含若干Producer(可以是WEB 前端产生的Page View,或者是服务器日志,系统 CPU、Memory 等),若干broker(Kafka 支持水平扩展,一般broker 数量越多,集群吞

1.png

 

一个典型的kafka 集群中包含若干Producer(可以是WEB 前端产生的Page View,或者是服务器日志,系统 CPU、Memory 等),

若干broker(Kafka 支持水平扩展,一般broker 数量越多,集群吞吐率越高),

若干Consumer Group,以及一个ZooKeeper 集群。

Kafka 通过Zookeeper 管理集群配置,选举leader,以及在Consumer Group 发生变化时进行rebalance。

Producer 使用push 模式将消息发布到broker,Consumer 使用pull 模式从broker 订阅并消费消息

 

1.png

看上面一张图,要想做kafka集群,有几个关键点

1. 所有kafka节点,必须连接到同一个Zookeeper(可以是单机,也可以是Zookeeper集群)

2. kafka节点配置文件中的broker.id必须唯一,如上图

3. kafka节点的数量,必须是奇数,比如1,3,5...

 

环境介绍

操作系统Docker镜像docker ip部署软件以及版本
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.2zookeeper-3.4.13
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.3zookeeper-3.4.13
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.4zookeeper-3.4.13
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.5kafka_2.12-2.1.0
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.6kafka_2.12-2.1.0
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.7kafka_2.12-2.1.0
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.8kafka_2.12-2.1.0
ubuntu-16.04.5-server-amd64ubuntu:16.04172.168.0.9kafka_2.12-2.1.0

 

 

 

 

 

 

 

 

 

 

 

 

本文的zookeeper,使用3个节点构建的集群。关于zookeeper集群的搭建,请参考链接:

https://www.cnblogs.com/xiao987334176/p/10103619.html

 

本文使用5个kafka节点,构造kafka集群。

拓扑图

1.png

 

基于docker安装

创建空目录

mkdir /opt/kafka_cluster

 

 dockerfile

FROM ubuntu:16.04
# 修改更新源为阿里云
ADD sources.list /etc/apt/sources.list
ADD kafka_2.12-2.1.0.tgz /
# 安装jdk
RUN apt-get update && apt-get install -y openjdk-8-jdk --allow-unauthenticated && apt-get clean all

EXPOSE 9092
# 添加启动脚本
ADD run.sh .
RUN chmod 755 run.sh
ENTRYPOINT [ "/run.sh"]

 

run.sh

#!/bin/bash

if [ -z $broker_id ];then
    echo "broker_id变量不能为空"
    exit 1
fi

if [ -z $zookeeper ];then
    echo "zookeeper变量不能为空"
    exit 2
fi

cd /kafka_2.12-2.1.0
# 设置唯一id
sed -i "21s/0/$broker_id/" /kafka_2.12-2.1.0/config/server.properties
# 设置zookeeper连接地址
sed -i "123s/localhost/$zookeeper/" /kafka_2.12-2.1.0/config/server.properties

# 启动kafka
bin/kafka-server-start.sh config/server.properties

 

sources.list

deb Http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

 

此时目录结构如下:

./
├── dockerfile
├── kafka_2.12-2.1.0.tgz
├── run.sh
└── sources.list

生成镜像

docker build -t kafka_cluster /opt/kafka_cluster

 

启动kafka集群

在启动kafka之前,请确保已经启动了3台zk服务器。

启动第一个kafka节点

docker run -it -p 9092:9092 -e broker_id=1 -e zookeeper=172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181 --network br1 --ip=172.168.0.5 kafka_cluster

 

启动第二个kafka节点

docker run -it -p 9093:9092 -e broker_id=2 -e zookeeper=172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181 --network br1 --ip=172.168.0.6 kafka_cluster

 

启动第三个kafka节点

docker run -it -p 9094:9092 -e broker_id=3 -e zookeeper=172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181 --network br1 --ip=172.168.0.7 kafka_cluster

 

启动第四个kafka节点

docker run -it -p 9095:9092 -e broker_id=4 -e zookeeper=172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181 --network br1 --ip=172.168.0.8 kafka_cluster

 

启动第五个kafka节点

docker run -it -p 9096:9092 -e broker_id=5 -e zookeeper=172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181 --network br1 --ip=172.168.0.9 kafka_cluster

 

注意:红色部分的参数需要修改一下,不能重复!

 

查看集群状态

先来查看一下docker进程

复制代码

root@jqb-node128:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
bd22fb6cafbb        kafka_cluster       "/run.sh"           2 minutes aGo       Up 2 minutes        0.0.0.0:9096->9092/tcp   amazing_pare
d874f6d1ef6c        kafka_cluster       "/run.sh"           2 minutes ago       Up 2 minutes        0.0.0.0:9095->9092/tcp   agitated_pike
3543cdda7e68        kafka_cluster        "/run.sh"           27 minutes ago      Up 27 minutes       0.0.0.0:9094->9092/tcp   stupefied_bhaskara
8bd899ba33ba        kafka_cluster        "/run.sh"           27 minutes ago      Up 27 minutes       0.0.0.0:9093->9092/tcp   hopeful_ride
529b0b031949        kafka_cluster        "/run.sh"           27 minutes ago      Up 27 minutes       0.0.0.0:9092->9092/tcp   upbeat_golick
217e012c9566        3f3a8090dcb6        "/run.sh"           21 hours ago        Up 21 hours         0.0.0.0:2183->2181/tcp   gallant_golick
3b4861d2fef9        3f3a8090dcb6        "/run.sh"           21 hours ago        Up 21 hours         0.0.0.0:2182->2181/tcp   jovial_murdock
ed91c1f973D2        3f3a8090dcb6        "/run.sh"           21 hours ago        Up 21 hours         0.0.0.0:2181->2181/tcp   dazzling_hamilton

复制代码

 

随意进入一个kafka容器

root@jqb-node128:~# docker exec -it bd22fb6cafbb /bin/bash
root@bd22fb6cafbb:/# cd /kafka_2.12-2.1.0/
root@bd22fb6cafbb:/kafka_2.12-2.1.0#

 

查看topic

bin/kafka-topics.sh --describe --zookeeper 172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181

 

执行之后,没有任何输出。是因为此时还没有创建topic

 

创建topic,因为有三个kafka服务,所以这里replication-factor设为3

bin/kafka-topics.sh --create --zookeeper 172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181 --replication-factor 3 -partitions 1 --topic 3test

执行输出:

Created topic "3test".

 

再次查看topic

root@bd22fb6cafbb:/kafka_2.12-2.1.0# bin/kafka-topics.sh --describe --zookeeper 172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181

Topic:3test    PartitionCount:1    ReplicationFactor:3    Configs:
    Topic: 3test    Partition: 0    Leader: 3    Replicas: 3,4,5    Isr: 3,4,5

 

此时的leader kafka为3,也就是broker_id参数为3个kafka服务器。

 

开启一个producer,往172.168.0.5发送kafka消息,也就是第一个kafka节点

root@bd22fb6cafbb:/kafka_2.12-2.1.0# bin/kafka-console-producer.sh --broker-list 172.168.0.5:9092 --topic 3test
>fdsa
>

再开一个窗口进入172.168.0.5这台节点,消费一下,指定节点为第二台kafka。

等待10秒,就会收到fdsa了。

root@jqb-node128:~# docker exec -it 529b0b031949 /bin/bash
root@529b0b031949:/# cd /kafka_2.12-2.1.0/
root@529b0b031949:/kafka_2.12-2.1.0# bin/kafka-console-consumer.sh --bootstrap-server 172.168.0.6:9092 --topic 3test --from-beginning
fdsa

停止leader 

停掉172.168.0.7的kafka,它是leader。先确保它的配置文件broker.id=3

先查看ip地址

复制代码

root@jqb-node128:~# docker exec -it 3543cdda7e68 /bin/bash
root@3543cdda7e68:/# cat /etc/hosts127.0.0.1    localhost
::1    localhost ip6-localhost ip6-loopback
fe00::0    ip6-localnet
ff00::0    ip6-mcastprefix
ff02::1    ip6-allnodes
ff02::2    ip6-allrouters172.168.0.7    3543cdda7e68

复制代码

 

在查看配置文件

root@3543cdda7e68:/# cat /kafka_2.12-2.1.0/config/server.properties | head -21 | tail -1broker.id=3

 

删除docker

docker rm 3543cdda7e68 -f

 

 

在其他容器,再次查看topics

root@529b0b031949:/kafka_2.12-2.1.0# bin/kafka-topics.sh --describe --zookeeper 172.168.0.2:2181,172.168.0.3:2181,172.168.0.4:2181
Topic:3test    PartitionCount:1    ReplicationFactor:3    Configs:
    Topic: 3test    Partition: 0    Leader: 4    Replicas: 3,4,5    Isr: 4,5
Topic:__consumer_offsets    PartitionCount:50    ReplicationFactor:1    Configs:segment.bytes=104857600,cleanup.policy=compact,compression.type=producer
    Topic: __consumer_offsets    Partition: 0    Leader: 4    Replicas: 4    Isr: 4
...

 

可以发现此时的Leader的broker.id为4,也就是第4个kafka节点。

再次消费,也是正常的

root@529b0b031949:/kafka_2.12-2.1.0# bin/kafka-console-consumer.sh --bootstrap-server 172.168.0.6:9092 --topic 3test --from-beginning
fdsa

 

 

本文参考链接:

https://www.cnblogs.com/younldeace/p/3796580.html


--结束END--

本文标题: kafka集群搭建

本文链接: https://www.lsjlt.com/news/193551.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • kafka集群搭建
     一个典型的Kafka 集群中包含若干Producer(可以是web 前端产生的Page View,或者是服务器日志,系统 CPU、Memory 等),若干broker(Kafka 支持水平扩展,一般broker 数量越多,集群吞...
    99+
    2023-01-31
    集群 kafka
  • kafka---- zookeeper集群搭建
    1.准备工作:##准备3个节点,要求配置好主机名称,服务器之间系统时间保持一致##注意/etc/hostname 和/etc/hosts 配置主机名称(在这个里我准备Prac-zk-133, Prac-zk-134 , Prac-zk-13...
    99+
    2023-08-30
    kafka zookeeper debian
  • docker如何搭建kafka集群
    本文小编为大家详细介绍“docker如何搭建kafka集群”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker如何搭建kafka集群”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、原生Docker命令 ...
    99+
    2023-06-30
  • kafka-2.11集群的搭建步骤
    这篇文章主要介绍“kafka-2.11集群的搭建步骤”,在日常操作中,相信很多人在kafka-2.11集群的搭建步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”kafka-...
    99+
    2022-10-18
  • Docker容器怎么搭建Kafka集群
    本篇内容介绍了“Docker容器怎么搭建Kafka集群”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Kafka集群的搭建1.拉取相关镜像...
    99+
    2023-06-29
  • docker搭建kafka集群的方法实现
    目录一、原生Docker命令二、镜像选择三、集群规划四、Zookeeper集群安装五、Kafka集群安装一、原生Docker命令 1. 删除所有dangling数据卷(即无用的Vol...
    99+
    2022-11-13
  • Docker容器搭建Kafka集群的详细过程
    目录一、Kafka集群的搭建1.拉取相关镜像2.运行zookeeper3.运行kafka4.设置topic5.进行生产者和消费者测试一、Kafka集群的搭建 1.拉取相关镜像 doc...
    99+
    2022-11-13
  • 集群搭建
      1.  集群搭建之主从复制 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。 1.1   主服务器的配置 1.1.1   第一步:修改my.con...
    99+
    2017-09-01
    集群搭建
  • redis集群搭建
    Redis 5.0之后版本的高可用集群搭建 Redis系统介绍: Redis的基础介绍与安装使用步骤:https://www.jianshu.com/p/2a23257af57b Redis的基础数据结构与使用:https...
    99+
    2019-03-23
    redis集群搭建
  • mongodb集群搭建
    mongodb集群搭建 小码农叔叔 2019-06-17 22:51:33 4086 收藏 7 分类专栏: mongodb 版权 集群方式有三种:Replica Set、Sharding、Master-Slaver三种方式 常用的主要是副...
    99+
    2014-09-28
    mongodb集群搭建
  • MHA集群搭建
    开篇 本文主要介绍如何搭建MHA集群,希望给你带来帮助 基本环境介绍 Linux:CentOS 7.4 MySQL:5.7.21+传统复制(开启GTID不搭建binlog server) VIP:192.1...
    99+
    2022-10-18
  • 搭建Nacos集群
    nacos的默认端口是8848,但是他还占用了另外两个接口:9848、9849。因此,在单机配置集群时,不可使用三个连续的端口,否则会导致 gRPC端口冲突。 端口与主端口(8848)偏移量作用98481000客户端gRPC请求服务端口,用...
    99+
    2023-08-18
    java mysql 开发语言 nacos
  • nacos集群搭建
    在官方文档上面就有结束搭建nacos是介绍 官方文档提供了一个Nacos集群的架构图,当我们访问Nacos时,首先会经过SLB,也就是负载均衡,通常是一个nginx,通过nginx来进行分发到具体的Nacos服务器上面。我们需要给不同的服...
    99+
    2023-08-19
    centos linux 服务器
  • 搭建Domino群集
    搭建Domino群集浙江省电力办公自动化系统(以下简称:OA系统)是全省推广,统一软件、统一平台、统一规划与实施的一套大型应用系统。它的硬件平台采用IBM的小型机AS/400,软件采用Lotus Domino/Notes,并实施了在一台小型...
    99+
    2023-06-03
  • Hadoop集群搭建
    文章目录 一、运行环境配置(所有节点)1、基础配置2、配置Host 二、依赖软件安装(101节点)1、安装JDK2、安装Hadoop(root)3、Hadoop目录结构 三、本地运行模式(官方WordCount)1、简介...
    99+
    2023-08-30
    hadoop linux java
  • 搭建mysql NDB集群
    NDB群集安装 介绍 https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-basics.html NDBCLUSTER (也称为NDB)是一种内存存储引擎,提供高可用性和数据...
    99+
    2020-08-26
    搭建mysql NDB集群
  • Minikube搭建Kubernetes集群
    Minikube 打开 https://github.com/kubernetes/minikube/releases/tag/v1.19.0 下载最新版本的二进...
    99+
    2022-11-13
  • docker redis4.0集群搭建
    redis集群对于很多人来说非常熟悉,在前些日子,我也有一位大兄弟也发布过一篇关于在阿里云(centOS7)上搭建redis 集群的文章,虽然集群搭建的文章在网上很多,我比较喜欢这篇文章的地方是他在搭建过程中,指出一些我们会遇到而别人没有指...
    99+
    2023-01-31
    集群 docker
  • Oracle19c--RAC集群搭建
    安装目录 一.新建节点1.创建虚拟机rac12.添加一个iSCSI控制器(总线共享选择虚拟)3.添加一块新的网卡4.添加6块硬盘,大小50G,要设置磁盘置备为‘厚置备,置零’,并且控制器选择新...
    99+
    2023-09-08
    运维 linux 服务器
  • Kubernetes 集群搭建(上)
    不知道各位对Kubernetes了解多少呢?如果还是有一些了解,建议你读一下这篇文章,或许对你有些许帮助 !阅读本文您需要具备一下知识点:1.Kubernetes2.kubeadm3.docker以上三点如过各位看官都知晓,那么请尽情食用,...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作