AlwaysOn Group Listener(2)

The availability group '%.*ls' already has a listener with DNS name '%.*ls'. Availability groups can have only one listener. Use the existing listener, or drop the existing listener and create a new one.

但实际上我们可以通过下面的方式为AG创建多个Listener

1)打开Failover Cluster Manager,右键ag->Add a resource->Client Access Point

AlwaysOn Group Listener

2)填写Listener名称

AlwaysOn Group Listener

3)右键为其分配IPAddress

AlwaysOn Group Listener

4) 右键ag resource property,设置dependency. 将agListener2添加到Dependencies

AlwaysOn Group Listener

5)为Listener分配port,此时portnull

select *from sys.availability_group_listeners

执行下面的语句创建port

alter availability group [ag]

modify listener 'agListener2'

(port = 1433)

7)新的Listener就可以使用了,我们在SSMS里也可以找到相应的记录

AlwaysOn Group Listener

4.MultiSubnetFailover

SQLServer2012开始支持Multi Site SQL Cluster。 一般而言,多个数据中心分布在不同的地理位置,例如在上海和北京分别建立了数据中心,这样当一个数据中心出现故障后(例如地震等灾害),备用的数据中心可以继续提供服务。

下面是一个多子网的Listener截图

AlwaysOn Group Listener

AlwaysOn Group Listener

在多子网环境中,一个Listener下会注册多个IP Address(之间为OR关系),但只有primary replica所在子网的IP是处于Online状态的,其余的均为Offline。如果发生failover,这些IPAddress的状态会依据对应的replica的角色发生变化。

那么多子网环境会对Listener有什么影响呢?

首先要介绍一下RegisterAllProvidersIP属性。如果值为1,那么Listener对应的DNS就会出现同名的多条记录,每个记录地应一个IP Address

AlwaysOn Group Listener

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

AlwaysOn Group Listener

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/facebc6e23b933af6ce4099309defd3a.html