-
KRaft 模式是 Kafka 在 3.0 版本中引入的新模式。KRaft 模式使用了 Raft 共識算法來管理 Kafka 集群元數(shù)據(jù)。Raft 算法是一種分布式共識算法,具有高可用性、可擴展性和安全性等優(yōu)勢。
-
在 KRaft 模式下,Kafka 集群中的每個 Broker 都具有和 Zookeeper 類似的角色。每個 Broker 都參與管理 Kafka 集群元數(shù)據(jù),包括分區(qū)分配、副本分配、元數(shù)據(jù)快照等。
Zookeeper 模式和KRaft 模式 對比
特性 | KRaft 模式 | Zookeeper 模式 |
---|---|---|
使用共識算法 | Raft | Zookeeper |
可用性 | 高 | 高 |
擴展性 | 高 | 高 |
安全性 | 高 | 高 |
復雜度 | 低 | 高 |
KRaft 模式的優(yōu)勢
KRaft 模式具有以下優(yōu)勢:
- 更簡單:KRaft 模式將 Kafka 集群元數(shù)據(jù)管理整合到了 Kafka 中,因此不需要使用外部服務,這使得 Kafka 集群的部署和管理更加簡單。
更高效:KRaft 模式使用了 Raft 算法來管理 Kafka 集群元數(shù)據(jù),Raft 算法具有更高的效率,因此 Kafka 集群的性能可以得到提升。
更可靠:KRaft 模式使用了 Raft 算法來管理 Kafka 集群元數(shù)據(jù),Raft 算法具有更高的可靠性,因此 Kafka 集群的穩(wěn)定性可以得到提升。
helm安裝
helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/kafka --untar
helm install kafka kafka --values ./kafka/values.yaml \
--set replicaCount=1 \
--set kafka.kafkaConfigOverrides=transaction.state.log.replication.factor=1 \
--set kafka.kafkaConfigOverrides=transaction.state.log.min.isr=1 \
--set kafka.kafkaConfigOverrides=default.replication.factor=1 \
--set kafka.kafkaConfigOverrides=num.io.threads=2 \
--set kafka.kafkaConfigOverrides=num.network.threads=2 \
--set kafka.kafkaConfigOverrides=inter.broker.protocol.version=3.5.1 \
--set kafka.kafkaConfigOverrides=offsets.topic.replication.factor=1 \
--set kafka.kafkaConfigOverrides=transaction.state.log.num.partitions=50
最后得到
kafka-controller-0.kafka-controller-headless.openim-dev.svc.cluster.local:9092
kafka-controller-1.kafka-controller-headless.openim-dev.svc.cluster.local:9092
kafka-controller-2.kafka-controller-headless.openim-dev.svc.cluster.local:9092
The CLIENT listener for Kafka client connections from within your cluster have been configured with the following security settings:
- SASL authentication
To connect a client to your Kafka, you need to create the 'client.properties' configuration files with the content below:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="user1" \
password="$(kubectl get secret kafka-user-passwords --namespace openim-dev -o jsonpath='{.data.client-passwords}' | base64 -d | cut -d , -f 1)";
在安裝一個kafka-web文章來源:http://www.zghlxwxcb.cn/news/detail-779815.html
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-ui
labels:
app: kafka-ui
spec:
replicas: 1
selector:
matchLabels:
app: kafka-ui
template:
metadata:
labels:
app: kafka-ui
spec:
containers:
- name: kafka-ui
image: provectuslabs/kafka-ui:latest
env:
- name: KAFKA_CLUSTERS_0_NAME
value: '可以自定義名字 Kafka Cluster'
- name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS
value: 'kafka-controller-0:9092,kafka-controller-1:9092,kafka-controller-2:9092'
- name: KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL
value: 'SASL_PLAINTEXT'
- name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM
value: 'PLAIN'
- name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG
value: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="user1" password="19fJTxgwnD";'
resources:
requests:
memory: "256Mi"
cpu: "100m"
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: kafka-ui
spec:
selector:
app: kafka-ui
type: NodePort
ports:
- protocol: TCP
port: 8080
targetPort: 8080
文章來源地址http://www.zghlxwxcb.cn/news/detail-779815.html
到了這里,關于Kafka集群部署 (KRaft模式集群)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!