從 EMR-3.12.0 版本開始,E-MapReduce Kafka支援SSL功能。

建立叢集

具體的建立叢集操作,請參見建立叢集

開啟SSL服務

預設Kafka叢集沒有開啟SSL功能,您可以在Kafka服務的配置頁面開啟SSL。

如圖,修改配置項kafka.ssl.enabletrue,部署配置並重啟組件。

用戶端訪問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