DNS load balancing for Enterprise serevrs

Hi All

In my test Lync 2010 Enterprise environments, recently i have implemented the DNS load balancing with webservices

My environment is two lync 2010 ent servers , 1 SQL server, 1 Monitoring + Archive server (Same Box)

The below steps was performed from me for DNS load balancing.

PLEASE NOTE: NO HARDWARE LOAD BALANCING IN MY SETUP

Create a Host record for the Pool name with respective front end servers

Pool name : Pool2.doitnow.com with 2 lync 2010 enterprise servers named lyncfe01n.doitnow.com (192.168.1.5) and lyncfe02.doitnow.com (192.168.1.6)

Two host A records  in DNS as POOl2 with IP of 192.168.15 and 192.168.1.6

1. From the Lync Server 2010 program group, open Topology Builder.

2. From the console tree, expand the Enterprise Edition Front End pools node.

3. Right-click the pool, click Edit Properties, and then click Web Services.

4. Below Internal web services, select the Override FQDN check box.

5. Type the pool FQDN that resolves to the physical IP addresses of the servers in the pool. in (my case it is Pool2.doitnow.com )

6. Below External web services, type the external pool FQDN that resolves to the virtual IP addresses of the pool, and then click OK. ((my case it is Pool2.doitnow.com ) - is that REQUIRED ?

7. From the console tree, select Lync Server 2010 , and then in the Actions pane, click Publish Topology.

IS THERE ANY THING TO BE DONE APART fROM ABOVE POINTS

Now

what i did is. in lyncfe01n.doitnow.com - i have disabled the network card and try to login lync 2010 client , but not succeesfull

my assumption is,  it should work via lyncfe02.doitnow.com, since load balanace in DNS is in  already in place

do i need to open  / firewall  rule to be creany port in second lync server

here is the below seqeunce of event viwer from lync

Log Name:      Lync Server
Source:        LS User Services
Date:          1/14/2014 3:34:31 PM
Event ID:      32108
Task Category: (1006)
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Pool Manager changed state of Registrar with FQDN: lyncfe02.doitnow.com to Inactive.

======

Log Name:      Lync Server
Source:        LS User Services
Date:          1/14/2014 3:35:01 PM
Event ID:      32109
Task Category: (1006)
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Pool Manager changed state of Registrar with FQDN: lyncfe02.doitnow.com to Active

====

Log Name:      Lync Server
Source:        LS Routing Data Sync Agent
Date:          1/14/2014 3:50:58 PM
Event ID:      48003
Task Category: (1058)
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
The Routing Data Sync Agent has initiated a sync cycle with: [pool2.doitnow.com]

=====

Log Name:      Lync Server
Source:        LS User Services
Date:          1/14/2014 3:56:21 PM
Event ID:      32108
Task Category: (1006)
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Pool Manager changed state of Registrar with FQDN: lyncfe02.doitnow.com to Inactive.
===============

Log Name:      Lync Server
Source:        LS File Transfer Agent Service
Date:          1/14/2014 3:56:45 PM
Event ID:      1008
Task Category: (1121)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Failed to read Central Management database information from AD connection point. Microsoft Lync Server 2010, File Transfer Agent will continuously attempt to retrieve this information.

While this condition persists, configuration changes will not be delivered to replica machines.
Exception:
Microsoft.Rtc.Management.ADConnect.ADTransientException: Active Directory error "-2147016646" occurred while searching for domain controllers in domain "doitnow.com": "The server is not operational.

Name: "doitnow.com"
" ---> System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException: The server is not operational.

Name: "doitnow.com"
 ---> System.Runtime.InteropServices.COMException (0x8007203A): The server is not operational.

   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_AdsObject()
   at System.DirectoryServices.PropertyValueCollection.PopulateList()
   at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)
   at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
   at System.DirectoryServices.ActiveDirectory.PropertyManager.GetPropertyValue(DirectoryContext context, DirectoryEntry directoryEntry, String propertyName)
   --- End of inner exception stack trace ---
   at System.DirectoryServices.ActiveDirectory.PropertyManager.GetPropertyValue(DirectoryContext context, DirectoryEntry directoryEntry, String propertyName)
   at System.DirectoryServices.ActiveDirectory.Domain.GetDomain(DirectoryContext context)
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.GetDCForDomain(String fqdn, NetworkCredential networkCredential)
   --- End of inner exception stack trace ---
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.GetDCForDomain(String fqdn, NetworkCredential networkCredential)
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.DiscoverDC()
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.ReportDownServer(String serverName, ADServerRole role)
   at Microsoft.Rtc.Management.ADConnect.Connection.ADConnection.MarkDown(LdapError ldapError, String message)
   at Microsoft.Rtc.Management.ADConnect.Connection.ADConnection.AnalyzeDirectoryError(DirectoryException de)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.AnalyzeDirectoryError(ADConnection connection, DirectoryRequest request, DirectoryException de, Int32 totalRetries, Int32 retriesOnServer)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.Find(ADObjectId rootId, String optionalBaseDN, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCreator, CreateObjectsDelegate arrayCreator, Boolean includeDeletedObjects)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.Find(ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate arrayCtor)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.GetTopologySetting()
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.GetBackEndServer()
   at Microsoft.Rtc.Xds.Replication.Common.Utils.TryGetConnectionPointFromAD(String& sqlStorePath, Exception& exception)
