【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.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】
【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题的更多相关文章
- Azure AD Domain Service(二)为域服务中的机器配置 Azure File Share 磁盘共享
一,引言 Azure File Share 是支持两种认证方式的! 1)Active Directory 2)Storage account key 记得上次分析的 "Azure File ...
- 不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序
一般我们写好了应用程序想要部署发布它,要么发布到物理机,要么发布到虚拟机,要么发布到容器来运行它.现在有了Azure应用服务,我们可以完全不用管这些东西,只管写好自己的代码,然后使用VisualStu ...
- [文章存档]Azure上部署的java app在向第三方服务传送中文时出现乱码
https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-java ...
- Azure应用服务+Github实现持续部署
上次我们介绍了如何使用Azure应用服务(不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序).我们通过Visual studio新建一个项目后手动编译发布代码.然后通过F ...
- 【Azure 应用服务】App Service For Container 配置Nginx,设置/home/site/wwwroot/目录为启动目录,并配置反向代理
问题描述 通过Docker Desktop for Linux,配置Nginx镜像后,自定义nginx.conf文件,修改启动目录和对 /out 路径的反向代理到博客园的博文地址 (https://w ...
- 【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
问题描述 总所周知,Azure App Service服务会默认提供一个 ***.chinacloudsites.cn为后缀的域名,但是该域名由上海蓝云网络科技有限公司备案,仅用于向其客户提供 Azu ...
- 上海仪电Azure Stack技术深入浅出系列2:Azure Stack与Azure的有QoS保证的网络联通实现方法和对比测试
本篇文章作为<Azure Stack技术深入浅出系列>的第二篇,将描述我们目前在构建基于Azure Stack混合云业务解决方案方面所面临的网络连通困难,以及相关技术人员为解决这一问题所做 ...
- 【Azure 应用服务】本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验
问题描述 在上一篇博文(https://www.cnblogs.com/lulight/p/16525902.html)中,我们成功的以VM作为Kafka服务器运行,并且验证了从其他机器中远程访问.在 ...
- 【Azure 应用服务】App Service/Azure Function的出站连接过多而引起了SNAT端口耗尽,导致一些新的请求出现超时错误(Timeout)
问题描述 当需要在应用中有大量的出站连接时候,就会涉及到SNAT(源地址网络转换)耗尽的问题.而通过Azure App Service/Function的默认监控指标图表中,却没有可以直接查看到SNA ...
随机推荐
- 管家婆财贸ERP系列功能对比财贸c3-c8-c9功能对比介绍
管家婆财贸ERP系列功能对比财贸c3-c8-c9功能对比介绍 管家婆财贸ERP产品功能 序号 名称 说明 一 采购管理 对日常订货.入库.退货.估价入库等业务进行处理,多种方便灵活的订单定制方式,实现 ...
- Git 上传文件项目到github,gitee详细教程!(本文用的gitee)
1:安装Git 下载地址:https://git-scm.com/ 2:生成ssh密钥不会的可以去另一篇文章 https://www.cnblogs.com/psfjc/p/15980893.html ...
- 一些GIT操作的技巧
一.git stash 我们有时会遇到这样的情况,正在分支a上开发一半,然后分支b上发现Bug,需要马上处理.这时候分支a上的修改怎么办呢,git add 是不行的,有的git客户端版本会提示还有ad ...
- 渗透测试之sql注入验证安全与攻击性能
由于渗透测试牵涉到安全性以及攻击性,为了便于交流分享,本人这里不进行具体网址的透露了. 我们可以在网上查找一些公司官方网站如(http://www.XXXXXX.com/xxxx?id=1) 1.拿到 ...
- 我是一个Dubbo数据包...
hello,大家好呀,我是小楼! 今天给大家带来一篇关于Dubbo IO交互的文章,本文是一位同事写的文章,用有趣的文字把枯燥的知识点写出来,通俗易懂,非常有意思,所以迫不及待找作者授权然后分享给大家 ...
- C#.NET读取文本文件的几种办法
一次读取一个字符 //文件路径 string filePath = @"C:\Users\Administrator\Downloads\test\test.txt"; //文本读 ...
- Git出现“filename too long”错误处理
更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月8日. 怎么肥事? Windows系统下,在Git使用过程中,出现"filename too long"错误提 ...
- 【Redis】字典
Redis 字典 基本语法 字典是Redis中的一种数据结构,底层使用哈希表实现,一个哈希表中可以存储多个键值对,它的语法如下,其中KEY为键,field和value为值(也是一个键值对): HSET ...
- Bika LIMS 开源LIMS集——ERD实体关系定义(数据库设计)
系统数据分类 数据分为四类: template 模板,基础静态数据 static 静态数据,核心静态数据,检测方法等 dynamic 动态数据,样品检测流程数据 organisation 组织机构数据 ...
- 自嗨ReentrantReadWriteLock
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...