之前介绍了基于地理和时间感知的DNS应用负载均衡,那么今天我给大家介绍本地和Azure之前的应用负载均衡如何实现,架构如下:

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_感知

Primary-DNS我配置了公网DNS转发实现总部和成都站点都可以访问Internet

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_Windows Server_02

在路由器服务器上我添加了可以访问Internet的网卡,并配置了NAT

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_Windows Server_03

为了完成此次演示,首先在Azure上创建一台WinSrv08-Web03的服务器构建Web服务,此刻发现Azure在新建虚拟机的向导中又发生了变化,和我上半年写的创建虚拟机有些UI的调整,不过这些都不难,举一反三,按照向导配置下一步即可,首先新建资源组,和设置虚拟机的名称以及放置区域等信息

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_DNS_04

接着选择磁盘类型是HDD还是SSD

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_DNS_05

配置虚拟网络和子网,选择防火墙需要映射的端口

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_DNS_06

下一步

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_DNS_07

下一步

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_感知_08

下一步

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_Windows Server_09

验证通过,点击创建

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_Windows Server_10

等待创建完成

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_服务器_11

部署完成

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_服务器_12

连接虚拟机配置Web服务

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_Windows Server_13

提供WEB服务器是如下的:

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_Windows Server_14

接下来我说下实现的需求目标:

接下来我想要实现:
不管来自什么网段的客户端,只要是通过Primary-DNS进行DNS解析的,每天的16:30-17:00之间访问web.basehome.com.cn由Azure上的Web03服务器承担100%的流量,成都的Web01不承担流量;每天的其他时间(非16:30-17:00)由成都的web01服务器承担100%流量,Azure上的web03不承担流量;

实现的步骤大致为:创建区域范围,在区域范围内添加记录,最后做DNS策略

创建区域范围:

在这里只需要添加一个Azure的区域范围:

Add-DnsServerZoneScope -ZoneName "basehome.com.cn" -Name "AzureZoneScope"

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_感知_15

接下来在区域范围内添加A记录

Add-DnsServerResourceRecord -ZoneName "basehome.com.cn" -A -Name "web" -IPv4Address "52.163.55.124" -ZoneScope "AzureZoneScope" -TimeToLive 600

Add-DnsServerResourceRecord -ZoneName "basehome.com.cn" -A -Name "web" -IPv4Address "172.16.1.10"

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_感知_16

执行蓝色那条命令不带区域范围参数的就是单纯的在DNS添加一条常规的A记录了

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_感知_17

接下来就是配置DNS策略了

示例:

Add-DnsServerQueryResolutionPolicy -Name "Contoso6To9Policy" -Action ALLOW -ZoneScope "contosogiftservices.com,7;AzureZoneScope,3" -TimeOfDay "EQ,18:00-21:00" -ZoneName "contosogiftservices.com" -ProcessingOrder 1

如果在我的环境中要实现16:30-17:30之间,成都的web01服务器承担70%的流量,Azure的web03服务器承担30%的流量,那么我可以执行:

Add-DnsServerQueryResolutionPolicy -Name "Azure1630To1700Policy" -Action ALLOW -ZoneScope "basehome.com.cn,7;AzureZoneScope,3" -TimeOfDay "EQ,16:30-17:00" -ZoneName "basehome.com.cn" -ProcessingOrder 1

为了更极端,我还是按照上面设定的需求目标来,我的环境就执行:

Add-DnsServerQueryResolutionPolicy -Name "Azure1630To1700Policy" -Action ALLOW -ZoneScope "AzureZoneScope,1" -TimeOfDay "EQ,16:30-17:00" -ZoneName "basehome.com.cn" -ProcessingOrder 1

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_感知_18

测试验证下:

在时间位于16:30-17:30之间:

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_服务器_19

在时间位于16:30-17:30之外:

WinSrv2019使用DNS构建基于时间感知的Azure应用服务流量分流_服务器_20

详细的可以参考:https://docs.microsoft.com/en-us/windows-server/networking/dns/deploy/dns-tod-azure-cloud-app-server