下载如图所示.tgz大小100多M的安装包
- 安装包下载完成后,再/usr/local目录下解压
- 配置systemctl服务项 配置zookeeper服务项
sudo vim /etc/systemd/system/kafka_ZooKeeper-server.service
[double@A25358721 system]$ cat kafka_ZooKeeper-server.service
[Unit]
# 文件放置目录(CentOS 7)/usr/lib/systemd/system/python.service
# 服务描述
Description=Kafka ZooKeeper-server Service
# 在多用户运行后启动
After=multi-user.target
[Service]
#Environment="prometheus_multiproc_dir=/home/automan/codeCenter/prometheus_tmp_dir/"
Type=idle
Restart=on-failure
User=root
Group=root
#PIDFile=/tmp/python.pid
# 运行命令
ExecStart=/usr/local/kafka_2.12-3.2.3/bin/zookeeper-server-start.sh /usr/local/kafka_2.12-3.2.3/config/zookeeper.properties
ExecStop=/usr/local/kafka_2.12-3.2.3/bin/zookeeper-server-stop.sh
RestartSec=10s
[Install]
WantedBy=multi-user.target
配置kafka服务项
sudo vim /etc/systemd/system/kafka-server.service
[double@A25358721 system]$ cat kafka-server.service
[Unit]
# 文件放置目录(CentOS 7)/usr/lib/systemd/system/python.service
# 服务描述
Description=Kafka ZooKeeper-server Service
# 在多用户运行后启动
After=multi-user.target
[Service]
#Environment="prometheus_multiproc_dir=/home/automan/codeCenter/prometheus_tmp_dir/"
Type=idle
Restart=on-failure
User=root
Group=root
#PIDFile=/tmp/python.pid
# 运行命令
ExecStart=/usr/local/kafka_2.12-3.2.3/bin/kafka-server-start.sh /usr/local/kafka_2.12-3.2.3/config/server.properties
ExecStop=/usr/local/kafka_2.12-3.2.3/bin/kafka-server-stop.sh
RestartSec=10s
[Install]
WantedBy=multi-user.target
配置完成
sudo systemctl daemon-reload
sudo systemctl start kafka_ZooKeeper-server
sudo systemctl status kafka_ZooKeeper-server
sudo systemctl start kafka-server
sudo systemctl status kafka-server
配置全局命令,在~/.bashrc文件中编辑:export PATH=/usr/local/kafka_2.12-3.2.3/bin:$PATH,source .bashrc重新加载用户配置文件,就可以全局使用kafka/bin下的命令了
新版kafka
将--zookeeper替换为--bootstrap-server,并提供Kafka broker地址。新版本的Kafka不再需要直接与ZooKeeper交互。
创建topic主体
在新版本的Kafka中(Kafka 2.4及以上),Kafka移除了对ZooKeeper直接操作的支持,转而通过Kafka本身管理主题,而不是依赖`--zookeeper`选项。
从Kafka 2.4开始,使用`kafka-topics.sh`时,不再需要指定ZooKeeper连接。取而代之的是指定Kafka broker地址(`--bootstrap-server`),而不是`--zookeeper`。
$KAFKA_HOME/bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 1 \
--topic my-topic
#### 参数解释:
- --bootstrap-server localhost:9092`:指定Kafka broker的地址和端口(通常是`localhost:9092`)。
- --replication-factor 1`:副本因子。
- --partitions 1`:分区数。
- --topic my-topic`:要创建的主题名称。
列出主题
$KAFKA_HOME/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
列出主题详细信息
$KAFKA_HOME/bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-topic
配置远程可访问
### 1. **配置`server.properties`文件**
Kafka的配置文件通常位于`$KAFKA_HOME/config/server.properties`,你需要对该文件进行以下修改。
#### 1.1 修改`advertised.listeners`
Kafka使用`advertised.listeners`告诉客户端如何连接到它。默认情况下,Kafka只会监听本地主机 (`localhost`),这会阻止远程服务器访问Kafka。
你需要将`advertised.listeners`设置为Kafka服务器的外部IP地址或主机名:
advertised.listeners=PLAINTEXT://your.kafka.server.ip:9092
- `your.kafka.server.ip`:Kafka服务器的IP地址或域名(使其他服务器可以访问的外部地址)。
- `9092`:Kafka的默认端口号。如果你使用其他端口,替换它。
**示例**:如果Kafka服务器的IP地址为`192.168.1.100`,则可以这样配置:
advertised.listeners=PLAINTEXT://192.168.1.100:9092
#### 1.2 修改`listeners` (可选)
`listeners`配置用于指定Kafka监听的地址。默认情况下,Kafka监听`localhost:9092`,只接受来自本地的连接。
如果你希望Kafka监听所有网络接口,允许从其他机器连接,可以将其设置为:
listeners=PLAINTEXT://0.0.0.0:9092
- `0.0.0.0`表示Kafka会监听所有网络接口上的请求。
#### 1.3 设置防火墙规则
确保Kafka的端口(例如 `9092`)在你的服务器上是开放的,并允许外部访问。
- 使用`iptables`或`firewalld`来检查并开放端口:
sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
或者,使用`firewalld`:
sudo firewall-cmd --add-port=9092/tcp --permanent
sudo firewall-cmd --reload
#### 1.4 修改`host.name` (老版本可选)
在某些较老的Kafka版本中(Kafka 0.8.x),可以使用`host.name`选项来指定Kafka服务器的主机名或IP地址,确保外部服务器可以通过该地址访问Kafka。
host.name=your.kafka.server.ip
advertised.listeners=PLAINTEXT://your.kafka.server.ip:9092
listeners=PLAINTEXT://0.0.0.0:9092