kafka 集群搭建

标签:kafka首次发布:2024-04-30最近修改:2024-04-30

三台虚拟机

IP 地址和域名

三台虚拟机的 CPU 核数均为 2,IP 和域名(主机名)的关系如下:

IP 地址 域名
192.168.11.101 kafka1
192.168.11.102 kafka2
192.168.11.103 kafka3

三台机器之间需要能够使用域名相互通信。

zookeeper 和 kafka

注意:

  1. 在搭建集群之前,每一台虚拟机已经安装好了 zookeeper 和 kafka,并且将 zookeeper 设置为了一个系统服务还添加了开机自启动。
  2. 搭建 zookeeper 集群之前需要关闭防火墙

zookeeper 配置文件

现在对每一台机器上执行如下操作:

  1. zoo.cfg 配置文件中数据和日志的相关配置:

    shell
    # 存放数据文件dataDir=/usr/local/zookeeper/data# 存放日志文件dataLogDir=/usr/local/zookeeper/log# 端口号clientPort=2181# 作为Zookeeper服务器之间维持心跳的时间间隔,单位毫秒tickTime=2000# 这个参数指定了Leader和Follower初始连接时能容忍的最多心跳数,其中心跳时间间隔由tickTime参数定义。# 换句话说,它定义了在初始连接期间Follower可以接收到多少个心跳(每个心跳间隔为tickTime)才会与Leader建立连接。# 如果initLimit被设置为 10,这意味着在20秒内(10 * 2秒),Follower必须接收到Leader的心跳,否则连接将会失败。initLimit=10# Leader和Follower之间同步通信的超时时间,这里表示如果超过5*2s=10s,Leader认为Follwer宕机,并从服务器列表中删除Follwer。syncLimit=5
  2. 创建多个节点集群时,在 dataDir 指定目录下必须创建 myid 文件,myid 文件用于 zookeeper 验证 server 序号,myid 文件只有一行,并且为当前 server 的序号,例如:server.1 的 myid 就是 1,server.2 的 myid 就是 2。

    bash
    [root@kafka1 data]# pwd/usr/local/zookeeper/data[root@kafka1 data]# cat myid1
  3. 添加集群信息。格式:server.A=B:C:D

    A 是一个数字(myid 里面的内容),表示这个是第几号服务器;

    B 是这个服务器的 ip 地址;

    C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;

    D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader;

    所以 zoo.cfg 配置文件中需要添加如下配置:

    shell
    server.1=192.168.11.101:2888:3888server.2=192.168.11.102:2888:3888server.3=192.168.11.103:2888:3888
  4. 重启 zookeeper:

    bash
    [root@kafka1 conf]# systemctl restart zookeeper[root@kafka1 conf]# jps8824 QuorumPeerMain8860 Jps

另外两台主机参考以上步骤做相应的变通即可。

kafka 配置文件

分别修改 192.168.11.101,192.168.11.102,192.168.11.103 三个节点的 kafka 配置文件 server.properties:

  1. 192.168.11.101 的配置:

    shell
    # 集群中每个节点的唯一标识broker.id=1# 定义了 broker 监听的地址和端口listeners = PLAINTEXT://kafka1:9092# 定义了在集群内和外部客户端通信时要使用的地址advertised.listeners=PLAINTEXT://kafka1:9092# zookeeper的连接地址zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181/kafka
  2. 192.168.11.102 的配置:

    shell
    # 集群中每个节点的唯一标识broker.id=2# 定义了 broker 监听的地址和端口listeners = PLAINTEXT://kafka2:9092# 定义了在集群内和外部客户端通信时要使用的地址advertised.listeners=PLAINTEXT://kafka2:9092# zookeeper的连接地址zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181/kafka
  3. 192.168.11.103 的配置:

    shell
    # 集群中每个节点的唯一标识broker.id=3# 定义了 broker 监听的地址和端口listeners = PLAINTEXT://kafka3:9092# 定义了在集群内和外部客户端通信时要使用的地址advertised.listeners=PLAINTEXT://kafka3:9092# zookeeper的连接地址zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181/kafka

启动和停止

bash
# 启动kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties# 查看是否启动成功jps# 停止kafka-server-stop.sh