部署安装基于 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 unlimitedroot soft nofile 1024000root hard nofile 1024000root soft nproc 655350root hard nproc 655350root soft stack unlimitedroot hard stack unlimitedroot soft core unlimitedroot hard core unlimitedyunwei 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/configsed -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.confserver ntp.aliyun.com# poll 开头的都注释了systemctl enable ntp && systemctl start ntpcrontab -e*/5 * * * * ntpdate -u ntp.aliyun.com
8、node2 /node3执行
vim /etc/ntp.confserver 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.tgzmv 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=2000initLimit=10syncLimit=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.targetRequires=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.targetRequires=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.targetRequires=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# 同步 servicersync -avz/etc/systemd/system/zookeeper.servicenode2:/etc/systemd/system/zookeeper.servicersync -avz/etc/systemd/system/zookeeper.servicenode3:/etc/systemd/system/zookeeper.servicersync -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# node2node.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、 查看进程和端口信息
[]3283 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.imgdocker 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 机器


