Kafka

96 阅读2分钟

kafka下载链接

downloads.apache.org/kafka/

下载如图所示.tgz大小100多M的安装包

image.png

  1. 安装包下载完成后,再/usr/local目录下解压
  2. 配置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