이번 포스팅에서는 Skype 구성시 필요한 SQL Always on Availability Group(AG) 구성해 보겠습니다.

SQL Server에서는 다양한 고가용성 Plan 제공되고 있으며 그중에서 권장방법은 AG 입니다.

High Availability Solutions (SQL Server)

https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/high-availability-solutions-sql-server?view=sql-server-2017


아래의 포스팅을 참고하여 Enterprise Edition 전반적인 구성흐름에 대한 이해가 필요합니다.

2017/12/30 - [Lync] - Skype for business Server 2015 Enterprise Edition: Front end Pool 구성(3)

2017/12/30 - [Lync] - Skype for business Server 2015 Enterprise Edition: Front end Pool 구성(2)

2017/12/29 - [Lync] - Skype for business Server 2015 Enterprise Edition: Front end Pool 구성(1)

 

해당 포스팅은 과정에서 SQL AG 설정하는 부분만 다루도록 하겠습니다.


서비스 계정

Lync Admin(limcm\lync-admin)


SQL Admin(limcm\sql-admin)


 

VM 네트워크 구성

OS: Windows Server 2012 R2

SQL Server 2014 Enterprise

FQDN

IP

RAM

DC00.limcm.kr

192.168.10.161

2GB

SQL01.limcm.kr

192.168.10.162

4GB

SQL02.limcm.kr

192.168.10.163

4GB

Wit.limcm.kr

192.168.10.164

2GB

AGL.limcm.kr

192.168.10.165

 

SQLCluster.limcm.kr

192.168.10.166

 

Lync.limcm.kr

192.168.10.167

8GB

Shared.limcm.kr

192.168.10.168

2GB

 

 

Deploy an Always On Availability Group on a Back End Server in Skype for Business Server 2015

https://docs.microsoft.com/en-us/skypeforbusiness/deploy/deploy-high-availability-and-disaster-recovery/alwayson-availability-group

 

Deploying SQL Server AlwaysOn Availability Group for Skype for Business Server 2015

https://blogs.technet.microsoft.com/uclobby/2015/05/08/deploying-sql-server-alwayson-availability-group-for-skype-for-business-server-2015/

 

[단계1] Failover Cluster 구성

SQL AG 구성시 WSFC 구성이 먼저 필요합니다.

 

필수 조건, 제한 사항 및 권장 사항 - Always On 가용성 그룹

https://docs.microsoft.com/ko-kr/sql/database-engine/availability-groups/windows/prereqs-restrictions-recommendations-always-on-availability?view=sql-server-2017

 


또한 쿼럼은 File share witness 방식으로 구성하는 것을 권장하고 있습니다


각각의 노드에서 Failover-Clustering Feature 추가합니다.

Add-WindowsFeature Net-Framework-Core, Failover-Clustering, RSAT-Clustering-Mgmt,RSAT-Clustering-PowerShell 


유효성 검사를 진행합니다.

Test-Cluster -Node sql01,sql02

https://technet.microsoft.com/en-us/library/hh847274.aspx


Validation Report


New-Cluster -Name SQLCluster -Node sql01,sql02 -NoStorage -StaticAddress 192.168.10.166

https://technet.microsoft.com/en-us/library/hh847246.aspx


New-Cluster Report


 

Witness 권한 설정

 

Configure and Manage the Quorum in a Windows Server 2012 Failover Cluster

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/jj612870(v=ws.11)


Wit.limcm.kr Machine - Computer Management - Local Users and Groups - Groups


Administrators - Properties - Add - SQL Cluster Computer Object 


Share Folder - Properties


Sharing Tab - Advanced Sharing..


Share this folder - Check - Permissions - Click


Add


Add - Local Administrators


Full control - OK - Close


Set-ClusterQuorum -Cluster SQLCluster -NodeAndFileShareMajority “\\wit.limcm.kr\sql

https://technet.microsoft.com/en-us/library/ee461013.aspx


[단계2] SQL Server 2014 설치

