【发布时间】:2022-01-17 19:18:07
【问题描述】:
如果我们想在分布式模式下设置 Kafka 连接器,我们需要在 CONNECT_REST_ADVERTISED_HOST_NAME 处拥有一个唯一的主机名。但是,如果我们使用自动扩展组在 AWS 上部署连接器,则没有已知的主机名,不知道如何进行设置?
【问题讨论】:
标签: apache-kafka-connect aws-auto-scaling
如果我们想在分布式模式下设置 Kafka 连接器,我们需要在 CONNECT_REST_ADVERTISED_HOST_NAME 处拥有一个唯一的主机名。但是,如果我们使用自动扩展组在 AWS 上部署连接器,则没有已知的主机名,不知道如何进行设置?
【问题讨论】:
标签: apache-kafka-connect aws-auto-scaling
您可以使用预先创建的 EC2 实例中的以下步骤来实现此场景。
rest.advertised.host.name属性connect-distributed.properties文件rest.advertised.host.name=主机名
kafka-connect.service文件
nano /etc/systemd/system/kafka-connect.service
[Unit]
Description=Kakfka-connect
After=network.target
[Service]
User=ubuntu
Group=ubuntu
Environmet="KAFKA_HEAP_OPTS=-Xmx4G -Xms2G"
Environment="KAFKA_OPTS=-javaagent:/home/ubuntu/prometheus/jmx_prometheus_javaagent-0.16.1.jar=8080:/home/ubuntu/prometheus/kafka-connect.yml"
ExecStart=/home/ubuntu/kafka/kafka_2.13-2.7.0/bin/connect-distributed.sh /home/ubuntu/config/connect-distributed.properties
[Install]
WantedBy=multi-user.target
3.现在拍摄此 EC2 实例的卷的快照。
使用快照作为卷。并使用以下用户数据。
#!/bin/bash
apt-get update
apt-get -y upgrade
sed -i "s/hostname/$(hostname -I)/g" /home/ubuntu/config/connect-distributed.properties
systemctl start kafka-connect
systemctl enable kafka-connect
当新实例从 Auto-scaling 组启动时,sed 命令会将 rest.advertised.host.name 的 connect-distributed.properties 文件中的“主机名”字符串替换为实例的私有 IP。
【讨论】: