大数跨境
0
0

欧拉操作系统安装 kafka 和 zookeeper 分布式集群

欧拉操作系统安装 kafka 和 zookeeper 分布式集群 GookSpin
2025-11-08
0

 部署安装基于 openEuler 22.03 LTS 操作系统安装

Centos 系列以及 Ubuntu 大概基本都适用

服务器信息如下

服务器

ip

操作系统

yum源

node1

10.0.9.147

openEuler 22.03 LTS

 yum update -y

node2

10.0.9.148

openEuler 22.03 LTS

yum update -y

node3

10.0.9.149

openEuler 22.03 LTS

yum update -y

 

1、系统内核参数优化 (三台机器执行)

timedatectl set-timezone Asia/Shanghaicat >> /etc/sysctl.conf << EOFkernel.shmmax = kernel.shmall = kernel.sysrq = 1vm.swappiness = 1fs.inotify.max_user_watches = 10000000net.core.wmem_max = 16777216net.core.rmem_max = 16777216net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.all.secure_redirects = 0net.ipv4.conf.default.secure_redirects = 0net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0fs.inotify.max_queued_events = 327679net.ipv4.neigh.default.gc_thresh1 = 2048net.ipv4.neigh.default.gc_thresh2 = 4096net.ipv4.neigh.default.gc_thresh3 = 8192net.ipv6.conf.all.disable_ipv6 = 0net.ipv6.conf.default.disable_ipv6 = 0net.ipv6.conf.lo.disable_ipv6 = 0net.ipv4.tcp_keepalive_time = 1200net.ipv4.tcp_keepalive_intvl = 15net.ipv4.tcp_keepalive_probes = 5net.ipv4.tcp_max_syn_backlog = 4096net.core.somaxconn = 4096net.core.netdev_max_backlog = 3000net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_fack = 1net.ipv4.tcp_sack = 1net.core.wmem_default = 256960net.core.wmem_max = 4088000net.core.rmem_default = 256960net.core.rmem_max = 4088000net.ipv4.tcp_wmem = 8760 256960 4088000net.ipv4.tcp_rmem = 8760 256960 4088000net.ipv4.tcp_mem = 131072 262144 524288vm.max_map_count=655360EOFsysctl -pecho never > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag

 

cat >> /etc/security/limits.conf << EOF* soft nofile 1024000* hard nofile 1024000* soft nproc 655350* hard nproc 655350* soft stack unlimited* hard stack unlimited* soft core unlimited* hard core unlimited root soft nofile 1024000root hard nofile 1024000root soft nproc 655350root hard nproc 655350root soft stack unlimitedroot hard stack unlimitedroot soft core unlimitedroot hard core unlimited yunwei soft nofile 1024000yunwei hard nofile 1024000yunwei soft nproc 655350yunwei hard nproc 655350yunwei soft stack unlimitedyunwei hard stack unlimitedyunwei soft core unlimitedyunwei hard core unlimitedEOF

2、数据盘创建 LVM  (三台机器执行)

使用 lsblk 命令 查看 有一个 sdb 空盘,使用这个创建 lvm,然后挂载到/data 下

lsblk

 

 

mkdir /datavgcreate data /dev/sdblvcreate -n lv1 -l 100%FREE datamkfs.xfs /dev/mapper/data-lv1

/etc/fstab 文件中增加 (三台机器执行)

cat >> /etc/fstab << EOF/dev/data/lv1/data xfs defaults 0 0EOFmount -adf -h

 

3、下载  源码文件并且关闭防火墙- 三台机器执行


mkdir /data/soft# 上传相关软件到这个目录ls /data/softsystemctl stop firewalld && systemctl disable firewalldsetenforce 0sed -i  's/SELINUX/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config sed -i  's/SELINUX/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config 

 

4、安装 jdk  (三台机器执行)

cd /data/softtar xvf jdk-8u421-linux-x64.tar.gzmv jdk1.8.0_421 /usr/local/jdkcat >>  /etc/profile << EOFexport PATH=$PATH:/usr/local/jdk/binexport JAVA_HOME=/usr/local/jdkEOFsource /etc/profile

 

5、 安装 系统基础命令服务包 (三台机器执行)

yum install gcc net-tools tar vim htop bash-co* rsync wget jq unzip lrzsz make -y

 

 

6、安装 ntp 和 ntpdate (三台机器执行)

yum install ntp ntpdate -y

 

7、 node1 服务器执行

vim /etc/ntp.conf server ntp.aliyun.com # poll 开头的都注释了 systemctl enable ntp && systemctl start ntp crontab -e */5 * * * * ntpdate -u ntp.aliyun.com

 

