环境 提取码: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
》》》在三台服务器中进行一下操作
# 将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
echo $JAVA_HOME
java
javac
Zookeeper集群被称为群组.Zookeeper使用的是一致性协议,建议每个群组应该包含奇数个节点(比如3个,5个等),因为只有当群组里的大多数节点(也就是法定人数)处于可用状态,Zookeeper才能处理外部的请求.假如,一个群组包含3个节点,那么允许一个节点失效.假如,一个群组包含5个节点,那么允许2个节点失效.
群组需要有一些公共配置.每台服务器还要再数据目录创建一个myid文件,用于指明自己的ID.如果群组里服务器的机器名是zoo1.example.com,zoo2.example.com,zoo3.example.com.
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配置文件
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
echo x > /var/zookeeper/data/myid # /var/zookeeper/data为zoo.cfg中dataDir配置的路径;x为主机IP对应的zoo.cfg中的server.x
/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.
# 将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
服务器输入的内容,则启动集群成功.
内网 外网
192.168.18.133:9092---->157...7:9093
192.168.18.134:9092---->157...7:9094
192.168.18.136:9092---->157...7:9095
#在对应的服务器中都进行相应的配置
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