Cause: Possible issues with configuration or AD access.
Resolution:
Ensure that activation is completed and AD is accessible from this machine.

   at Microsoft.Rtc.Xds.Replication.Common.Utils.TryGetConnectionPointFromAD(String&amp; sqlStorePath, Exception&amp; exception)</Data>
 ====================
Log Name:      Lync Server
Source:        LS Master Replicator Agent Service
Date:          1/14/2014 3:56:45 PM
Event ID:      2014
Task Category: (2122)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Failed to read Central Management database information from AD connection point. Microsoft Lync Server 2010, Master Replicator Agent will continuously attempt to retrieve this information.

While this condition persists, configuration changes will not be delivered to replica machines.
Exception:
System.ApplicationException: Domain "doitnow.com" cannot be contacted or does not exist. ---> System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException: The specified domain does not exist or cannot be contacted.
   at System.DirectoryServices.ActiveDirectory.Domain.GetDomain(DirectoryContext context)
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.GetDCForDomain(String fqdn, NetworkCredential networkCredential)
   --- End of inner exception stack trace ---
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.GetDCForDomain(String fqdn, NetworkCredential networkCredential)
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.DiscoverDC()
   at Microsoft.Rtc.Management.ADConnect.Connection.DirectoryServicesTopologyProvider.ReportDownServer(String serverName, ADServerRole role)
   at Microsoft.Rtc.Management.ADConnect.Connection.ADConnection.MarkDown(LdapError ldapError, String message)
   at Microsoft.Rtc.Management.ADConnect.Connection.ADConnection.AnalyzeDirectoryError(DirectoryException de)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.AnalyzeDirectoryError(ADConnection connection, DirectoryRequest request, DirectoryException de, Int32 totalRetries, Int32 retriesOnServer)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.Find(ADObjectId rootId, String optionalBaseDN, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCreator, CreateObjectsDelegate arrayCreator, Boolean includeDeletedObjects)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.Find(ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties, CreateObjectDelegate objectCtor, CreateObjectsDelegate arrayCtor)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.Find[TResult](ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, Int32 maxResults, IEnumerable`1 properties)
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.GetTopologySetting()
   at Microsoft.Rtc.Management.ADConnect.Session.ADSession.GetBackEndServer()
   at Microsoft.Rtc.Xds.Replication.Common.Utils.TryGetConnectionPointFromAD(String& sqlStorePath, Exception& exception)
Cause: Possible issues with configuration or AD access.
Resolution:
Ensure that activation is completed and AD is accessible from this machine.
===============

Log Name:      Lync Server
Source:        LS Inbound Routing
Date:          1/14/2014 3:56:46 PM
Event ID:      45005
Task Category: (1037)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Unexpected exception occurred in the Inbound Routing Application.
======================================

Log Name:      Lync Server
Source:        LS User Services
Date:          1/14/2014 3:56:53 PM
Event ID:      30975
Task Category: (1006)
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Encountered a connection failure while executing a request against the back-end.

Back-end: sql.doitnow.com\rtc

Log Name:      Lync Server
Source:        LS User Services
Date:          1/14/2014 3:56:53 PM
Event ID:      32134
Task Category: (1006)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Failed to connect to back-end database.  Lync Server will continuously attempt to reconnect to the back-end.  While this condition persists, incoming messages will receive error responses.

Back-end Server: sql.doitnow.com\rtc   Database: rtc  Connection string of:
driver={SQL Server Native Client 10.0};Trusted_Connection=yes;AutoTranslate=no;server=sql.doitnow.com\rtc;database=rtc;
Cause: Possible issues with back-end database.
Resolution:
Ensure the back-end is functioning correctly.
=================

Log Name:      Lync Server
Source:        LS User Services
Date:          1/14/2014 3:56:53 PM
Event ID:      32112
Task Category: (1006)
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Pas with FQDN: Pool2.doitnow.com has been detected to be down.
=================

Log Name:      Lync Server
Source:        LS User Services
Date:          1/14/2014 3:56:54 PM
Event ID:      32098
Task Category: (1006)
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Failed processing conference status requests. This error might delay the freeing up of PSTN meeting ids in conference directories homed on this pool.

Error code: 0x800407D0
Cause: Possible issues with back-end or Lync Server health.
Resolution:
Ensure the Lync Server service is healthy.
===========

Log Name:      Lync Server
Source:        LS User Replicator
Date:          1/14/2014 3:58:33 PM
Event ID:      30022
Task Category: (1009)
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
The connection to domain controller DC01.doitnow.com appears to have been terminated.  The domain controller could have gone down. User Replicator will attempt to reconnect to an available domain controller for this domain.
=====

Log Name:      Lync Server
Source:        LS File Transfer Agent Service
Date:          1/14/2014 3:58:43 PM
Event ID:      1035
Task Category: (1121)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      lyncfe01n.doitnow.com
Description:
Failed to register with back-end database. Microsoft Lync Server 2010, File Transfer Agent will continuously attempt to reconnect to the back-end.  While this condition persists, no replication will be done.

The Connection string: Data Source         = sql.doitnow.com\rtc;
                Database            = xds;
                Max Pool Size       = 5;
                Connection Timeout  = 60;
                Connection Reset    = false;
                Enlist              = false;
                Integrated Security = true;
                Pooling             = true;
Exception: [-1] Could not connect to SQL server : [Exception=System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.Rtc.Common.Data.DBCore.PerformSprocContextExecution(SprocContext sprocContext)]
Cause: Possible issues with back-end database.
Resolution:
Ensure the back-end is functioning correctly.
=================


  • Edited by rush2ramki 19 hours 21 minutes ago Edited
January 14th, 2014 11:17am

Have you got SRV records setup for the front end pool? Are the clients using "Automatic Configuration"? If the answer is yes to both of these questions then I believe it should work providing this has been configured as per documentation.

Web services cannot be load balance using DNS, although this will not stop client login. You will need a hardware load balancer or have to manually re-point DNS in the event of a failure.

Your webs services FQDN should not be the pool FQDN but something like:

Internal - web-int.domain.com -> DNS should resolve to DNS load balancer or FE server
External - web-ext.domain.com -> DNS should resolve to External IP of reverse proxy

Free Windows Admin Tool Kit Click here and download it now
January 14th, 2014 7:30pm

Thanks Andrew.

may be i missed to create SRV records for the second FE server - Let me check this point and come back -- is it mandatory to create the SRV records for second FE server?

 Are the clients using "Automatic Configuration"? Yes. 

so web service need a hardware load balancer right?



  • Edited by rush2ramki 10 hours 30 minutes ago Edited
January 14th, 2014 8:26pm

If you already have an SRV which has a service location resolving to the FE pool then this should be OK. You dont need an SRV for each FE.

Can the client PC telnet to the 2nd FE server on port 5061?

Also check using nslookup to make sure the pool fqdn resolves both of the FE server DNS records. 

Web services will need a load balancer yes.

Free Windows Admin Tool Kit Click here and download it now
January 14th, 2014 10:41pm

Hi Andrew

Let me check this out and you know the outcome shortly

January 14th, 2014 10:53pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics