设为首页 加入收藏

TOP

AlwaysOn Group Listener(二)
2017-01-24 08:15:20 】 浏览:326
Tags:AlwaysOn Group Listener
ProvidersIP属性。如果值为1,那么Listener对应的DNS就会出现同名的多条记录,每个记录地应一个IP Address


?



如果RegisterAllProvidersIP的值为0,那么只会存在一条DNS记录,也就是Primary replica所在子网的IP。



?


如果存在多条重名的DNS(RegisterAllProvidersIP=1)记录,客户端会依次请求这些IP Address,如果得到的IP是offline的,那么会继续请求一下条记录.这样就增加了连接时间,您的应用也可能会出现连接问题。


为了解决这个问题,ADO.NET(.NET 3.5.1)引入了MultiSubnetFailover关键字,如果MultiSubnetFailover


为True,那么客户端会同时尝试连接所有子网的IPAddress使用最先响应的那个IP地址来作为最终使用的地址,这样就极大地缩短了连接时间.


如果RegisterAllProvidersIP=0,那只有PrimaryReplica子网下的IP会注册到DNS,当failover发生时,新的primaryreplica子网下的listenerIP会代替之前的IP。这样就避免的之前的情况。


但在实际环境中,我们还需要考虑DNS的TTL值(Time-To-Live),TTL默认值是1200秒。也就是说当failover发生后,失效的DNS记录要在客户端可能要保持20分钟才会失效,在此期间,客户端无法通过listener进行连接。


当然我们可以手工执行ipconfig /flushdns才更新记录,但这样毕竟需要人工介入。


或者缩短TTL,但TTL值越小,DNSServer的性能消耗就严重。需要权衡两者。微软的建议值是300秒(5分钟).


1 OR 0


那么是什么时候应当将RegisterAllProvidersIP这是为1,而什么时候为0呢? 如果您的客户端支持MultiSubnetFailover关键字,那么建议设置成1,并且在连接字符串将MultiSubnetFailover设置为true.


如果客户端不支持MultiSubnetFailover关键字,那么就设置成0,并修改TTL300


更多信息


===


如果Listener使用过T-SQL语句或者SSMS创建的,RegisterAllProvidersIP为1


如果是通过ClusterFailovermanager创建的, RegisterAllProvidersIP为0


可以通过powershell修改RegisterAllProvidersIP的值


Get-ClusterResource "SQL Network Name (SQLMULTISUBCLUS)" | Set-ClusterParameter RegisterAllProvidersIP 1/0


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 11g 清理SYSAUX的表空间 下一篇SQL Server跨子网配置AlwaysOn需..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目