GCP DataFlow Kafka到BigQuery的DNS映射



你好,我正在尝试运行一个作业,从GCP外部托管的kafka中读取一些事件,使用数据流,该作业在VPC网络上运行。

问题是kafka被配置为用主机名而不是ip来回答,因此在bootstrap中指定ip会导致在数据流上运行作业时连接到目标节点失败。

Reader-1: Timeout while initializing partition 'placeholder'. Kafka client may not be able to connect to servers. 

另一方面,如果我用kafka创建一个VM,并在etc/host中指定映射主机名-ip,我可以正确地使用。
为了使它在Dataflow上工作,我试图用DNS name = .创建一个私有云DNS,这允许我创建一个区域,在那里我可以将每个条目DNS name = nodename1.中的主机映射到data = IP1

这似乎可以工作,因为我能够在虚拟机上telnet nodename1,我没有指定在etc/host中的映射。

然而,作业在开始时卡住了,我得到的唯一错误是:

"Timeout in polling result file: gs://placeholder/staging,zone=europe-central2-a/template_launches/2021-09-28_01_43_38-12780367774525067695/operation_result.
Possible causes are:
1. Your launch takes too long time to finish. Please check the logs on stackdriver.
2. Service account placeholder@placeholder may not have enough permissions to pull container image gcr.io/dataflow-templates/2021-09-20-00_rc00/kafka-to-bigquery or create new objects in gs://placeholder.
3. Transient errors occurred, please try again."

是否有一种简单的方法将主机映射到ip用于数据流中的作业?

我明白了。

正确的方法是不要用DNS name=.创建一个区域,因为这将意味着解析每个域GCP将查看该区域,除了我创建的name-ip条目外,找不到任何其他内容。由于Dataflow worker在内部查询169.254.169.254,该查询被转发到我创建的区域,无法解析,导致作业挂起。

正确的方法是为每个kafka "nodename"与DNS name = nodename.,然后映射一个条目nodename.-ip

通过对每个引导的节点名重复此操作,数据流无法自动解析,它能够正确地从kafka主题中消费。

相关内容

  • 没有找到相关文章

最新更新