【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题

网友投稿 679 2022-10-06

【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题

【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题

问题描述

经过前两篇文章,分别使用VM搭建了Kafka服务,创建了Azure Function项目,并且都在本地运行成功。

【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息【Azure 应用服务】本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验

现在,本文中将把Kafka Trigger Function代码部署到Azure中,并解决Function在云上运行时遇见的 (Failed to resolve 'xxxxxxtest01.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp-:9092': No such host is known. )问题

问题解答

第一部分:从VS 2022中部署Function代码到Azure Function App

首先:在Azure中创建好一个Function App,在Function App Overview页面-Publish Profile文件

最后:把 BrokerList ,KafkaPassword ,ConnectionString 添加到Function App的Application Setting中

"BrokerList": "xxx.xxx.xxx.xxx:9092", "KafkaPassword": "KafkaPassword", "ConnectionString": "ConnectionString"

以上操作完成后,正常情况Function会运行成功。但是由于实验中使用的Kafka服务没有公共域名,只是使用IP地址进行访问。但是Kafka Trigger作为消费者连接到服务端时,GroupCoordinator 会通过IP地址,获取到Kafka Server生产的默认域名(如:Failed to resolve 'xxxxxxtest01.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp-:9092': No such host is known.)然后需要在本地进行解析,而VM环境中可以通过修改 windows host文件来指定IP。但是在PaaS服务(Azure Function)中,是无法修改的。那么是否有办法来自定义DNS服务器呢? 请见第二部分。

第二部分:解决Failed to resolve 'xxxxxxtest01.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp-:9092': No such host is known. 问题

为了能够让Azure Function能够解析 *****.c2vbkl4ntjrehlqe5jmwliuhob.bx.internal.chinacloudapp- 的私有域名,就需要找一个自定义的DNS服务器,然后在Function中配置  WEBSITE_DNS_SERVER,用指定的DNS 服务器来解析私有域名。

本文中使用的自定义DNS服务为 Azure 的 DNS Zone 服务,它可以自由的定义私有域名并且指定A记录。

第一步: 以 bx.internal.chinacloudapp-为 自定义域创建DNS Zone

进入​​DNS zones - Microsoft Azure 由世纪互联运营​​,创建名为 bx.internal.chinacloudapp-的DNS Zone资源

第二步:把kafka服务器的默认域名在DNS Zone中添加为A记录

第三步:通过ping指令反解析处DNS Zone的Service IP地址,然后以此IP地址测试解析 Kafka域名,验证是否能成功解析为Kafka服务IP地址

通过 nslookup 指定DSN解析服务器为 ns1-02.azure-dns- 成功解析kafka域名, 因为Azure Funciton WEBSITE_DNS_SERVER  只能设置为IP地址,所以需要找出ns1-02.azure-dns-的IP地址

第四步:把DNS Zone服务的IP地址作为Function 的第一DNS解析服务器

在Funciton App 的配置页面,设置 WEBSITE_DNS_SERVER 和WEBSITE_ALT_DNS_SERVER 的值。

WEBSITE_DNS_SERVER 

40.73.192.2

WEBSITE_ALT_DNS_SERVER 

168.63.129.16  

PS: WEBSITE_ALT_DNS_SERVER 作为次DNS服务器, 它的值为168.63.129.16 (Azure服务默认的DNS服务器地址)

第五步:在Function1, Function2中,验证Function运行正常

【END】

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何解决微信小程序报错:this.setData is not a function的问题(微信小程序出错)
下一篇:基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~