Home » SQL Server » AlwaysON » SFBS deployement

In Lync 2013, SQL mirroring was the option used for backend high availability. For skype for business server however SQL always on was the preferred choice. It combines the richness of Windows Server Failover Clustering (WSFC) while removing the dependency of shared storage as in case of SQL FCI. As per the plan, each storages spaces cluster node is hosting one node of the two node SQL always on setup. However, the VMs are not part of the cluster and would not failover if the base machine goes down. These 8 vCPU, 32GB RAM VM for SQL always on are configured as bellow

  • Network: Two virtual NIC, connected to 10G SR-IOV enabled vSwitch for client communication with teaming inside VM option enabled. One additional virtual NIC connected to vSwitch created from 1G cross cable between the storage spaces nodes, for WSFC heartbeat communication. After the deployment of VM, NIC teaming is configured inside the VM as well as virtual function driver is updated matching with the driver deployed on base machine for the physical NIC.
  • Storage: C driver from local disks in RAID10 of the storage spaces node. S drive from CSV of storage spaces with virtual disk created using SSD tiring. For the virtual disk selection, care is taken to ensure the virtual disk is owned by the node hosting the SQL VM. 18GB VHDX form SSD only storage spaces virtual disk CSV is one addition disk presented to this VM as T driver, for SQLtempDB files.

First the installation of required roles and features for windows cluster as well as .Net 3.5 for SQL, which needs to be installed from windows server 2012 R2 installation media.

Add-WindowsFeature Net-Framework-Core, Failover-Clustering, RSAT-Clustering-Mgmt,RSAT-Clustering-PowerShell -Source d:\sources\sxs

Once the cluster is deployed, a file share from SOFS as the witness need to be set. For SQL server deployment, installation script as bellow was used to automate installation with drives set as requried.


Post deployment of the SQL, remaining tempDB files as well as the resize of default tempDB file is created using these bellow query, running inside SQL Management studio console. Essentially total of 8 tempDB file for the 8 process VM and one additional logfile.

ALTER DATABASE tempdb ADD FILE (NAME = tempdev2, FILENAME = 'T:\SQL2014TDB\tempdb2.ndf', SIZE = 512, FILEGROWTH = 0);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev3, FILENAME = 'T:\SQL2014TDB\tempdb3.ndf', SIZE = 512, FILEGROWTH = 0);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev4, FILENAME = 'T:\SQL2014TDB\tempdb4.ndf', SIZE = 512, FILEGROWTH = 0);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev5, FILENAME = 'T:\SQL2014TDB\tempdb5.ndf', SIZE = 512, FILEGROWTH = 0);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev6, FILENAME = 'T:\SQL2014TDB\tempdb6.ndf', SIZE = 512, FILEGROWTH = 0);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev7, FILENAME = 'T:\SQL2014TDB\tempdb7.ndf', SIZE = 512, FILEGROWTH = 0);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev8, FILENAME = 'T:\SQL2014TDB\tempdb8.ndf', SIZE = 512, FILEGROWTH = 0);

A DNS record for the SQL AlwaysOn Availability Groups(AG) listener need to be created before proceeding for AG setup. Listener is the one to which Skype for business server are going to connect. Both the IP address and FQDN are different from the cluster IP and FQDN of WSFC. In bellow setup for pool1, sfbs-p1db is listener FQDN, whereas sfbdb101 and sfbsdb102 are the actual hostname of the SQL server.

Enable AlwaysOn by selecting Enable AlwaysOn Availability Groups check box of “SQL Server Services” properties under “SQL Server Configuration Manager”. Restart the SQL Server service for the changes to take effect. The query “SELECT SERVERPROPERTY (‘IsHadrEnabled’);” should show the value as 1 now.

Unlike SQL mirroring where the topology builder used to do most of the steps, for always on it need to be done out topology builder. The overall procedure of that would be

  • Create DBs on anyone of the backend server using Skype for Business Server 2015 Topology Builder
  • Set DB recovery model to Full with No wait on all SFBS DB. For example, ALTER DATABASE [cpsdyn] SET RECOVERY FULL WITH NO_WAIT;
  • Complete a full back
  • Copy the Directory structure of CSData folder to other node of the always on i.e. from sfbdb101 to sfbdb102. On sfbdb101 “Xcopy D:\CsData \\ sfbdb102\D$\CsData /T /E”
  • The New Availability Group Wizard can be initiated by right clicking AlwaysOn High Availability under SQL Server Management Studio Availability Group, to create the new AG.
  • On the listener section, sfbs-p1db as the name and default SQL port. For entering the IP address as registered in DNS, had to struggle as the add button would be hidden if the screen size is small. Be sure to pull the edge and expand the screen if add button to enter static IP address is not visible.
  • For initial data synchronisation Wizard would require a temporary file share to copy the DB files.
  • At completion New Availability Group Wizard would have duplicated the DB completely, except for few login and hence
    • DB needs to be failed over the 2nd server i.e. sfbdb102 and in the Skype for Business Server 2015 Topology Builder the server name now needs to be changed to sfbdb102. Once the topology is published, it would rectify the missing login.
  • At this stage both the server would have identical copy of the backend data bases and in the Skype for Business Server 2015 Topology Builder the SQL server FQDN can be mentioned as AG FQDN i.e. sfbs-p1db.pkpnotes.com.
  • Once the topology is published, the backend is ready and SFBS FE server deployment can be initiated.

This being a side by side migration to keep it transparent with restriction of moving resources from Lync 2013 to SFBS after user migration, deployment started with 4 FE server from storages spaces node. This is to avoid pool reset afterward.

Leave a Reply

Your email address will not be published. Required fields are marked *