centos7搭建kafka集群

centos7搭建kafka集群

环境 提取码:uh51:
jdk-8u201-linux-x64.tar.gz
zookeeper-3.4.14.tar.gz
kafka_2.12-2.2.0.tgz
服务器三台:
192.168.18.133
192.168.18.134
192.168.18.136

以下需要开放的端口

# 开放2888,3888,9092,2181等端口
firewall-cmd --zone=public --add-port={端口}/tcp --permanent
# 重新启动防火墙
firewall-cmd --reload

》》》在三台服务器中进行一下操作

步骤1.安装JAVA环境

# 将java安装包移动到相应的路径
mv jdk-8u201-linux-x64.tar.gz /usr/local

# 解压
tar -zxvf jdk-8u201-linux-x64.tar.gz

# 重命名文件夹为java
mv jdk1.8.0_201 java

# 添加java环境到配置/etc/profile文件  vim /etc/profile 激活 source /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
检验JAVA是否安装成功
echo $JAVA_HOME 
java
javac

步骤2.搭建zookeeper集群

Zookeeper集群被称为群组.Zookeeper使用的是一致性协议,建议每个群组应该包含奇数个节点(比如3个,5个等),因为只有当群组里的大多数节点(也就是法定人数)处于可用状态,Zookeeper才能处理外部的请求.假如,一个群组包含3个节点,那么允许一个节点失效.假如,一个群组包含5个节点,那么允许2个节点失效.
群组需要有一些公共配置.每台服务器还要再数据目录创建一个myid文件,用于指明自己的ID.如果群组里服务器的机器名是zoo1.example.com,zoo2.example.com,zoo3.example.com.
centos7搭建kafka集群_第1张图片
initLimt表示用于在从节点与主节点之间建立初始化连接的时间上限,syncLimit表示允许从节点与主节点之间建立初始化连接的时间上限.这两个值都是tickTime的倍数,所以initLimit是20*2000ms,也就是40s.服务器地址遵循 server.X=hostname:peerPort:leaderPort格式:
X 服务器ID,必须是一个整数,不一定从0开始,也不要求是连续的;
hostname 服务器的机器名或IP地址
peerPort 用于节点间通信TCP端口
leaderPort 用于首领选举的TCP端口.
客户端只需要通过clientPort就能连接到群组,而群组节点间的通信则需要同时用到这3个端口(peerPort,leaderPort,clientPort)…
除了公共的配置文件外,每个服务器都必须在data Dir目录中创建一个叫作myid的文件,文件里要包含服务器ID,这个ID要与配置文件里配置的ID保持一致.

# 将zookeeper安装包移动到相应的路径
mv zookeeper-3.4.14.tar.gz /usr/local

# 解压
tar -zxvf zookeeper-3.4.14.tar.gz

# 重命名文件夹为zookeeper
mv zookeeper-3.4.14 zookeeper

# 添加zookeeper环境到配置/etc/profile文件  vim /etc/profile 激活 source /etc/profile
#set zookeeper environment
export ZK_HOME=/usr/local/zookeeper
export PATH=$ZK_HOME/bin:$PATH

修改zookeeper配置文件
# 修改zookeeper配置文件
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
vim /usr/local/zookeeper/conf/zoo.cfg

# 配置数据路径
dataDir=/var/zookeeper/data
# 配置日志路径
dataLogDir=/var/zookeeper/logs
#server.x 对应IP服务器 ${dataDir}/myid 必须一致
server.1=192.168.18.133:2888:3888
server.2=192.168.18.134:2888:3888
server.3=192.168.18.136:2888:3888
创建数据、日志目录
mkdir -p /var/zookeeper/data
mkdir /var/zookeeper/logs

主机名 IP地址 zookeeper myid
kafka-1 192.168.18.133 server.1 1
kafka-2 192.168.18.134 server.2 2
kafka-3 192.168.18.136 server.3 3

