《Windows Azure Platform 系列文章目录》
Azure Virtual Network (14) Service Endpoint服务终结点
Azure Virtual Network (15) Service Endpoint演示
Azure Virtual Network (16) Private Link
Azure Virtual Network (17) Private Link演示
本文我们将通过搭建环境,来说明Azure Private Link的最终效果。
配置的主要内容有:
1.创建Azure Virtual Network,分配2个subnet,分别为vm-subnet和sql-subnet
2.在vm-subnet创建Windows Server虚拟机
3.创建Azure SQL Database,将SQL Database加入到sql-subnet里
4.创建Private Link和Private DNS Zone
5.通过SQL Server Management Studio,链接到SQL Database的Private IP
1.首先我们创建1个新的Azure资源组,命名为privatelink-rg
2.在这个资源组中,创建新的Virtual Network,密码为privatelink-vnet
设置这个VNet的属性
VNet Address Space | 192.168.0.0/16 |
subnets |
创建2个subnet 第1个subnet,命名为vm-subnet, Address Range为192.168.0.0/24 第2个subnet,密码为sql-subnet,Address Range为192.168.1.0/24 |
3.在资源组:privatelink-rg中,创建新的Windows Server VM,命名为PrivateLink-SQLVM,把该VM加入到vm-subnet中。具体步骤略。该VM的内网IP为192.168.0.4
4.在资源组:privatelink-rg中,创建新的Azure SQL Server和SQL Database。
其中Networking的配置如下:
创建完毕后,该PaaS Server的DNS Server为:privatelinksqlsvr.database.chinacloudapi.cn
5.然后我们在SQL PaaS上,启用Private Link
6.在弹出的窗口中,设置Private Link的名称,Region选择为SQL PaaS所在的数据中心区域
7.选择到需要链接的SQL PaaS服务
8.在创建Private Link的时候,还会创建Private DNS Zone
9.创建完毕后,我们可以查看到Private Link的Private IP地址。如下图:
10.我们点击到SQL 的Private Link,也可以查看到创建成功的信息:
创建完毕后,Azure服务信息如下:
虚拟机 | SQL PaaS服务 | |
公网IP或者公网DNS | 网络IP:略 | 公网DNS:privatelinksqlsvr.database.chinacloudapi.cn |
所在虚拟网络 | privatelink-vnet | privatelink-vnet |
所在子网subnet | vm-subnet | sql-subnet |
内网IP | 192.168.0.4 | 192.168.1.4 |
11.因为我们在步骤4中,设置改SQL PaaS使用默认设置访问,且没有开公网IP白名单。所以SQL PaaS的公网访问都是关闭的。
所以通过我本地笔记本电脑的SSMS,是无法访问到该SQL PaaS的DNS:privatelinksqlsvr.database.chinacloudapi.cn。步骤略。
12.我们只能通过远程桌面连接,登录到subnet为vm-subnet的Azure VM,输入下面的命令:
C:\Users\azureadmin>nslookup privatelinksqlsvr.database.chinacloudapi.cn Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: privatelinksqlsvr.privatelink.database.chinacloudapi.cn Address: 192.168.1.4 Aliases: privatelinksqlsvr.database.chinacloudapi.cn
我们也可以通过Psping命令进行测试:
C:\>psping privatelinksqlsvr.database.chinacloudapi.cn:1433 PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility Copyright (C) 2012-2014 Mark Russinovich Sysinternals - www.sysinternals.com TCP connect to 192.168.1.4:1433: 5 iterations (warmup 1) connecting test: Connecting to 192.168.1.4:1433 (warmup): 1.20ms Connecting to 192.168.1.4:1433: 0.86ms Connecting to 192.168.1.4:1433: 0.97ms Connecting to 192.168.1.4:1433: 0.83ms Connecting to 192.168.1.4:1433: 1.01ms TCP connect statistics for 192.168.1.4:1433: Sent = 4, Received = 4, Lost = 0 (0% loss), Minimum = 0.83ms, Maximum = 1.01ms, Average = 0.92ms
13.最后,我们在Azure VM安装SQL Server Management Studio,链接到SQL PaaS的DNS地址:privatelinksqlsvr.database.chinacloudapi.cn
注意是SQL PaaS DNS地址,不是内网IP
注意是SQL PaaS DNS地址,不是内网IP
注意是SQL PaaS DNS地址,不是内网IP
我们可以执行下面的命令:
select client_net_address from sys.dm_exec_connections where session_id=@@SPID
可以查看到192.168.0.4,就是Azure VM 虚拟机的内网IP地址
最后总结一下Service Endpoint和Private Link的区别:
Service Endpoint | Private Link | |
PaaS服务是否加入到Virtual Network | 否 | 是 |
PaaS服务是否有内网IP地址 |
否 | 是 |
流量是否经过Virtual Network |
否 | 是 |
流量是否经过Azure Backbone主干网 |
是 | 是 |
当VM访问到PaaS服务时,基于subnet的UDR(用户自定义路由),可以把流量路由到IDC或者防火墙设备 |
不支持 | 支持 |
支持的服务数量 |
很多 | 一般 |
支持更细粒度的PaaS资源访问,如仅访问DNS为A的测试Storage Account,不能访问DNS为B的生产Storage Account |
不支持 | 支持 |
需要创建Private DNS Zone |
不需要 | 需要 |
支持通过VPN或ExpressRoute,从本地IDC网络上的资源访问Azure云端的PaaS服务 |
不支持 | 支持 |
支持VNet Peering之间资源的互相访问 |
不支持 | 支持 |
流量是否额外收费 |
否 | 是 |
1.如果你只开启了service endpoint的话,流量以最佳方式路由到 Azure 资源,service endpoint的优先级比用户自定义路由(Route Table) 0.0.0.0/0要高,是按照最短路径来访问的。
2.如果你只开启了private endpoint的话,vm的subnet指了用户自定义路由(Route Table) 0.0.0.0/0到防火墙,这种情况防火墙的带宽可能成为性能瓶颈。
Update: 2022-05-07
如果DNS Server是在本地IDC的,可以考虑使用DNS转发来解析微软云上的PaaS服务器地址。
1.我们先创建Azure VNet,Azure VM和Storage Account资源。步骤略。
2.创建Storage Account的Private Endpoint。如下图:
3.在Windows Server域控制器里,设置条件转发。如下图:
4.在Windows Server域控制器里,运行命令:
nslookup leiavdstorage001.blob.core.chinacloudapi.cn
执行结果中,可以看到使用本地DNS解析出来的Storage Account地址为内网地址,
使用公网114.114.114.114.解析出来的DNS地址为公网地址