首先,我要說(shuō),Kafka 是強(qiáng)依賴于 ZooKeeper 的,所以在設(shè)置 Kafka 集群之前,我們首先需要設(shè)置一個(gè) ZooKeeper 集群。
部署ZooKeeper需要安裝jdkyum install java-1.8.0-openjdk
安裝完以后
下面是詳細(xì)的步驟:
1. 安裝和配置 ZooKeeper 集群
1.1 下載 ZooKeeper:
cd /data1
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz
1.2 解壓縮:
tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz
cd /data1/
mkdir kafka
mv apache-zookeeper-3.8.3-bin /data1/kafka/zookeeper
1.3 在每臺(tái)機(jī)器上創(chuàng)建 myid
文件,并存放在一個(gè)特定的目錄,例如 /data1/zookeeper_data
。文件中的內(nèi)容是每臺(tái)機(jī)器的唯一ID,從 1 開(kāi)始增加。
mkdir /data1/zookeeper_data
echo "1" > /data1/zookeeper_data/myid # 對(duì)于第二臺(tái)機(jī)器為2,第三臺(tái)為3
1.4 編輯 ZooKeeper 的配置文件:
cd /data1/kafka/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
編輯 zoo.cfg
:
vi zoo.cfg
添加/修改以下內(nèi)容:
dataDir=/data1/zookeeper_data
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
server.1=192.142.25.119:2888:3888
server.2=192.142.25.120:2888:3888
server.3=192.142.25.121:2888:3888
2. 安裝和配置 Kafka 集群
2.1 下載 Kafka:
cd /data1
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
2.2 解壓縮:
tar -zxvf kafka_2.13-3.6.0.tgz
mv kafka_2.13-3.6.0 /data1/kafka/kafka
2.3 編輯 Kafka 的配置文件:
cd /data1/kafka/kafka/config
vi server.properties
添加/修改以下內(nèi)容:
broker.id=1 # 對(duì)于第二臺(tái)機(jī)器為2,第三臺(tái)為3
zookeeper.connect=192.142.25.119:2181,192.142.25.120:2181,192.142.25.121:2181
log.dirs=/data1/kafka/kafka-logs
2.4 設(shè)置 Kafka 的堆內(nèi)存:
export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"
3. 啟動(dòng) ZooKeeper 和 Kafka 集群
在每臺(tái)機(jī)器上:
# 啟動(dòng) ZooKeeper(先把3臺(tái)的zookeeper都啟動(dòng),再分別啟動(dòng)kafka)
/data1/kafka/zookeeper/bin/zkServer.sh start
# 啟動(dòng) Kafka
/data1/kafka/kafka/bin/kafka-server-start.sh /data1/kafka/kafka/config/server.properties &
4. Spring Boot 連接到 Kafka 集群
添加 Maven 依賴:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>your_version</version>
</dependency>
配置 application.yml 或 application.properties:
spring:
kafka:
bootstrap-servers: 192.142.25.119:9092,192.142.25.120:9092,192.142.25.121:9092
之后,你可以使用 @KafkaListener
和 KafkaTemplate
來(lái)進(jìn)行消息的消費(fèi)和生產(chǎn)。
注意:以上步驟提供了基本的集群設(shè)置,可能需要根據(jù)實(shí)際環(huán)境進(jìn)行適當(dāng)調(diào)整。尤其在生產(chǎn)環(huán)境中,需要考慮安全性、高可用性和性能優(yōu)化等問(wèn)題。
為 Kafka 設(shè)置身份驗(yàn)證通常涉及使用 SASL。在這里,我將向您展示如何使用 SASL/PLAIN 為 Kafka 設(shè)置簡(jiǎn)單的用戶名和密碼,并為 Spring Boot 提供相應(yīng)的連接方式。
1. Kafka 設(shè)置使用 SASL/PLAIN:
1.1. 編輯 Kafka 的 server.properties
:
cd /data1/kafka/kafka/config
vi server.properties
在文件中添加以下內(nèi)容:
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
1.2. 在 Kafka 配置目錄下創(chuàng)建一個(gè) JAAS 配置文件,例如 kafka_server_jaas.conf
:
vi /data1/kafka/kafka/config/kafka_server_jaas.conf
添加以下內(nèi)容:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_otheruser="otherpassword";
};
在這里,我們創(chuàng)建了兩個(gè)用戶:admin
和 otheruser
。
1.3. 在啟動(dòng) Kafka 之前,設(shè)置以下環(huán)境變量:
export KAFKA_OPTS="-Djava.security.auth.login.config=/data1/kafka/kafka/config/kafka_server_jaas.conf"
確實(shí),當(dāng)您直接在終端中執(zhí)行export
命令設(shè)置環(huán)境變量時(shí),這些設(shè)置只對(duì)當(dāng)前的shell會(huì)話有效。當(dāng)會(huì)話結(jié)束或您關(guān)閉終端時(shí),這些設(shè)置會(huì)丟失。為了讓這些設(shè)置在每次用戶登錄或開(kāi)啟新的shell會(huì)話時(shí)都生效,您需要將這些export
命令添加到某些特定的shell初始化文件中。
以下是幾種常見(jiàn)的shell以及相關(guān)的初始化文件:
-
bash:
-
/etc/profile
: 所有用戶都會(huì)執(zhí)行此文件。 -
~/.bashrc
或~/.bash_profile
: 只對(duì)特定用戶生效。
-
-
zsh:
-
/etc/zsh/zshenv
: 所有用戶都會(huì)執(zhí)行此文件。 -
~/.zshrc
: 只對(duì)特定用戶生效。
-
根據(jù)您的需要和所用的shell,您可以選擇將以下內(nèi)容添加到相應(yīng)的文件中:
export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"
export KAFKA_OPTS="-Djava.security.auth.login.config=/data1/kafka/kafka/config/kafka_server_jaas.conf"
例如,如果您使用的是bash
并希望這些設(shè)置對(duì)所有用戶都生效,可以執(zhí)行以下命令:
echo 'export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"' | sudo tee -a /etc/profile
echo 'export KAFKA_OPTS="-Djava.security.auth.login.config=/data1/kafka/kafka/config/kafka_server_jaas.conf"' | sudo tee -a /etc/profile
或者,如果您只希望這些設(shè)置對(duì)當(dāng)前用戶生效,您可以將上述export
命令添加到您的~/.bashrc
或~/.bash_profile
中。
完成上述步驟后,您可以通過(guò)執(zhí)行source
命令來(lái)重新加載配置文件,使設(shè)置立即生效,例如:
source /etc/profile
或者
source ~/.bashrc
這樣,每次您登錄或開(kāi)啟新的shell會(huì)話時(shí),這些環(huán)境變量設(shè)置都會(huì)自動(dòng)應(yīng)用。
1.4. 重啟 Kafka 服務(wù)器以應(yīng)用更改。
2. Spring Boot 連接到受密碼保護(hù)的 Kafka:
2.1. 在您的 pom.xml
或 build.gradle
文件中確保已添加了以下依賴:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>your_version</version>
</dependency>
2.2. 在 application.yml
或 application.properties
文件中添加以下內(nèi)容:
spring:
kafka:
bootstrap-servers: 192.142.25.119:9092,192.142.25.120:9092,192.142.25.121:9092
consumer:
group-id: your-group-id
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
properties:
security.protocol: SASL_PLAINTEXT
sasl.mechanism: PLAIN
sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";
這里我們使用了 admin
用戶和對(duì)應(yīng)的密碼來(lái)連接到 Kafka。根據(jù)您的需求調(diào)整用戶名和密碼。
現(xiàn)在,您應(yīng)該能夠使用 Spring Boot 連接到受密碼保護(hù)的 Kafka 集群并進(jìn)行消息生產(chǎn)和消費(fèi)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-715714.html
注意:SASL/PLAIN 文本身份驗(yàn)證不提供傳輸安全性。在生產(chǎn)環(huán)境中,您應(yīng)該考慮使用 SSL/TLS 與 SASL/PLAIN 結(jié)合來(lái)確保數(shù)據(jù)的機(jī)密性和完整性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-715714.html
到了這里,關(guān)于3臺(tái)Centos7快速部署Kafka集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!