问题描述

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

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

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

问题解答

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

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

然后:在VS 2022中引入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.cn:9092': No such host is known.)然后需要在本地进行解析,而VM环境中可以通过修改 windows host文件来指定IP。但是在PaaS服务(Azure Function)中,是无法修改的。那么是否有办法来自定义DNS服务器呢? 请见第二部分。

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

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

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

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

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

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

点击“Record Set”,选择A记录,输入kafka服务域名,然后添加IP地址。

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

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

最新文章

  1. 【PHP面向对象(OOP)编程入门教程】11.类的继承
  2. android开发实现静默安装(root权限)
  3. MySQL · 特性分析 · innodb 锁分裂继承与迁移
  4. LINQ 用法,返回结果不是在定义时取值,而是在调用时实时取值,有意思!
  5. Accordion( 分类) 组件
  6. 巧用Graphviz和pvtrace等工具可视化C函数调用
  7. hdu 4750 Count The Pairs (2013南京网络赛)
  8. placeholder 属性的支持
  9. 【20171025中】alert(1) to win 脚本渲染自建
  10. Sparklyr与Docker的推荐系统实战
  11. CDH安装系统环境准备——虚拟机网络配置
  12. PACKAGE-INFO.JAVA 作用及用法详解
  13. Node.js模块化教程
  14. Python编码规范:IF中的多行条件
  15. centos安装mariadb
  16. CopyFromScreen在屏幕缩放情况下需要做处理
  17. hadoop需要哪些技术支持
  18. talib 中文文档(九):# Volatility Indicator Functions 波动率指标函数
  19. myeclipse便捷导包方式
  20. Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考

热门文章

  1. FTP主动模式上传文件时返回"ftp: accept: Resource temporarily unavailable"
  2. 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
  3. linux篇-公司网络故障那些事(路由器变交换机)
  4. nacos 快速入门
  5. 负载均衡之keepalived
  6. c++ 乘法逆元
  7. c++ 超长整数乘法 高精度乘法
  8. 测试平台系列(97) 完善执行case部分
  9. C# List转String的办法
  10. npm切换到国内华为云的镜像