E-MapReduce Kafka从EMR-3.12.0版本开始,开始支持SSL功能。

前提条件

已创建Kafka类型的集群。

创建集群

具体的创建集群操作,请参见创建集群

开启SSL服务

Kafka集群默认没有开启SSL功能,您可以在Kafka服务的配置页面开启SSL。开启SSL
  1. 登录阿里云 E-MapReduce 控制台
  2. 单击上方的集群管理页签。
  3. 集群管理页面,单击相应集群所在行的详情
  4. 在左侧导航栏单击集群服务 > kafka
  5. 单击配置页签,修改服务配置。
    1. kafka.ssl.enable修改为true
    2. 单击保存
    3. 确认修改页面,输入执行原因,勾选自动更新配置
    4. 单击确定
  6. 单击查看操作历史,等待状态成功时,表示配置完成。
  7. 单击右上角的操作 > 重启 All Componens
    1. 执行集群操作页面,选择执行范围是否滚动执行失败处理策略,输入执行原因
    2. 单击确定
  8. 单击查看操作历史,等待状态成功时,表示开启SSL服务成功。

客户端访问 Kafka

客户端通过SSL访问Kafka时需要设置 security.protocoltruststorekeystore 的相关配置。以非安全集群为例,如果是在 Kafka 集群运行作业,可以配置如下:
security.protocol=SSL
ssl.truststore.location=/etc/ecm/kafka-conf/truststore
ssl.truststore.password=${password}
ssl.keystore.location=/etc/ecm/kafka-conf/keystore
ssl.keystore.password=${password}

如果是在Kafka集群以外的环境运行作业,可将Kafka集群中的truststore和keystore文件(位于集群任意一个节点的 /etc/ecm/kafka-conf/目录中)拷贝至运行环境作相应配置。

以Kafka自带的producer和consumer程序,在Kafka集群运行为例:
  1. 创建配置文件ssl.properties, 添加配置项。
    security.protocol=SSL
     ssl.truststore.location=/etc/ecm/kafka-conf/truststore
     ssl.truststore.password=${password}
     ssl.keystore.location=/etc/ecm/kafka-conf/keystore
     ssl.keystore.password=${password}
  2. 创建topic。
    kafka-topics.sh --zookeeper emr-header-1:2181/kafka-1.0.1 --replication-factor 2 --
    partitions 100 --topic test --create
  3. 使用SSL配置文件产生数据。
    kafka-producer-perf-test.sh --topic test --num-records 123456 --throughput 10000 --record-size 1024 --producer-props bootstrap.servers=emr-worker-1:9092 --producer.config ssl.properties
  4. 使用SSL配置文件消费数据。
    kafka-consumer-perf-test.sh --broker-list emr-worker-1:9092 --messages 100000000 --topic test --consumer.config ssl.properties