Бэкап и восстановление Lync Server 2013 (Enterprise)

Так случилось, что в один прекрасный день, наш виртуальный хост с моим Lync 2013-сервером благополучно упал. Я только совсем недавно обновил инфраструктуру Lync 2010 до 2013-й версии, и не совсем успел настроить бэкапы. Надо, конечно, сказать, что тут виновато еще и начальство, т.к. подкинуло пачку задач со статусом "экстра-важно", но тем не менее, бородатый анекдот про админов которые уже делают бэкапы и которые скоро будут их делать, актуален.
Тем не менее, бэкапы были - но "сырые" - т.е. просто данные, что-то вроде System State для Active Directory. Вроде и есть бэкап, а восстанавливать его достаточно долго.
В общем, я сейчас расскажу вам, как я бэкапил Lync Server 2013 и как я его восстанавливал до полностью рабочего состояния.
Предварительно только хочу сказать, что я работаю в среде lync-enterprise, это значит что у меня работает два сервера - back-end и front-end. На первом - база данных и служба Persistent Chat, на втором - все остальное (включая службы Monitoring и Archiving).
Бэкап.
Резервное копирование осуществляется в двух этапах, один из которых обязателен, а второй - можно пропустить (хотя он существенно сократит время восстановления):
Бэкап настроек Lync я делаю с помощью специального powershell-скрипта. Его написал какой-то добрый буржуй, а я его немного отредактировал (не хватало бэкапа какой-то настройки ... не помню, какой ... по-моему это был Persistent Chat).
Вот скрипт.
У скрипта - три параметра:
Переходим к востановлению (описано не полностью).
В первую очередь, необходимо установить оба сервера (в моем случае было именно так) с нуля с теми же ip-адресами и именами в домене, как были упавшие сервера. Установить все необходимые компоненты, как это требовалось при первоначальной установке.
Напомню, что это делается вот так (для Windows Server 2012):
Дальше восстанавливаем Central Management Store. На самом деле, это основной этап. На front-end-сервере устанавливаем компоненты администрирования Lync Server 2013: Topology Builder и одновременно установится модуль Powershell для Lync. Запускаем Powershell и импортируем модуль Lync.
Тем не менее, бэкапы были - но "сырые" - т.е. просто данные, что-то вроде System State для Active Directory. Вроде и есть бэкап, а восстанавливать его достаточно долго.
В общем, я сейчас расскажу вам, как я бэкапил Lync Server 2013 и как я его восстанавливал до полностью рабочего состояния.
Предварительно только хочу сказать, что я работаю в среде lync-enterprise, это значит что у меня работает два сервера - back-end и front-end. На первом - база данных и служба Persistent Chat, на втором - все остальное (включая службы Monitoring и Archiving).
Бэкап.
Резервное копирование осуществляется в двух этапах, один из которых обязателен, а второй - можно пропустить (хотя он существенно сократит время восстановления):
- Бэкап несущих windows-систем. Т.е. снятие образа с операционных систем. Их у меня не было, поэтому время восстановления увеличилось часа на четыре.
- Бэкап настроек Lync Server. Это всякие Central Management Store, настройки пользователей и так далее.
Бэкап настроек Lync я делаю с помощью специального powershell-скрипта. Его написал какой-то добрый буржуй, а я его немного отредактировал (не хватало бэкапа какой-то настройки ... не помню, какой ... по-моему это был Persistent Chat).
Вот скрипт.
# Import Lync Module import-module lync ###Variables To Set $folderPath = "D:\Backup\" $lengthOfBackup = "-10" $poolFQDN = "pool2.domain.local" ###Done #Production – Delete Older Than x Days get-childitem $folderPath -recurse | where {$_.lastwritetime -lt (get-date).adddays($lengthOfBackup) -and -not $_.psiscontainer} |% {remove-item $_.fullname -force } #Production – Delete Empty Folders $a = Get-ChildItem $folderPath -recurse | Where-Object {$_.PSIsContainer -eq $True} $a | Where-Object {$_.GetFiles().Count -eq 0} | Remove-Item #Production – Get Date and Create Folder $currDate = get-date -uformat "%Y-%m-%d-%H-%M" New-Item $folderPath\$currDate -Type Directory #Message Out Write-Host -ForegroundColor Green "Backup to server in progress..." Write-Host -ForegroundColor Green " " #Export CMS/XDS and LIS Export-CsConfiguration -FileName $folderPath\$currDate\XdsConfig.zip Write-Host -ForegroundColor Green "Export CMS/XDS" Export-CsLisConfiguration -FileName $folderPath\$currDate\LisConfig.zip Write-Host -ForegroundColor Green "Export LIS" #Export Voice Information Get-CsDialPlan | Export-Clixml -path $folderPath\$currDate\DialPlan.xml Get-CsVoicePolicy | Export-Clixml -path $folderPath\$currDate\VoicePolicy.xml Get-CsVoiceRoute | Export-Clixml -path $folderPath\$currDate\VoiceRoute.xml Get-CsPstnUsage | Export-Clixml -path $folderPath\$currDate\PSTNUsage.xml Get-CsVoiceConfiguration | Export-Clixml -path $folderPath\$currDate\VoiceConfiguration.xml Get-CsTrunkConfiguration | Export-Clixml -path $folderPath\$currDate\TrunkConfiguration.xml Write-Host -ForegroundColor Green "Export Voice Information" #Export RGS Config Export-CsRgsConfiguration -Source "service:ApplicationServer:$poolFQDN" -FileName $folderPath\$currDate\RgsConfig.zip Write-Host -ForegroundColor Green "Export RGS Config" #Export User Information Export-CsUserData -PoolFqdn $poolFQDN -FileName $folderPath\$currDate\UserData.zip Write-Host -ForegroundColor Green "Export User Information" #Export Persistent Chat Export-CsPersistentChatData -DBInstance "lync-be-13.domain.local\rtc" -FileName $folderPath\$currDate\PersistentChatData.zip Write-Host -ForegroundColor Green "XDS, LIS, User, RGS and Persistent Chat backup to server is completed. Files are located at $folderPath\$currDate" Write-Host -ForegroundColor Green "Please make sure to export Voice Configuration"
У скрипта - три параметра:
- $folderPath = "D:\Backup\" - папка, в которую бэкапим
- $lengthOfBackup = "-10" - глубина хранения бэкапов (в днях)
- $poolFQDN = "pool2.domain.local" - название пула Lync
- "lync-be-13.domain.local\rtc" на строке 49 - инстанс SQL-сервера back-end-сервера.
- Сетевую папку, в которой хранится адресная книга и подобные штуки (по-правильному называется File Store). Ее просто копируем.
- Базы служб Monitoring и Archiving. Это следующие базы: LcsLog, LcsCDR, QoEMetrics.
Переходим к востановлению (описано не полностью).
В первую очередь, необходимо установить оба сервера (в моем случае было именно так) с нуля с теми же ip-адресами и именами в домене, как были упавшие сервера. Установить все необходимые компоненты, как это требовалось при первоначальной установке.
Напомню, что это делается вот так (для Windows Server 2012):
Add-WindowsFeature RSAT-ADDS, Web-Server, Web-Static-Content, Web-Default-Doc, Web-Http-Errors, Web-Asp-Net, Web-Net-Ext, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Logging, Web-Log-Libraries, Web-Request-Monitor, Web-Http-Tracing, Web-Basic-Auth, Web-Windows-Auth, Web-Client-Auth, Web-Filtering, Web-Stat-Compression, Web-Dyn-Compression, NET-WCF-HTTP-Activation45, Web-Asp-Net45, Web-Mgmt-Tools, Web-Scripting-Tools, Web-Mgmt-Compat, Desktop-Experience, Telnet-Client, BITS -Source D:\sources\sxs Add-WindowsFeature windows-identity-foundation
Также надо установить на back-end-сервер MS SQL Server 2008 R2 (или 2012). Для 2008 R2-версии помните, что надо установить Net Framework 3.5 SP3.
Дальше восстанавливаем Central Management Store. На самом деле, это основной этап. На front-end-сервере устанавливаем компоненты администрирования Lync Server 2013: Topology Builder и одновременно установится модуль Powershell для Lync. Запускаем Powershell и импортируем модуль Lync.
Import-Module Lync Install-CsDatabase -CentralManagementDatabase -Clean -SqlServerFqdn lync-be-13.domain.local -SqlInstanceName rtc -Verbose Set-CsConfigurationStoreLocation -SqlServerFqdn lync-be-13.domain.local -SqlInstanceName rtc -VerboseДальше импортируем CMS из бэкап-файла
Import-CsConfiguration -FileName D:\Backup\XdsConfig.zipИ публикуем топологию
Enable-CsTopology
lync (ru), lync 2013 (ru), backup (ru)
- Просмотров: 4586