分布式概述
Kafka是一个分布式,多分区,多副本的流处理消息中间件,具备高吞吐量、高可扩展性、可持久化等特性,广泛应用于实时数据传输、日志收集、实时监控数据聚合等实际应用场景中。BMR中的Kafka是基于开源社区的Kafka,提供一种可快速部署,用户独享的Kafka集群。
创建集群
登录百度云控制台,选择“产品服务->MapReduce BMR”,点击“创建集群”,进入集群创建页。购置集群时勾选 Kafka 模板,然后选择需要的kafka版本进行创建,如下图所示:
使用简介
创建Topic
可以通过两种如下两种方式创建Topic:
- 通过Kafka-Manager创建Topic
- 通过kafka命令行创建Topic
方式一.通过Kafka-Manager创建Topic
-
登录控制台,选择“产品服务->MapReduce BMR”,点击已创建的集群的管理按钮,进入Kafka-Manager登录页面。
-
输入用户名密码,成功登录Kafka-Manager后,选择Topic->Create进入Topic创建页面
输入Topic名称,分区数和副本数(建议副本数设置为3),点击Create,就创建Topic完成了。
方式二.通过kafka命令行创建Topic
- 通过SSH连接到集群或使用OpenVPN访问集群方式登录集群主机。
- 进入kafka安装bin目录,通过kafka-topics.sh进行Topic的创建和管理。
生产和消费消息
BMR中的托管Kafka根据客户端所在网络场景提供了两种连接方式:
-
内网访问模式
客户端与Kafka集群网络在同一个VPC内,使用PlanText协议,访问端口为9093,地址为Core节点的内网IP:9093拼接,例如:
192.168.x.xx1:9093,192.168.x.xx2:9093,192.168.x.xx3:9093
内网Kafka客户端直接使用上面的内网地址进行消息发送和消费即可。
-
公网访问模式
客户端是通过公网访问Kafka集群,是通过EIP+SSL方式进行访问。操作步骤如下:
(1).用户现在EIP侧建立EIP(参考创建EIP)后,在Core节点点击绑定公网来绑定EIP,所有的Core节点均需要绑定EIP
(2).在集群管理页面,点击下载客户端证书SSL证书文件:
Kafka访问地址为公网IP:9094拼接,例如:
106.xxx.xxx.1x1:9094,106.xxx.xxx.1x2:9094,106.xxx.xxx.1x3:9094
(3).解压bmr-kafka-ssl-key.zip文件,其中
client.keystore.jks, client.truststore.jks, client.properties 用于kafka的java客户端ssl认证文件
ca.pem, client.key, client.pem 用于kafka的非java(比如go, python)客户端ssl认证文件
(4).java客户端使用ssl证书进行发送和接受消息
将client.keystore.jks, client.truststore.jks, client.properties 放置正确目录下,并且设置bootstrap.servers地址为三台core节点的公网IP:9094连接串,例如180.76.38.89:9094,180.76.38.8:9094,180.76.38.41:9094
启用ssl配置,如下图所示:
(5).go客户端使用ssl证书进行发送和接受消息
将ca.pem, client.key, client.pem拷贝到正确的配置目录下,设置 tls.Config 中 InsecureSkipVerify: true
(6).python客户端使用ssl证书进行发送和接受消息
将ca.pem, client.key, client.pem拷贝到正确的配置目录下,设置 ssl_check_hostname 为false