Teradata Access Module for Kafkaを使用すると、Kerberized Kafkaクラスタに対してデータのエクスポートおよびデータのインポートを行なうことができます。
例 – UnixプラットフォームでAccessModuleKafkaを使用した、Kerberized Kafkaクラスタとのやり取り
- Kerberosドメインに、Zookeeperサーバー、Kafkaサーバー、およびKafkaクライアント マシンを追加します。
- ZOOKEEPER_HOST、KAFKA_HOST、およびCLIENT_HOSTを、ホストとADの両方のユーザーとして追加します。
ADユーザーとして、上記のマシンにrootまたはよく使用されるユーザーを追加します。
- Zookeeperサーバー、Kafkaサーバー、およびKafkaクライアントのSPNを追加します。
setspn -S zookeeper/${ZOOKEEPER_HOST_FQDN}@${REALM} ${ZOOKEEPER_HOST} setspn -S kafka/${KAFKA_HOST_FQDN}@${REALM} ${KAFKA_HOST} setspn -S ${CLIENT_NAME}/${CLIENT_HOST_FQDN}@${REALM} ${CLIENT_HOST}
- キータブ ファイルを生成します。
ktpass -princ zookeeper/${ZOOKEEPER_HOST_FQDN}@${REALM} -mapuser ${ZOOKEEPER_HOST} -pass ${PASSWORD} -mapOp set -ptype KRB5_NT_PRINCIPAL -out zookeeper.keytab ktpass -princ kafka/${KAFKA_HOST_FQDN}@${REALM} -mapuser ${KAFKA_HOST} -pass ${PASSWORD} -mapOp set -ptype KRB5_NT_PRINCIPAL -out kafkaserver.keytab ktpass -princ ${CLIENT_NAME}/${CLIENT_HOST_FQDN}@${REALM} -mapuser ${CLIENT_HOST} -pass ${PASSWORD} -mapOp set -ptype KRB5_NT_PRINCIPAL -out ${CLIENT_HOST}.keytab
説明:- REALM – Kerberosレルム
- CLIENT_NAME – クライアント名(例: "kafkaclient")
- ZOOKEEPER_HOST – Zookeeperサーバーが実行されるマシンの名前
- KAFKA_HOST – Kafkaサーバーが実行されるマシンの名前
- CLIENT_HOST – クライアント アプリケーションが実行されるクライアントのホスト名
- ZOOKEEPER_HOST_FQDN – Zookeeperサーバーの完全修飾ドメイン名
- KAFKA_HOST_FQDN – Kafkaサーバーの完全修飾ドメイン名
- CLIENT_HOST_FQDN – クライアントの完全修飾ドメイン名
- 次を実行します。
- キータブ ファイルを対応するマシンの/etc/security/keytabsにコピーします。
- zookeeper_server_jaas.confファイル内のzookeeperキータブ ファイルの場所を更新します。
- kafka_server_jaas.confファイル内のkafkaserverキータブ ファイルの場所を更新します。
- ZookeeperサーバーとKafkaサーバーを起動します。
- 初期化文字列に次のパラメータを含めます。
- -B HOST@REALM:<<portno>>
- -X security.protocol=SASL_PLAINTEXT
- -X sasl.kerberos.keytab=/etc/security/keytabs/${CLIENT_HOST}.keytab
- -X sasl.kerberos.principal=${CLIENT_NAME}/${CLIENT_HOST_FQDN}
プロデューサ ジョブの例:AccessModuleInitStr = '-M P -T <<topic-name>> -B HOST@REALM:<<portno>> -P 0 -X security.protocol=SASL_PLAINTEXT -X sasl.kerberos.keytab=/etc/security/keytabs/CLIENT_HOST.keytab -X sasl.kerberos.principal=CLIENT_NAME/CLIENT_HOST_FQDN'
コンシューマ ジョブの例:AccessModuleInitStr = '-M C -T <<topic-name>> -B HOST@REALM:<<portno>> -P 0 -X security.protocol=SASL_PLAINTEXT -X sasl.kerberos.keytab=/etc/security/keytabs/CLIENT_HOST.keytab -X sasl.kerberos.principal=CLIENT_NAME/CLIENT_HOST_FQDN'
例 – WindowsプラットフォームでAccessModuleKafkaを使用した、Kerberized Kafkaクラスタとのやり取り
- Kerberosドメインに、Zookeeperサーバー、Kafkaサーバー、およびKafkaクライアント マシンを追加します。
- ZookeeperサーバーとKafkaサーバー(つまり、"Zookeeper"と"Kafka")用のADユーザーを作成します。
- ZookeeperサーバーとKafkaサーバーのSPNを追加します。
SETSPN -S zookeeper/HOST@REALM DOMAIN\<<AD Zookeeper Username>> SETSPN -S zookeeper/HOST_FQDN@REALM DOMAIN\<<AD Zookeeper Username>> SETSPN -S kafka/HOST@REALM DOMAIN\<<AD Kafka Username>> SETSPN -S kafka/HOST_FQDN@REALM DOMAIN\<<AD Kafka Username>>
- キータブ ファイルを生成します。
ktpass -princ zookeeper/HOST@REALM -mapuser DOMAIN\<<AD Zookeeper Username>> -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass ${PASSWORD} -out C:\keytabs\zookeeper.keytab ktpass -princ zookeeper/HOST_FQDN@REALM -mapuser DOMAIN\<<AD Zookeeper Username>> -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass ${PASSWORD} -in C:\keytabs\zookeeper.ktab -out C:\keytabs\zookeeper.keytab ktpass -princ kafka/HOST@REALM -mapuser DOMAIN\<<AD Kafka Username>> -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass ${PASSWORD} -out C:\keytabs\kafka.keytab ktpass -princ kafka/HOST_FQDN@REALM -mapuser DOMAIN\<<AD Kafka Username>> -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass ${PASSWORD} -in C:\keytabs\kafka.ktab -out C:\keytabs\kafka.keytab
- 次を実行します。
- キータブ ファイルを対応するマシンにコピーします。
- zookeeper_server_jaas.confファイル内のZookeeperキータブ ファイルの場所を更新します。
- kafka_server_jaas.confファイル内のkafkaserverキータブ ファイルの場所を更新します。
- ZookeeperサーバーとKafkaサーバーを起動します。
- 初期化文字列に以下のパラメータを含めます。
- -B HOST@REALM:<<portno>>
- -X security.protocol=SASL_PLAINTEXT
- -X sasl.kerberos.principle=kafka/HOST_FQDN@REALM
- -X sasl.kerberos.service.name=kafka
プロデューサ ジョブの例:AccessModuleInitStr = '-M P -T <<topic-name>> -B HOST@REALM:<<portno>> -P 0 -X security.protocol=SASL_PLAINTEXT -X sasl.kerberos.service.name=kafka -X sasl.kerberos.principal=kafka/HOST_FQDN@REALM' Example consumer job: AccessModuleInitStr = '-M C -T <<topic-name>> -B HOST@REALM:<<portno>> -P 0 -X security.protocol=SASL_PLAINTEXT -X sasl.kerberos.service.name=kafka -X sasl.kerberos.principal=kafka/HOST_FQDN@REALM'