目录
准备三台机器
依赖软件安装
配置静态ip地址
配置主机名
添加主机名和ip地址映射
关闭防火墙与selinux
部属kafka集群
下载kafka
验证文件完整性
修改配置文件
创建并启动集群
创建集群
启动集群
测试集群
yum install lrzsz -y
cd /etc/yum.repos.d
mkdir repo
mv *.repo repo/
#将原来的老源移动到repo/文件里,系统只会识别.repo文件为源文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#curl是一个请求命令,访问这个网站将内容移动到指定目录中
#下载阿里云源
下载依赖软件:
yum install epel-release -y
yum install wget vim java-11-openjdk.x86_64 -y
默认情况下使用dhcp服务,自动分配ip(有租赁时间,到时间会换),不方便后续使用,所以配置静态ip
修改/etc/sysconfig/network-scripts/ifcfg-ens33(ens33的数字要根据自己的网络接口调整,可以通过ip addr或者ifconfig -a查看)
vim /etc/sysconfig/network-scripts/ifcfg-ens160
#修改配置
```
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
UUID=0f3239b9-6ba7-406e-94e8-fa7b680a4d82
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.223.163 #改为静态ip
NETMASK=255.255.255.0
GATEWAY=192.168.223.2
DNS1=114.114.114.114
```
hostnamectl set-hostname kafka1
修改/etc/hosts文件
vim /etc/hosts
# 修改/etc/hosts文件,添加主机名和ip地址映射
```
192.168.223.161 kafka1
192.168.223.162 kafka2
192.168.223.163 kafka3
```
iptables -F
#清空防火墙规则
systemctl stop firewalld
#关闭防火墙服务
systemctl disable firewalld
#设置开机不自启
vim /etc/selinux/config
'''
SELINUX=permissive
'''
#关闭selinux,编辑/etc/selinux/config 文件
selinux关于linux的安全系统,如果要更改就要加入很多规则,所以直接关掉(实际应用不建议关掉)
重启使配置生效
```
cd /opt
wget https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz
```
解压
```
tar xf kafka_2.13-3.6.1.tgz
cd kafka_2.13-3.6.1
```
哈希算法
md5sum kafka_2.13-3.6.1.tgz
位于kafka目录下config/kraft/server.properties
```
#修改节点id,每个节点唯一
node.id=1
#修改控制器投票列表
[email protected]:9093,[email protected]:9093,[email protected]:9093
#修改监听器和控制器,绑定ip。其中kafka1为主机名,可用本机ip地址代替
listeners=PLAINTEXT://kafka1:9092,CONTROLLER://kafka1:9093
# 侦听器名称、主机名和代理将向客户端公布的端口.(broker 对外暴露的地址)
# 如果未设置,则使用"listeners"的值.
advertised.listeners=PLAINTEXT://kafka1:9092
```
```
cd /opt/kafka_2.13-3.6.1
bin/kafka-storage.sh random-uuid >tmp_random
# 在其中一台执行,生成集群UUID命令,拿到集群UUID保存在当前tmp_random文件中
cat tmp_random
# 查看uuid
# 复制查看到的uuid
bin/kafka-storage.sh format -t 自己生成的集群uuid -c /opt/kafka_2.13-3.6.1/config/kraft/server.properties
# 在所有机器上执行,它会初始化存储区域,为 Kafka 集群的元数据存储和后续操作做好准备。
```
命令行启动
```
启动:
bin/kafka-server-start.sh -daemon /opt/kafka_2.13-3.6.1/config/kraft/server.properties
关闭:
bin/kafka-server-stop.sh
```
systemctl管理服务启动
## 编辑文件 /usr/lib/systemd/system/kafka.service
```
[Unit]
Description=Apache Kafka server (KRaft mode)
Documentation=http://kafka.apache.org/documentation.html
After=network.target
[Service]
Type=forking
User=root
Group=root
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64/bin/"
ExecStart=/opt/kafka_2.13-3.6.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.13-3.6.1/config/kraft/server.properties
ExecStop=/opt/kafka_2.13-3.6.1/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
#重新加载systemd配置
systemctl daemon-reload
#启动kafka服务
systemctl start kafka
#关闭kafka服务
systemctl stop kafka
#开机自启
systemctl enable kafka
# 创建topic
bin/kafka-topics.sh --create --bootstrap-server kafka3:9092 --replication-factor 3 --partitions 3 --topic my_topic
** --replication-factor指定副本因子,--partitions指定分区数,--topic指定主题名称。
# 查看topic
bin/kafka-topics.sh --list --bootstrap-server kafka3:9092
#创建生产者,发送消息,测试用
bin/kafka-console-producer.sh --broker-list kafka3:9092 --topic my_topic
#创建消费者,获取数据,测试用
bin/kafka-console-consumer.sh --bootstrap-server kafka1:9092 --topic my_topic --from-beginning
消费者可以接收到生产者发的信息即为集群部署成功。