一、部署zookeeper集群
1.服务器配置,最好是在同一网段的IP
服务器 | IP地址 | 主机名 |
node1 | 192.168.116.6 | zknode1 |
node2 | 192.168.116.16 | zknode2 |
node3 | 192.168.116.26 | zknode3 |
1.1改主机名
临时改主机名命令
hostname test1
永久修改主机名
hostnamectl set-hostname zknode1
注:要想更改后生效需要重启一下,我这里没有重启所以效果看不出来
2.服务器环境配置,所有机器都要操作,本文中案例均以主机1为例
2.1先关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
[root@n1 ~]# getenforce
Enforcing
[root@n1 ~]# setenforce 0
如果想永久更改selinux,就去编辑文件然后更改
vim /etc/selinux/config
更改前
更改后
2.2安装Java
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
如图所示:
安装完成后检验版本
[root@node1 ~]# java -version
这种情况就表示安装成功
2.3下载zookeeper安装包,我这里采用的是3.5.7版本,大家也可以换别的
地址如下:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
其他版本链接:https://archive.apache.org/dist/zookeeper/
进入opt目录下
[root@n1 ~]# cd /opt
[root@n1 opt]wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
3.部署zookeeper,三台机器均须操作,以其中1主机为例
解压压缩包
[root@n1 opt]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
mv apache-zookeeper-3.5.7-bin /usr/local/zookeeper-3.5.7 #mv 相对路径 绝对路径
4.修改配置文件,三台机器均须操作
[root@n1 opt]# cd /usr/local/zookeeper-3.5.7/conf/
[root@n1 conf]# cp zoo_sample.cfg zoo.cfg //复制
[root@n1 conf]# vim zoo.cfg
# The number of milliseconds of each tick
tickTime=2000 #2行,通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 #5行,Leader和Follower初始连接时能容忍的最多心跳数
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper #12行,修改,指定保存Zookeeper中的数据的目录,目录需要单独创建
# the port at which the clients will connect
clientPort=2181
修改之后如图所示:
dataDir=/usr/local/zookeeper-3.5.7/data
dataLogDir=/usr/local/zookeeper-3.5.7/logs
将下面这一段添加到文件末尾,三台机器都要添加
server.1=192.168.116.6:3188:3288
server.2=192.168.116.16:3188:3288
server.3=192.168.116.26:3188:3288
3188是一个端口,是这个服务器Follower与集群中的Leader服务器交换信息的端口。
3288是备用端口,是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
5.创建所需的数据目录和日志目录,因为在上一步操作中你更改或添加了数据目录和日志目录,同样的三台机器都要操作
[root@n1 conf]# mkdir /usr/local/zookeeper-3.5.7/data
[root@n1 conf]# mkdir /usr/local/zookeeper-3.5.7/logs
6.创建myid文件,不同的机器对应的id不一样
[root@n1 conf]# echo 1 > /usr/local/zookeeper-3.5.7/data/myid #1表示主机1,在主机1上操作
[root@n2 conf]# echo 2 > /usr/local/zookeeper-3.5.7/data/myid #在主机2上操作
[root@n3 conf]# echo 3 > /usr/local/zookeeper-3.5.7/data/myid #在主机3上操作
7.配置启动脚本(此处最好是三台机器同时进行,不要一台操作完成了再去操作另一台机器,另外此处的代码最好是手敲,如果要复制,复制完代码后请一定要检查没有缺少再进行下一步)
7.1编辑配置
[root@n1 conf]# vim /etc/init.d/zookeeper.sh
#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/usr/local/zookeeper-3.5.7'
case $1 in
start)
echo "---------- zookeeper 启动 ------------"
$ZK_HOME/bin/zkServer.sh start
;;
stop)
echo "---------- zookeeper 停止 ------------"
$ZK_HOME/bin/zkServer.sh stop
;;
restart)
echo "---------- zookeeper 重启 ------------"
$ZK_HOME/bin/zkServer.sh restart
;;
status)
echo "---------- zookeeper 状态 ------------"
$ZK_HOME/bin/zkServer.sh status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
esac
注:这里文件尽量不要直接复制,容易报错
配置完成后,使用chmod +x /etc/init.d/zookeeper.sh 加执行权限
7.2设置开机自启
[root@localhost conf]# chkconfig --add zookeeper
[root@localhost conf]# service zookeeper start
[root@localhost conf]# service zookeeper status
正常启动的情况如下图所示:
正常启动状态如下所示:
二、Kafka
1.环境:此过程服务器配置同上,防火墙以及selinux都要关闭
2.获取安装包,三台机器均须操作
[root@node1 ~]# cd /opt
[root@node1 opt]# wget --no-check-certificate https://archive.apache.org/dist/kafka/2.7.1/kafka_2.13-2.7.1.tgz
操作成功如下图所示:
此处我才用的版本是2.7.1
安装包链接:https://archive.apache.org/dist/kafka/2.7.1/kafka_2.13-2.7.1.tgz
若要获取其他版本:https://kafka.apache.org/downloads.html
3.部署Kafka
3.1解压并且编辑配置文件
[root@localhost opt]# tar zxvf kafka_2.13-2.7.1.tgz
[root@localhost opt]# mv kafka_2.13-2.7.1 /usr/local/kafka
[root@localhost opt]# cd /usr/local/kafka/config/
[root@localhost config]# cp server.properties{,.bak}
[root@localhost config]# vim server.properties #修改配置文件
broker.id=1 #此处要修改,且三台机器不能一样,最好是按照你的机器编号来,我用的是1,2,3
listeners=PLAINTEXT://192.168.116.6:9092 #这里的IP为当前操作机器的IP地址,
log.dirs=/usr/local/kafka/logs
zookeeper.connect=192.168.116.6:2181,192.168.116.16:2181,192.168.116.26:2181
#此处一定要是你自己的IP,且主IP放前面
3.2修改环境配置,三台机器一起操作
[root@localhost config]# echo "export KAFKA_HOME=/usr/local/kafka" >> /etc/profile
[root@localhost config]# echo "export PATH=$PATH:$KAFKA_HOME/bin" >> /etc/profile
[root@localhost config]# source /etc/profile #使配置生效
4.编辑Kafka脚本,此处三台机器也要一起操作
此处尽量不要复制,如果复制请一定要仔细校对
[root@localhost config]# vim /etc/init.d/kafka
#!/bin/bash
#chkconfig:2345 22 88
#description:Kafka Service Control Script
KAFKA_HOME='/usr/local/kafka'
case $1 in
start)
echo "---------- Kafka 启动 ------------"
${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties
;;
stop)
echo "---------- Kafka 停止 ------------"
${KAFKA_HOME}/bin/kafka-server-stop.sh
;;
restart)
$0 stop
$0 start
;;
status)
echo "---------- Kafka 状态 ------------"
count=$(ps -ef | grep kafka | egrep -cv "grep|$$")
if [ "$count" -eq 0 ];then
echo "kafka is not running"
else
echo "kafka is running"
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
esac
脚本编写完成后,给脚本加上执行权限
[root@localhost config]# chmod +x /etc/init.d/kafka #加权限
[root@localhost config]# chkconfig --add kafka
[root@localhost config]# service kafka start #启动Kafka
[root@localhost config]# service kafka status #查看状态
正常情况如下图所示:
[root@localhost config]# netstat -natp |grep 9092 #查看端口情况
节点1情况如下:
节点2如下:
节点3如下:
5.一些简单的命令操作
5.1创建一个topic,并查看列表
[root@localhost config]# kafka-topics.sh --create --zookeeper 192.168.116.6:2181,192.168.116.16:2181,192.168.116.16:2181 --replication-factor 2 --partitions 3 --topic test
[root@localhost config]# kafka-topics.sh --list --zookeeper 192.168.116.6
结果如图所示:
5.2查看topic详细信息
[root@localhost config]# kafka-topics.sh --describe --zookeeper 192.168.116.6
结果如图所示:
[root@localhost config]# kafka-console-producer.sh --broker-list 192.168.116.6:9092 --topic test
结果如图所示:
发布消息
[root@localhost config]# kafka-console-producer.sh --broker-list 192.168.116.6:9092 --topic test
>test
[2024-08-04 19:43:41,893] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
>abc
还有很多操作,此处不再一一赘述
标签:root,zookeeper,kafka,centos7,3.5,config,localhost From: https://blog.csdn.net/m0_52310738/article/details/140911253