Setting-up SharePoint 2010 stretched farm
Some enterprises have data centers that are located close to one another with high-bandwidth connections so that they can configure SHarePoint 2010 as a single farm to achieve high-availability as well as low RTO/RPO,we call it as a "stretched" farm. For a stretched farm to work, there must be less than 1 millisecond latency between SQL Server and the front-end Web servers in one direction, and at least 1 gigabit per second bandwidth.
In this scenario, you can provide fault tolerance by following the standard guidance for making databases and service applications redundant.
The following post guides you on how to setup stretched farm. I will post additional topics related to stretch farm such as search failover.
The following post is based on the following configuration:
Primary Site |
|||
WFE Server |
APP Server |
SQL |
Services Running |
SP2010 |
|
|
|
|
SP2010APP1 |
|
|
|
|
DCSQL |
|
Secondary - Stretched Site |
|||
WFE Server |
APP Server |
SQL |
Services Running |
DRSQLSP2010 |
|
|
|
|
DRSP2010APP1 |
|
|
|
|
DRSQLSP2010 |
|
- Web Applications that we currently have
- In order to have stretched farm, the databases need to be mirrored. So, we're going to setup synchronous mirroring. In order to setup stretched farm, we need to get the list of databases used by SharePoint 2010 Get-SPDatabase cmdlet from SharePoint Powershell
Get-SPDatabase | select Name |Format-List > C:\Script\dblist.txt
Here's the result
Name : UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0
Name : SharePoint_Config_2010
Name : Search_Service_Application_SharePointServer_CrawlStoreDB_8e9425630542404
cb93dd470bdb85d82
Name : Search_Service_Application_SharePointServer_PropertyStoreDB_c12560cf7322
4e3bb563e3424ce51bce
Name : SharePoint_Admin_Content_2010
Name : WSS_Content_2010
Name : WSS_Content_My_2010
Name : WSS_Content_mysites_2010
Name : WSS_Content_sp2010
Name : WSS_Content_STPLab2010
Name : WSS_Content_Temp
Name : Search_Service_Application_SharePointServer_DB_b4c715175e0c4827b7b324c02afd7f96
Name : UM_MMS
Name : SharedServices_2010
Name : WSS_UsageApplication
Name : UserProfileUM_SyncDB_a5502148-ca0a-4dbc-acfe-8d1f1717c843
- Set-up the databases to full-recovery mode for those databases except the logging database/WSS_UsageApplication
USE [master]
GO
ALTER DATABASE [UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [SharePoint_Config_2010] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [Search_Service_Application_SharePointServer_CrawlStoreDB_8e9425630542404cb93dd470bdb85d82] SET RECOVERY FULL WITH NO_WAIT
GO
....
- Back-up the database and the transaction log
USE [master]
GO
BACKUP DATABASE [UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0]
TO DISK = 'C:\DBBackup\UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0.bak'
GO
BACKUP LOG [UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0]
TO DISK = 'C:\DBBackup\UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0.trn'
GO
BACKUP DATABASE [SharePoint_Config_2010]
TO DISK = 'C:\DBBackup\SharePoint_Config_2010.bak'
GO
BACKUP LOG [SharePoint_Config_2010]
TO DISK = 'C:\DBBackup\SharePoint_Config_2010.trn'
GO
.......
- Copying the backup files to the mirror SQL Server location
- Restore the database and the transaction log on the secondary site/stretched site SQL Server
USE [master]
GO
RESTORE DATABASE [UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0]
FROM DISK = 'C:\DBBackup\UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0.bak'
WITH FILE=1, NORECOVERY
GO
RESTORE LOG [UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0]
FROM DISK = 'C:\DBBackup\UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0.trn'
WITH FILE=1, NORECOVERY
GO
.......
- Setup SQL Server mirroring with the mirrored partner
Follow the instructions provided on the following link:
How to: Configure a Database Mirroring Session (SQL Server Management Studio)
https://msdn.microsoft.com/en-us/library/ms188712.aspx
Manually setup the SQL Mirroring
- We need to add failoverserviceinstace for each sharepoint database involved within the stretched farm. We can do the setting from PowerShell to add the drsqlsp2010.contoso.com into the failoverserver property. By running the following script:
$db = get-spdatabase | where {$_.Name -eq "UserProfileUM_SocialDB_f189d285c9554848a72f73ca9c8e9dc0"}
$db.AddFailoverServiceInstance("DRSQLSP2010")
$db.Update()
$db = get-spdatabase | where {$_.Name -eq "SharePoint_Config_2010"}
$db.AddFailoverServiceInstance("DRSQLSP2010")
$db.Update()
......
Verify the result.
PS C:\> Get-SPDatabase |select Name,failoverserver
Name FailoverServer
---- --------------
UserProfileUM_SocialDB_f189d285c9554... SPServer Name=DRSQLSP2010
SharePoint_Config_2010 SPServer Name=DRSQLSP2010
Search_Service_Application_SharePoin... SPServer Name=DRSQLSP2010
Search_Service_Application_SharePoin... SPServer Name=DRSQLSP2010
SharePoint_Admin_Content_2010 SPServer Name=DRSQLSP2010
WSS_Content_2010 SPServer Name=DRSQLSP2010
WSS_Content_My_2010 SPServer Name=DRSQLSP2010
WSS_Content_mysites_2010 SPServer Name=DRSQLSP2010
WSS_Content_sp2010 SPServer Name=DRSQLSP2010
WSS_Content_STPLab2010 SPServer Name=DRSQLSP2010
WSS_Content_Temp SPServer Name=DRSQLSP2010
Search_Service_Application_SharePoin... SPServer Name=DRSQLSP2010
UM_MMS SPServer Name=DRSQLSP2010
SharedServices_2010 SPServer Name=DRSQLSP2010
WSS_UsageApplication SPServer Name=DRSQLSP2010
UserProfileUM_SyncDB_a5502148-ca0a-4... SPServer Name=DRSQLSP2010
The command above added the failover partner to the connection string used by sharepoint. So, in case the server DCSQL failed, the server will try to connect to DRSQLSP2010. We can see from the information put in the registry on each of the sharepoint server.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Secure\ConfigDB]
"dsn"="Data Source=dcsql;Failover Partner=DRSQLSP2010;Initial Catalog=SharePoint_Config_2010;Integrated Security=True;Enlist=False;Connect Timeout=15"
- We simulated to change the principal to DRSQLSP2010 to see whether SharePoint can automatically failover to the specified server or not. In the real environment, you'll need to make sure that you can get the SQL server on the stretched site to be able to recover from broken SQL mirroring as well as be able to get database get-up and running normally.
And we've got the mirrored server as the principal now
- Once we did the failover to the mirror, we can see the following entries on the ULS log, saying that the SQL Server failover connection detected.
w3wp.exe (0x0FCC) 0x01C0 SharePoint Server Database tzkm Medium SQL Server failover connection detected. SQL Server dcsql failing over to SQL server DRSQLSP2010.
- Verifying the feature do work after failover such as Search, MMS, user profile, and other services as necessary
That's the setup that we need to go through to setup stretched farm. In the next post, I'll explore in more detail related to SharePoint components failover in disaster recovery condition.
Comments
- Anonymous
January 01, 2003
Hi Santosh, Please find my responses
- you can always run multiple Central Administration web sites to different sharepoint servers within a sharepoint farm. You can do this in two ways: a) PSCOnfig -cmd adminvs (technet.microsoft.com/.../cc263093.aspx) b)Powershell : New-SPCentralAdministration (technet.microsoft.com/.../ff607841.aspx)
- For the the service application itself, you can have one configured within your farm. and the service instances (Hope you understand difference between service application and service instance, here's for more information about this: ), In my opinion you should keep the services on DC2 started as what you have on DC1, so that when we've got unexpected failure, they will automatically run. But, if you'd like to keep the services on DC2 to be in stopped state for some reasons, that should be fine too but you'll need to figure it out how you're going to bring the services started on DC2 when failure comes. HTH
Anonymous
January 01, 2003
Santosh, That will provision a central administration site in your server. This will only provision administration interface, whilst the content of the configurations/service application will remain the same with the first one that is provisioned as part of sharepoint installation.Anonymous
September 08, 2011
Thanks berryst, nice Articles with details steps abt Strech Farm concept for SharePoint. I have followling Queries.
- can I create multiple Central admin site using diffrent port i.e Central Admin site at DC1 at Port 8080 other Cental admin site at DC2 at port 8081 so that is DC1 down then Administrator can access CA from DC2 server , or any other things i need to do.
- What abt the services application is same sevicess Applicaitons i need to configure on DC2 Application server which is configured on DC1 Application server or only once i need to configure services. pls clarify. Thanks for your time Santosh K.
Anonymous
September 15, 2011
Thanks Berryst, for your valuable input. well the above comand will create new SP central admin or use existing one? if new one then do i have to configure exryting for services application which I configured in DR1 Application server Thanks.Anonymous
November 01, 2011
Berryst, Thanks for a wonderful overview, it has helped allot... I'm in the proces of building a cross farm service enviorment, I would like to build in HA for the service applications MMS, UPA, Web Ana, Secure Store and Search... While I understand how to build in some HA into search service, I'm not sure how to build it into the other four can you point me to guides or examples on how to get the services into a HA Thank in advance GeraldAnonymous
December 02, 2011
The comment has been removed