Skype for Business Server的高级边缘服务器 DNS 规划
总结:查看Skype for Business Server部署选项的方案。 无论是想要单个服务器还是首选具有 DNS 或 HLB 的服务器池,本主题都应有所帮助。
当涉及到域名系统 (DNS) 规划Skype for Business Server时,许多因素可能会影响你的决策。 如果组织的域结构已经就位,那么这可能就是考虑如何继续的问题。 我们将从下面提供的主题开始:
Walkthrough of Skype for Business clients locating services
Skype for Business客户端在如何查找和访问 Skype for Business Server 中的服务方面类似于以前版本的 Lync 客户端。 本节详述服务查找过程。
lyncdiscoverinternal。<域>
这是内部 Web 服务上自动发现服务的 A 主机记录。
lyncdiscover。<域>
这是外部 Web 服务上自动发现服务的 A 主机记录。
_sipinternaltls._tcp。<域>
这是内部 TLS 连接的 SRV 记录。
_sip._tls。<域>
这是外部 TLS 连接的 SRV 记录。
sipinternal。<域>
这是前端池或控制器的主机记录,只能在内部网络上解析。
Sip。<域>
这是前端池或控制器的主机记录,只能在内部网络上解析。
sipexternal。<域>
当客户端位于外部时,这是 Access Edge 服务的主机记录。
自动发现服务总是受人欢迎,因为这是服务定位的首选方法,其他方法为回退方法。
注意
创建 SRV 记录时,请务必记住,这些记录需要指向要在其中创建 DNS SRV 记录的同一域中的 DNS A(如果使用 IPv6 寻址,则还有 AAAA)。 例如,如果 SRV 记录位于 contoso.com,则其所指向的 A(和 AAAA)记录不能在 fabrikam.com 中。
如果你倾向于这样做,可以设置移动设备以手动发现服务。 如果这正是你想做的,那么每个用户需要为其移动设备的设置配置内部和外部自动发现服务的完整 URI,包括协议和路径,具体如下:
对于外部访问:https://< ExtPoolFQDN>/Autodiscover/autodiscoverservice.svc/Root
对于内部访问:https://< IntPoolFQDN>/AutoDiscover/AutoDiscover.svc/Root
我们建议使用自动发现,而不是手动发现。 但是,如果你正在执行一些故障排除或测试,手动设置可能会有所帮助。
拆分式 DNS
这是一种两个 DNS 区域有相同命名空间的 DNS 配置。 第一个 DNS 区域处理内部请求,而第二个 DNS 区域处理外部请求。
为什么公司会这样做? 他们可能需要内外使用相同的命名空间,但是当然,这会导致很多 DNS SRV 和 A 记录在这个区域或那个区域是唯一的,在有重复的情况下,与这些记录关联的 IP 地址将是唯一的。
这种情况带来了一些挑战。 最重要的是,移动性 不支持 拆分脑 DNS。 这是因为 LyncDiscover 和 LyncDiscoverInternal DNS 记录(LyncDiscover 必须定义在外部 DNS 服务器上,而 LyncDiscoverInternal 必须定义在内部 DNS 服务器上)。
我们将在此处列出内部和外部区域的 DNS 记录,但你可以在边缘服务器环境要求部分找到详细示例。
内部 DNS
包含名为(例如)contoso.com 的 DNS 区域,内部 DNS 是该区域的权威 DNS。
这个内部 contoso.com 包含:
如果对前端池、控制器池或控制器池名称以及组织网络中运行Skype for Business Server的所有内部服务器使用 IPv6 寻址) 记录,则 DNS A 和 AAAA (。
如果为外围网络中每个边缘服务器使用 IPv6 寻址) 记录,则 DNS A 和 AAAA Skype for Business Server (。
如果将 IPv6 寻址) 记录用于外围网络中每个反向代理服务器的内部接口,则 DNS A 和 AAAA ( (这是管理反向代理) 的可选。
如果使用 IPv6 寻址) 和 SRV 记录进行内部Skype for Business Server客户端自动配置 ((可选) ),则 DNS A 和 AAAA (。
如果使用 IPv6 寻址) 或 CNAME 记录来自动发现Skype for Business Server Web 服务 ((可选) ),则 DNS A 和 AAAA (。
外围网络中的所有Skype for Business Server内部 Edge 接口都使用此内部 DNS 区域来解析 contoso.com 查询。
运行Skype for Business Server的所有服务器和在企业网络中运行Skype for Business Server的客户端,指向内部 DNS 服务器以解析 contoso.com 的查询,或者它们在每个边缘服务器上使用主机文件并列出 A 和 AAAA ((如果你使用 IPv6 寻址) 记录的下一个跃点服务器, (专用于控制器或控制器池 VIP、前端池 VIP 或 Standard Edition 服务器) 。
外部 DNS
包含名为(例如)contoso.com 的 DNS 区域,内部 DNS 是该区域的权威 DNS。
此外部 contoso.com 包含:
如果使用 IPv6 寻址) 或 CNAME 记录来自动发现Skype for Business Server Web 服务,则 DNS A 和 AAAA (。 这是用于移动性。
如果将 IPv6 寻址) 和 SRV 记录用于每个Skype for Business Server边缘服务器的边缘外部接口或硬件负载均衡 (HLB) VIP,则 DNS A 和 AAAA (。
如果在外围网络中对反向代理服务器的外部接口使用 IPv6 寻址) 和 SRV 记录,则 DNS A 和 AAAA) (为反向代理服务器池 (VIP。
如果将 IPv6 寻址) 和 SRV 记录用于Skype for Business Server客户端自动配置 (可选) ,则 DNS A 和 AAAA (。
没有拆分式 DNS 时的自动配置
如果不使用拆分脑 DNS,则运行Skype for Business的客户端的内部自动配置将不起作用,除非你使用的是我们此处的解决方法之一。 为什么会不起作用? 因为Skype for Business Server要求用户的 SIP URI 与为自动配置指定的前端池的域匹配。 这与早期版本的 Lync Server 没有更改。
所以,如果正在使用两个 SIP 域,那么需要以下 DNS SRV 记录:
_sipinternaltls._tcp.contoso.com. 86400 IN SRV 0 0 5061 pool01.contoso.com
如果用户以 身份 bob@contoso.com登录,则此记录适用于自动配置,因为用户的 SIP 域与前端池 (contoso.com) 的域匹配。
_sipinternaltls._tcp.fabrikam.com. 86400 IN SRV 0 0 5061 pool01.fabrikam.com
如果用户以 身份 alice@fabrikam.com登录,则此记录将适用于第二个域的自动配置,这同样是因为 SIP 域与该域的前端池匹配。
再举此例,下面的记录不起作用:
_sipinternaltls._tcp.litwareinc.com. 86400 IN SRV 0 0 5061 pool01.fabrikam.com
登录为 tim@litwareinc.com 的用户不适用于自动配置,因为其 SIP 域 (litwareinc.com) 与池 (fabrikam.com) 中的域不匹配。
因此,现在我们知道这一切,如果需要自动要求没有拆分脑 DNS 的 Skype for Business 客户端,可以使用以下选项:
组策略对象
可使用组策略对象 (GPO) 填充正确的服务器值。
注意
此选项不会启用自动配置,但可以自动化手动配置。 如果使用此方法,则不需要与自动配置关联的 SRV 记录。
匹配内部区域
你需要在内部 DNS 中创建一个与外部 DNS 区域 (匹配的区域(例如,contoso.com) ),然后使用 IPv6 寻址) 记录(对应于用于自动配置的Skype for Business Server池)创建 DNS A (和 AAAA。
例如,如果某个用户驻留在 pool01.contoso.net 上,但以 Skype for Business 身份bob@contoso.com登录,请创建一个名为 contoso.com 的内部 DNS 区域,并在其中创建 DNS A (和 AAAA(如果使用 IPv6 寻址) 记录 pool01.contoso.com)。
精确内部区域
如果在内部 DNS 中创建整个区域不适合你,你可以创建与自动配置所需要的 SRV 记录对应的精确(专用)区域,并使用 dnscmd.exe 填充这些区域。 由于 DNS 用户界面不支持创建精确内部区域,因此需要 Dnscmd.exe。
例如,如果 SIP 域 contoso.com,并且有一个名为 pool01 的前端池,其中包含两个前端服务器,则内部 DNS 中需要以下引脚点区域和 A 记录:
dnscmd . /zoneadd _sipinternaltls._tcp.contoso.com. /dsprimary dnscmd . /recordadd _sipinternaltls._tcp.contoso.com. @ SRV 0 0 5061 pool01.contoso.com. dnscmd . /zoneadd pool01.contoso.com. /dsprimary dnscmd . /recordadd pool01.contoso.com. @ A 192.168.10.90 dnscmd . /recordadd pool01.contoso.com. @ AAAA <IPv6 address> dnscmd . /recordadd pool01.contoso.com. @ A 192.168.10.91 dnscmd . /recordadd pool01.contoso.com. @ AAAA <IPv6 address>
环境中可能还有第二个 SIP 域。 这种情况下,内部 DNS 中需要以下精确区域和 A 记录:
dnscmd . /zoneadd _sipinternaltls._tcp.fabrikam.com. /dsprimary dnscmd . /recordadd _sipinternaltls._tcp.fabrikam.com. @ SRV 0 0 5061 pool01.fabrikam.com. dnscmd . /zoneadd pool01.fabrikam.com. /dsprimary dnscmd . /recordadd pool01.fabrikam.com. @ A 192.168.10.90 dnscmd . /recordadd pool01.contoso.com. @ AAAA <IPv6 address> dnscmd . /recordadd pool01.fabrikam.com. @ A 192.168.10.91 dnscmd . /recordadd pool01.contoso.com. @ AAAA <IPv6 address>
注意
你将看到前端池 FQDN 出现两次,但具有两个不同的 IP 地址。 这是因为使用了 DNS 负载均衡。 如果使用 HLB,则只有一个前端池条目。
注意
此外,前端池 FQDN 值在 contoso.com 和 fabrikam.com 示例之间会更改,但 IP 地址保持不变。 这是因为从任一 SIP 域登录的用户将使用相同的前端池进行自动配置。
DNS 灾难恢复
若要配置 DNS 以将Skype for Business Server Web 流量重定向到灾难恢复 (DR) 和故障转移站点,需要使用支持 GeoDNS 的 DNS 提供程序。 可以设置 DNS 记录以支持灾难恢复,以便即使整个前端池出现故障,使用 Web 服务的功能也能继续。 此 DR 功能支持自动发现、开会和拨入式简单 URL。
你可以在 GeoDNS 提供商处定义和配置用于 Web 服务的内部和外部解析额外的 DNS 主机 A(如果使用 IPv6,则为 AAAA)记录。 以下详细信息假定池已配对,地理位置分散,且提供商支持的 GeoDNS 要么使用循环 DNS,要么配置为使用 Pool1 作为主池,并且在发生通信丢失或电源故障时故障转移到 Pool2。
下表中的所有 DNS 记录均为示例。
GeoDNS 记录 | 池记录 | CNAME 记录 | DNS 设置(选择一个选项) |
---|---|---|---|
Meet-int.geolb.contoso.com |
Pool1InternalWebFQDN.contoso.com Pool2InternalWebFQDN.contoso.com |
Pool1InternalWebFQDN.contoso.com 的 Meet.contoso.com 别名 Pool2InternalWebFQDN.contoso.com 的 Meet.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
Meet-ext.geolb.contoso.com |
Pool1ExternalWebFQDN.contoso.com Pool2ExternalWebFQDN.contoso.com |
Pool1ExternalWebFQDN.contoso.com 的 Meet.contoso.com 别名 Pool2ExternalWebFQDN.contoso.com 的 Meet.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
Dialin-int.geolb.contoso.com |
Pool1InternalWebFQDN.contoso.com Pool2InternalWebFQDN.contoso.com |
Pool1InternalWebFQDN.contoso.com 的 Dialin.contoso.com 别名 Pool2InternalWebFQDN.contoso.com 的 Dialin.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
Dialin-ext.geolb.contoso.com |
Pool1ExternalWebFQDN.contoso.com Pool2ExternalWebFQDN.contoso.com |
Pool1ExternalWebFQDN.contoso.com 的 Dialin.contoso.com 别名 Pool2ExternalWebFQDN.contoso.com 的 Dialin.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
Lyncdiscoverint-int.geolb.contoso.com |
Pool1InternalWebFQDN.contoso.com Pool2InternalWebFQDN.contoso.com |
Pool1InternalWebFQDN.contoso.com 的 Lyncdiscoverinternal.contoso.com 别名 Pool2InternalWebFQDN.contoso.com 的 Lyncdiscoverinternal.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
Lyncdiscover-ext.geolb.contoso.com |
Pool1ExternalWebFQDN.contoso.com Pool2ExternalWebFQDN.contoso.com |
Pool1ExternalWebFQDN.contoso.com 的 Lyncdiscover.contoso.com 别名 Pool2ExternalWebFQDN.contoso.com 的 Lyncdiscover.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
Scheduler-int.geolb.contoso.com |
Pool1InternalWebFQDN.contoso.com Pool2InternalWebFQDN.contoso.com |
Pool1InternalWebFQDN.contoso.com 的 Scheduler.contoso.com 别名 Pool2InternalWebFQDN.contoso.com 的 Scheduler.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
Scheduler-ext.geolb.contoso.com |
Pool1ExternalWebFQDN.contoso.com Pool2ExternalWebFQDN.contoso.com |
Pool1ExternalWebFQDN.contoso.com 的 Scheduler.contoso.com 别名 Pool2ExternalWebFQDN.contoso.com 的 Scheduler.contoso.com 别名 |
在池之间启用循环 或者 使用主池,发生故障时连接到副池 |
DNS 负载平衡
通常在应用程序级别实现 DNS 负载平衡。 例如,如果对池 FQDN 使用 IPv6 寻址) 记录查询,则应用程序 (运行 Skype for Business) 的客户端尝试连接到池中的服务器,方法是连接到从 DNS A 和 AAAA (返回的 IP 地址之一。
例如,如果名为 pool01.contoso.com 的池中有三台前端服务器,则会发生以下情况:
运行Skype for Business运行 DNS 的客户端查询 pool01.contoso.com。 此查询将返回三个 IP 地址并如下方式缓存它们(按某种顺序):
pool01.contoso.com 192.168.10.90 pool01.contoso.com 192.168.10.91 pool01.contoso.com 192.168.10.92 客户端将尝试建立与其中一个 IP 地址的 TCP 连接。 如果失败,则客户端会尝试该列表中它所缓存的下一个 IP 地址。
如果 TCP 连接成功,则客户端与 TLS 协商连接到 pool01.contoso.com 上的主注册器。
如果客户端在没有成功连接的情况下尝试所有缓存条目,则用户会收到一条通知,指出目前没有运行Skype for Business Server的服务器可用。
注意
基于 DNS 的负载平衡不同于 DNS 循环 (DNS RR),后者通常是指依靠 DNS 来提供与池中服务器对应的不同顺序的 IP 地址来进行负载平衡。 通常 DNS RR 启用负载分配,但不允许启用故障转移。 例如,如果无法连接到由 DNS A 和 AAAA(如果使用 IPv6 寻址)查询返回的某个 IP 地址,则连接失败。 这使得,DNS RR 的可靠性不如基于 DNS 的负载平衡。 如果需要,可以将 DNS RR 与基于 DNS 的负载平衡结合使用。
DNS 负载平衡可用来:
将服务器到服务器 SIP 负载均衡到边缘服务器。
对统一通信应用程序服务 (UCAS) 应用程序(如会议自动助理、响应组和呼叫寄存)进行负载平衡。
阻止到 UCAS 应用程序的新连接(也称为排出)。
对客户端和边缘服务器之间的所有客户端到服务器流量进行负载均衡。
DNS 负载平衡不可用于:
- 到前端服务器或控制器的客户端到服务器 Web 流量。
若要更深入地了解查询返回多个 DNS 记录时如何选择 DNS SRV 记录,Access Edge 服务始终选取具有最低数值优先级的记录,如果需要带断线,则选取最高数值权重的记录。 这与 Internet 工程任务组文档一致。
因此,例如,如果第一条 DNS SRV 记录的权重为 20,优先级为 40,第二条 DNS SRV 记录的权重为 10,优先级为 50,则会选择第一条记录,因为它的优先级较低,因此其优先级为 40。 优先级始终排在第一位,这是客户端首先面向的主机。 如果有两个目标具有相同优先级,该怎么办?
这种情况下,要考虑权重。 优先级相同时,权重越大,被选中的可能性越大。 当不作任何服务器选择时,DNS 管理员应使用权重 0。 存在权重大于 0 的记录时,权重为 0 的记录被选中的机会极小。
那么,如果返回了优先级和权重都相同的多个 DNS SRV 记录,那又该怎么办呢? 在这种情况下,Access Edge 服务将首先选择它从 DNS 服务器获取的 SRV 记录。