8、node2 /node3执行

vim /etc/ntp.conf server node1 # poll 开头的都注释了 systemctl enable ntp && systemctl start ntpcrontab -e */5 * * * * ntpdate -u node1


 

9、服务器免密配置 node1上生成秘钥对   node1 执行

ssh-keygenssh-copy-id node1ssh-copy-id node2ssh-copy-id node3 # 测试ssh node1ssh node2ssh node3

 

10、 下载 kafka 安装包--- node1 操作

下载地址可以官网,也可以直接提供文档中的,本文安装采用 kafka 3.4版本

kafka官方下载

 

wget https://archive.apache.org/dist/kafka/3.4.1/kafka_2.13-3.4.1.tgzls -alkafka_2.13-3.4.1.tgz

 

11、zookeeper 安装 ---  node1 操作

首先你需要了解该情况:新版本 kafka 的安装在 3.0 开始就支持使用 kraft 模式进行安装,不需要安装 zookeeper 了。但是传统的基于 zookeeper 的 kafka 在 3.x版本中还是可以用。官方在 4.x 版本中已经去除 zookeeper 模式了。 还有一点是,本文总体部署操作是基于大数据 hadoop 来部署的, hadoop 的集群组件中,大多需要使用 zookeeper 来维护集群的一致性和原子性。

 

12、解压安装包,并创建初始化目录 --- node1 操作

cd /data/softtar xvf kafka_2.13-3.4.1.tgz mv kafka_2.13-3.4.1 ../kafkacd /data/kafka# 目录的创建,这里的创建需要和配置文件中对应。 可以按自己需求定义mkdir -p data zookeeper/log

 

13、配置 zookeeper --- node1 操作

zookeeper 可以单独使用安装包进行安装,也可以直接使用 kafka 自带的 zk 进行安装,这里直接使用自带的 zk 进行安装。

cd /data/kafka/configmv zookeeper.properties zookeeper.properties.bakcat > zookeeper.properties << EOFdataDir=/data/kafka/zookeeperdataLogDir=/data/kafka/zookeeper/logclientPort=2181maxClientCnxns=0admin.enableServer=falseserver.1=node1:2888:3888server.2=node2:2888:3888server.3=node3:2888:3888tickTime=2000 initLimit=10 syncLimit=5EOF

 

14、创建 myid 文件-- 这里先操作 node1,

其他机器只需要改 myid 即可

myid 文件的要求必须是和 zookeeper.properties 文件中的 server.x  这里对应

echo 1 > /data/kafka/zookeeper/myid

 

15、配置 zookeeper 启动 service 文件  node1 执行

cat > /etc/systemd/system/zookeeper.service << EOF[Unit]Description=Apache zookeeperAfter=network.target Requires=network.target  [Service]Environment="JAVA_HOME=/usr/local/jdk"ExecStart=/data/kafka/bin/zookeeper-server-start.sh  /data/kafka/config/zookeeper.propertiesExecStop=/data/kafka/bin/zookeeper-server-stop.shRestart=alwaysRestartSec=10StartLimitInterval=5LimitNOFILE=265535LimitNPROC=65535 [Install]WantedBy=multi-user.targetEOF

 

16、配置 kafka 文件- node1 执行   这里如果使用zk 模式配置这个文件

cd /data/kafka/configmv server.properties server.properties.bak
cat > server.properties << EOFbroker.id=0listeners=PLAINTEXT://node1:9092num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/data/kafka/datanum.partitions=3num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=3transaction.state.log.replication.factor=3transaction.state.log.min.isr=3log.retention.hours=168log.retention.check.interval.ms=300000zookeeper.connect=node1:2181,node2:2181,node3:2181zookeeper.connection.timeout.ms=18000group.initial.rebalance.delay.ms=0EOF

 

17、配置 kafka 的 service 文件  node1 执行  这里如果使用zk 模式配置这个文件

cat > /etc/systemd/system/kafka.service << EOF[Unit]Description=Apache Kafka serverAfter=network.target Requires=network.target  [Service]Type=forkingEnvironment="JAVA_HOME=/usr/local/jdk"ExecStart=/data/kafka/bin/kafka-server-start.sh -daemon /data/kafka/config/server.propertiesExecStop=/data/kafka/bin/kafka-server-stop.shRestart=alwaysRestartSec=10StartLimitInterval=5LimitNOFILE=265535 [Install]WantedBy=multi-user.targetEOF

 

如果使用 kraft 模式 使用下面步骤- node1执行   这里如果使用 kraft 模式配置这个文件

