之前介绍了基于地理和时间感知的DNS应用负载均衡,那么今天我给大家介绍本地和Azure之前的应用负载均衡如何实现,架构如下:
Primary-DNS我配置了公网DNS转发实现总部和成都站点都可以访问Internet
在路由器服务器上我添加了可以访问Internet的网卡,并配置了NAT
为了完成此次演示,首先在Azure上创建一台WinSrv08-Web03的服务器构建Web服务,此刻发现Azure在新建虚拟机的向导中又发生了变化,和我上半年写的创建虚拟机有些UI的调整,不过这些都不难,举一反三,按照向导配置下一步即可,首先新建资源组,和设置虚拟机的名称以及放置区域等信息
接着选择磁盘类型是HDD还是SSD
配置虚拟网络和子网,选择防火墙需要映射的端口
下一步
下一步
下一步
验证通过,点击创建
等待创建完成
部署完成
连接虚拟机配置Web服务
提供WEB服务器是如下的:
接下来我说下实现的需求目标:
接下来我想要实现:
不管来自什么网段的客户端,只要是通过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"
接下来在区域范围内添加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"
执行蓝色那条命令不带区域范围参数的就是单纯的在DNS添加一条常规的A记录了
接下来就是配置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
测试验证下:
在时间位于16:30-17:30之间:
在时间位于16:30-17:30之外:
详细的可以参考:https://docs.microsoft.com/en-us/windows-server/networking/dns/deploy/dns-tod-azure-cloud-app-server