创建myid文件
echo x > /var/zookeeper/data/myid  # /var/zookeeper/data为zoo.cfg中dataDir配置的路径;x为主机IP对应的zoo.cfg中的server.x
在每台服务器中启动zookeeper
 /usr/local/zookeeper/bin/zkServer.sh start
全部启动后,查看启动结果
 /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader  # leader follower

通过nc方式验证

yum install -y nc

echo stat | nc 192.168.9.5 2181

Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
Clients:
 /192.168.9.5:58838[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/56
Received: 1623
Sent: 1083
Connections: 1
Outstanding: 0
Zxid: 0x100000135
Mode: leader # leader follower
Node count: 136
Proposal sizes last/min/max: 243/32/574

通过四字命令srvr方式验证

telnet localhost 2181

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

srvr

Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
Latency min/avg/max: 0/0/20
Received: 70036
Sent: 70039
Connections: 2
Outstanding: 0
Zxid: 0x1dd
Mode: standalone
Node count: 188
Connection closed by foreign host.

步骤3.搭建kafka集群

# 将kafka安装包移动到相应的路径
mv kafka_2.12-2.2.0.tgz /usr/local

# 解压
tar -zxvf kafka_2.12-2.2.0.tgz

# 重命名
mv kafka_2.12-2.2.0 kafka

修改server.properties配置
vim /usr/local/kafka/config/server.properties

#服务器标识不能相同
broker.id=1
# 不同服务器的ip不同
listeners=PLAINTEXT://192.168.18.133:9092
# 单机远程连接的时候需要开启下面这一项,然后listeners=PLAINTEXT 这一项需要注释掉
advertised.listeners=PLAINTEXT://192.168.18.133:9092
#advertised.host.name=master
#advertised.port=9092
# zookeeper.connect=192.168.18.133:2181 # 单机配置
zookeeper.connect=192.168.18.133:2181,192.168.18.134:2181,192.168.18.136:2181

依次在每台服务器启动Kafka

/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
# 后台启动
# /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

创建Topic

bin/kafka-topics.sh --create --zookeeper 192.168.18.133:9092,192.168.18.134:9092,192.168.18.136:9092 --replication-factor 2 --partitions 2 --topic test

查看 Topic describe

bin/kafka-topics.sh --describe --zookeeper 192.168.18.133:9092,192.168.18.134:9092,192.168.18.136:9092 --topic test

在其中一台服务器启动consumer

bin/kafka-console-consumer.sh --bootstrap-server192.168.18.133:9092,192.168.18.134:9092,192.168.18.136:9092 --topic test --from-beginning

在任意议一台服务器启动producer

bin/kafka-console-producer.sh --broker-list 192.168.18.133:9092,192.168.18.134:9092,192.168.18.136:9092 --topic test

如果consumer服务器接收到producer服务器输入的内容,则启动集群成功.

kafka内网外网访问配置

内网 外网
192.168.18.133:9092---->157...7:9093
192.168.18.134:9092---->157...7:9094
192.168.18.136:9092---->157...7:9095

#在对应的服务器中都进行相应的配置

  1. 先在/etc/hosts文件中添加解析记录
    192.168.18.133 HostName
  2. 修改server.properties配置
    vim /usr/local/kafka/config/server.properties
listeners=PLAINTEXT://0.0.0.0:9092
# 对应端口映射的外网ip配置
advertised.listeners=PLAINTEXT://157.*.*.7:9093
advertised.host.name=HostName 

kafka监控工具kafkaOffsetMoniter的使用 https://blog.csdn.net/lsshlsw/article/details/47342821
参考 http://1987.name/1303.html
参考https://www.jianshu.com/p/bdd9608df6b3
参考 https://github.com/judasn/Linux-Tutorial/blob/master/markdown-file/Kafka-Install-And-Settings.md
参考https://blog.csdn.net/leontom/article/details/82659228

你可能感兴趣的:(centos7搭建kafka集群)