각각의 노드에서 SQL Server 설치 진행합니다.

Database Engine Services, Reporting Services -Native, Management Tools 선택 Next 진행


Instance 이름은 각각의 노드가 전부 동일해야합니다.


Lync-Admin 계정으로 서비스 계정 지정


Add Current User

설치 완료후 최신 업데이트 진행

 

방화벽 설정

각각의 SQL Node 에서 아래의 Port Open 합니다.



SQL Server Configuration Manager 실행


SQL Server Services - SQL Server -Properties


Enable AlwaysOn Availability Group - Check - OK - Service Restart


SQL Management Studio - Security - Logins 이동하여 lync-admin 계정 Properties - sysadmin - Check


[단계3] Topology

 

SQL Node administrators 권한


SQL Server 지정 단계에서 New


High Availability Setting - Check - 각각의 정보 입력

SQL Server FQDN Node 1 서버를 입력합니다.


Next


Finish


[단계4] AG 구성

 

Run SQL Server Management Studio 


AlwaysOn High Availability - 우클릭 - New Availability Group Wizard


AG name 지정


DB 선택 메뉴에서 Full recovery mode is required 메시지가 나타납니다.


Powershell 다음과 같이 진행합니다.

 

Backend Database

Invoke-Sqlcmd -Query “ALTER DATABASE [cpsdyn] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

Invoke-Sqlcmd -Query “ALTER DATABASE [rgsconfig] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

Invoke-Sqlcmd -Query “ALTER DATABASE [rgsdyn] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

Invoke-Sqlcmd -Query “ALTER DATABASE [rtcab] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

Invoke-Sqlcmd -Query “ALTER DATABASE [rtcshared] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

Invoke-Sqlcmd -Query “ALTER DATABASE [rtcxds] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

 

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database cpsdyn

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database rgsconfig

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database rgsdyn

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database rtcab

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database rtcshared

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database rtcxds

 

CMS Databases:

Invoke-Sqlcmd -Query “ALTER DATABASE [xds] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

Invoke-Sqlcmd -Query “ALTER DATABASE [lis] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

 

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database xds

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database lis

 

Monitoring Databases:

 

Invoke-Sqlcmd -Query “ALTER DATABASE [LcsCDR] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

Invoke-Sqlcmd -Query “ALTER DATABASE [QoEMetrics] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

 

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database LcsCDR

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database QoEMetrics

 

Archiving Database

Invoke-Sqlcmd -Query “ALTER DATABASE [LcsLog] SET RECOVERY FULL WITH NO_WAIT;” -ServerInstance “SQL01\LYNC”

 

Backup-SqlDatabase -ServerInstance SQL01\LYNC -Database LcsLog

 


robocopy C:\CsData \\SQL02\C$\CsData /e /xf *


Refesh -  Check - Next


Add Replica


SQL02 Node Connect


Automatic Failover - Check


Listener 지정 - Next


 Full - Sync 공유 폴더 지정 - 해당 머신에서 Administrators lync-admin 권한 부여 필요


Next


Finish


Success


아래와 같이 확인할 있습니다.


Security - logins 항목을 확인해 보면, SQL01, SQL02 노드가 다른 것을 확인할 있습니다.

SQL01


SQL02


동일한 권한 설정을 위해서 다음과 같이 진행합니다.

AG 에서 Failover .


Next


Next


Connect


Connect


Next


Finish


Close


Primary 변경됨 확인


Topology Builder - Shared Components - SQL Server stores - 배포된 AG 우클릭 - Edit Properties


SQL Server FQDN SQL02 노드로 지정 - OK


Publish Topology


Finish


Skype Server 에서 Powershell 다음과 같이 진행

Install-CsDatabase -Update -ConfiguredDatabases -SqlServerFqdn AGL.limcm.kr -Verbose


SQL02 노드에서도 동일하게 변경됨 확인


마지막으로 Topology Builder 에서 SQL FQDN AG 지정합니다. - Publish topology 진행


Finish


+ Recent posts