zhmg23

我们是如此的不同
资深运维工程师互荐群: 102123162

基于RHEL7.2搭建kafka集群记录

说明:Kafka是一个分布式、可分区、可复制的消息系统。

Kafka将消息以topic为单位进行归纳;Kafka发布消息的程序称为producer,也叫生产者;Kafka预订topics并消费消息的程序称为consumer,也叫消费者;

当Kafka以集群的方式运行时,可以由一个服务或者多个服务组成,每个服务叫做一个broker,运行过程中producer通过网络将消息发送到Kafka集群,集群向消费者提供消息。

http://kafka.apache.org/



一、安装条件

1.在设置Kafka群集之前,需要一个Zookeeper群集。 


2.启动三个实例。 确保您允许安全组中的Zookeeper和Kafka实例之间的流量。


3.使用以下命令设置三个实例的主机名进行识别。

hostnamectl set-hostname (kafka1,kafka2,kafka3)

准备三台测试服务器:

10.1.73.8      kafka1

10.1.73.7      kafka2

10.1.73.6      kafka3


二、安装java

安装jdk

# yum  -y install java-1.8.0-openjdk


# java -version

openjdk version "1.8.0_65"

OpenJDK Runtime Environment (build 1.8.0_65-b17)

OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)


# vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk

export JRE_HOME=/usr/lib/jvm/jre


:wq 保存、退出


# source /etc/profile


三、安装ZooKeeper集群

# userad kafka

# cd /home/kafka

# wget http://apache.org/dist/zookeeper/current/zookeeper-3.4.10.tar.gz

# mkdir -p /opt/kafka

# mkdir -p /opt/kafka

# mkdir -p /opt/Zookeeper/data

# mkdir -p /opt/Zookeeper/logs

#  chown kafka:  /opt/*  -R

# su -  kafka

$   tar zxvf zookeeper-3.4.10.tar.gz  -C  /opt/Zookeeper/

$  cp /opt/Zookeeper/zookeeper-3.4.10/conf/zoo_sample.cfg  /opt/Zookeeper/zookeeper-3.4.10/conf/zoo.cfg 


$ vi /opt/Zookeeper/zookeeper-3.4.10/conf/zoo.cfg 

tickTime=2000   #Zookeeper服务器心跳时间,单位毫秒 

dataDir=/opt/Zookeeper/data # 数据持久化路径

dataLogDir=/opt/Zookeeper/logs # 日志存放目录

clientPort=2181   # 连接端口 

initLimit=5   # 投票选举新leader的初始化时间 

syncLimit=2   # Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer

server.1=kafka1:2888:3888   

server.2=kafka2:2888:3888     

server.3=kafka3:2888:3888 


$ vim /opt/Zookeeper/data/myid


分别在kafka1、kafka2、kafka3的/opt/Zookeeper/data/myid 上创建建,然后myid里分别写入1、2、3


切换到root用户,修改环境变量

su -

# vi /etc/profile  

ZOOKEEPER=/opt/Zookeeper/zookeeper-3.4.10/

PATH=$PATH:$ZOOKEEPER/bin


# source /etc/profile  


$ /opt/Zookeeper/zookeeper-3.4.10/bin/zkServer.sh start    启动

$ /opt/Zookeeper/zookeeper-3.4.10/bin/zkServer.sh status      查看启动状态



$ ss -ntlup | grep 2181

tcp    LISTEN     0      50       :::2181                 :::*                   users:(("java",pid=29113,fd=25))



四、安装kafka集群

wget https://www.apache.org/dyn/closer.cgi?path=/kafka/0.10.2.1/kafka_2.11-0.10.2.1.tgz

$ tar zxvf kafka_2.11-0.10.2.1.tgz  -C  /opt/kafka/

$ cd /opt/kafka/kafka_2.11-0.10.2.1/

$ mkdir -p /opt/kafka/logs


$ vim config/server.properties



broker.id=0

host.name=kafka1

advertised.host.name=kafka1

zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181



broker.id=1

host.name=kafka2

advertised.host.name=kafka2

zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181



broker.id=2

host.name=kafka3

advertised.host.name=kafka3

zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181


注:kafka1、kafka2、kafka3均需要依次修改如上参数


$ vim config/zookeeper.properties

dataDir=/opt/Zookeeper/data


注:kafka1、kafka2、kafka3均需要依次修改参数同上


启动:

$ nohup ./bin/kafka-server-start.sh config/server.properties > ../logs/kafka.log 2>1 &



五、Kafka集群测试

5.1 创建topic--test

$ cd /opt/kafka/kafka_2.11-0.10.2.1/

$ bin/kafka-topics.sh --create --zookeeper kafka1:2181,kafka2:2181,kafka3:2181 --replication-factor 1 --partitions 1 --topic test


5.2 列出已创建的topic列表

$ bin/kafka-topics.sh --list --zookeeper localhost:2181


5.3 模拟客户端去发送消息

$ bin/kafka-console-producer.sh --broker-list kafka1:2181,kafka2:2181,kafka3:2181 --topic test


5.4 模拟客户端去接受消息

$ bin/kafka-console-consumer.sh --zookeeper kafka1:2181,kafka2:2181,kafka3:2181 --from-beginning --topic test


至此完成基于RHEL7.2的kafka集群搭建。

评论