cd /data/kafka/config/kraftmv server.properties server.properties.bak
cat > server.properties << EOFprocess.roles=broker,controllernode.id=1controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093listeners=PLAINTEXT://node1:9092,CONTROLLER://node1:9093inter.broker.listener.name=PLAINTEXTadvertised.listeners=PLAINTEXT://node1:9092controller.listener.names=CONTROLLERlistener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSLnum.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/data/kafka/datanum.partitions=3num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=3transaction.state.log.replication.factor=3transaction.state.log.min.isr=3log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000max.request.size=2097152log.cleanup.policy=deleteEOF

 

配置 kafka service 文件  这里如果使用 kraft 模式配置这个文件

cat > /etc/systemd/system/kafka.service << EOF[Unit]Description=Apache Kafka serverAfter=network.target Requires=network.target  [Service]Type=forkingEnvironment="JAVA_HOME=/usr/local/jdk"ExecStart=/data/kafka/bin/kafka-server-start.sh -daemon /data/kafka/config/kraft/server.propertiesExecStop=/data/kafka/bin/kafka-server-stop.shRestart=alwaysRestartSec=10StartLimitInterval=5LimitNOFILE=265535 [Install]WantedBy=multi-user.targetEOF

 

18、同步文件到 node2 和 node3

rsync -avz /data/kafka node2:/datarsync -avz /data/kafka node3:/data # 同步 service rsync -avz  /etc/systemd/system/zookeeper.service  node2:/etc/systemd/system/zookeeper.servicersync -avz  /etc/systemd/system/zookeeper.service  node3:/etc/systemd/system/zookeeper.service rsync -avz /etc/systemd/system/kafka.service node2:/etc/systemd/system/kafka.servicersync -avz /etc/systemd/system/kafka.service node3:/etc/systemd/system/kafka.service

 

19、同步后修改配置

这一步很重要的,一定要做。 node2和 node3 同步做

# node1 执行, 前面已经执行过echo 1 > /data/kafka/zookeeper/myid # node2 执行echo 2 > /data/kafka/zookeeper/myid # node3 执行echo 3 > /data/kafka/zookeeper/myid # 修改 kafka 配置文件 server.properties 中的这两行  zk模式修改cd /data/kafka/configvim server.properties# node1  前面修改可以不用改broker.id=0listeners=PLAINTEXT://node1:9092 # node2broker.id=1listeners=PLAINTEXT://node2:9092 # node3broker.id=2listeners=PLAINTEXT://node3:9092  # 修改 kafka 配置文件 server.properties 中的这两行  kraft 模式修改cd /data/kafka/config/kraftvim server.properties # node1 前面修改了node.id=1listeners=PLAINTEXT://node1:9092,CONTROLLER://node1:9093advertised.listeners=PLAINTEXT://node1:9092 # node2 node.id=2listeners=PLAINTEXT://node2:9092,CONTROLLER://node2:9093advertised.listeners=PLAINTEXT://node2:9092 # node3node.id=3listeners=PLAINTEXT://node3:9092,CONTROLLER://node3:9093advertised.listeners=PLAINTEXT://node3:9092

 

kafa kraft 模式 配置  - zk 不需要执行-在node1执行即可

 # 生成 uudicd /data/kafka/bin/./kafka-storage.sh random-uuidMcHv1APORp-y-_gHoIRzBQ  # 这个命令每一台执行./kafka-storage.sh format \-t McHv1APORp-y-_gHoIRzBQ \-c /data/kafka/config/kraft/server.properties

 

 

20、启动服务  三台都执行

systemctl enable zookeeper.servicesystemctl enable kafka.service
# 启动- 三台先都启动好 zk 后,观察没有问题,在启动 kafkasystemctl start zookeeper.servicesystemctl start kafka.service

 

21、 查看进程和端口信息

[root@node1 config]# jps -l3283 kafka.Kafka1395 org.apache.zookeeper.server.quorum.QuorumPeerMain3711 sun.tools.jps.Jps

 

 

22、可以安装 kafka ui ,可以不安装  

docker 安装参考【有道云笔记】docker二进制安装

 

#如果没外网可以把镜像本地下载,然后上传到服务器中# 我这里准备了kafka-ui.img.zipunzip kafka-ui.img.zipdocker load -i kafka-ui.img docker run -itd -p 8080:8080 --restart=always -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui:v0.7.1

 

23、 访问 kafka ui

http://10.0.9.147:8080

 

新增 kafka 机器

 

 

【声明】内容源于网络
0
0
GookSpin
运维技术文档分享
内容 3
粉丝 0
GookSpin 运维技术文档分享
总阅读2
粉丝0
内容3