常见安装:zookeeper + kafka
zookeeper 单节点安装 :
zookeeper 集群安装:
- 分布式框架提供协调服务,为kafak 管理员,需要 zookeeper
选择机制
、节点监听
等
- 集群管理、leader选举
- Topic注册
- Broker注册
- zookeeper 存储 kafka 的 borker信息,topic等 信息
kafka 集群安装:
- https://kafka.apache.org/ 官网下载对应运行体,eg:kafka_2.12-3.0.0.tgz
- config/
server.properties
修改对应服务配置
broker.id
服务唯一idlog.dirs=/tmp/kafka-logs
数据目录zookeeper.connect
=192.168.2.207:2181,192.168.2.208:2181/kafka 集群地址配置- 各节点启动 : sh kafka-server-start.sh -daemon …/config/server.properties
kafka -
Kraft
模式(去掉zookeeper)
- 版本大于
2.8.0
时,可以不依赖zookeeper 环境启动
- 修改
krafk
目录下 server.properties 配置文件,以下操作每个节点需要同步配置,node.id
为唯一
- 生成一个随机id:
sh kafka-storage.sh random-uuid
- 初始化:
sh kafka-storage.sh format -t ${id} -c /opt/kafka/kafka_2.12-3.0.0/config/kraft/server.properties
-Kraft 模式启动:sh ./bin/kafka-server-start.sh -daemon ./config/kraft/server.properties
Kraft 模式 以及 安全认证配置:
SASL/GSSAPI
:kerberos认证方式,一般使用随机密码的keytab认证方式,密码是加密的,也是企业里使用最多的认证方式;SASL/PLAIN
:这种方式其实就是一个账号/密码的认证方式,不过它有很多缺陷,比如用户名密码是存储在文件中,不能动态添加,密码明文等等!好处是足够简单;SASL/SCRAM
:针对SASL/PLAIN方式的不足而提供的另一种认证方式。这种方式的用户名/密码是存储中zookeeper的,因此能够支持动态添加用户。该种认证方式还会使用sha256或sha512对密码加密,安全性相对会高一些,在0.10.2版本引入;
SASL/PLAIN 安全认证配置 :
- 新建config 文件
config/kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
serviceName="kafka"
username="admin"
password="admin"
user_admin="admin";
};
修改配置文件内容:
- cp一份
server_sasl.properties
修改名称为server_sasl.properties
与非安全认证分开
# 修改以下内容
node.id=1
controller.quorum.voters=1@kraft1:9093
listeners=SASL_PLAINTEXT://192.168.2.207:9092,CONTROLLER://192.168.2.207:9093
inter.broker.listener.name=SASL_PLAINTEXT
advertised.listeners=SASL_PLAINTEXT://192.168.2.207:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka/kafka_2.12-3.0.0/config/kafka_server_jaas.conf"
fi
启动:
sh ./bin/kafka-server-start-sasl.sh -daemon ./config/kraft/server_sasl.properties
spring boot yml配置
server:
port: 8200
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
application:
name: @artifactId@
kafka:
bootstrap-servers: 192.168.2.207:9092
# 生产配置
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
properties:
sasl.mechanism: PLAIN
security.protocol: SASL_PLAINTEXT
sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
#消费配置
consumer:
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
group-id: xiaoshu
enable-auto-commit: false
properties:
sasl.mechanism: PLAIN
security.protocol: SASL_PLAINTEXT
sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
listener:
# 手动调用Acknowledgment.acknowledge()后立即提交
ack-mode: manual
注:
Kraft 配置了安全模式后,集群搭建不成功了,下次配好了,再补上…