Продолжая тему баз данных в Exchange трудно не упомянуть про группы обеспечения высокой доступности баз данных (Database Availability Group или DAG). Данная технология направлена на обеспечение отказоустойчивости баз данных Exchange. В данной статье пойдет речь о Exchange 2013, однако в большинстве своем будет применима и к Exchange 2010, и к Exchange 2007. Как всегда настраивать будем используя PowerShell.
Для начала рекомендую ознакомиться со статьей о настройке баз данных в Exchange.
Создание DAG
Database Availability Group используют функционал «файловер» кластера Windows Server, объединяя в кластер Mailbox сервера. Настройка данного кластера происходит с помощью Exchange, однако компонент Failover Cluster установить необходимо на все Mailbox сервера, которые будут включены в DAG.
1 2 3 4 5 6 7 8 9 10 11 |
[PS] C:\Windows\system32>Install-WindowsFeature -Name Failover-Clustering -ComputerName lon-mbx1 Success Restart Needed Exit Code Feature Result ------- -------------- --------- -------------- True No Success {Failover Clustering} [PS] C:\Windows\system32>Install-WindowsFeature -Name Failover-Clustering -ComputerName lon-mbx2 Success Restart Needed Exit Code Feature Result ------- -------------- --------- -------------- True No Success {Failover Clustering} |
Где конечно lon-mbx1 и lon-mbx2 вы должны заменить на свои маилбокс сервера. Хотя команду
1 |
Install-WindowsFeature -Name Failover-Clustering |
Можно просто выполнить локально на каждом сервере почтовых ящиков.
После того как фича установлена можно создавать собственно сам DAG. В нашем случае DAG будет называться FirstDAG
1 2 3 4 5 |
[PS] C:\Windows\system32>New-DatabaseAvailabilityGroup -Name FirstDAG Name Member Servers Operational Servers ---- -------------- ------------------- FirstDAG {} |
В данном варианте WitnessServer и WitnessDirectory. Элементы, которые отвечают за работоспособность кластера в момент отказа — будут выбраны автоматически. Сервер почтовых ящиков, будет считать себя работоспособный членом кластера, пока у него есть доступ к WitnessDirectory на WitnessServer. С помощью параметров WitnessServer и WitnessDirectory командлета New-DatabaseAvailabilityGroup вы можете указать следящий сервер и каталог.
Еще один из важных параметров, которые полезно применить это DatabaseAvailabilityGroupIpAddresses. Данный параметр указывает IP адреса, которые будут использоваться для кластера. Если вы планируете использовать DAG в нескольких датацентрах, то нужно указать IP адреса из двух подсетей. Если же не указать ни одного адреса, то будет использоваться DHCP.
Эти же параметры доступны при использовании командлета Set-DatabaseAvailabilityGroup. В примере ниже устанавливается WitnessServer, WitnessDirectory, DatabaseAvailabilityGroupIpAddresses.
1 2 |
[PS] C:\Windows\system32>Set-DatabaseAvailabilityGroup -Identity FirstDAG -WitnessServer lon-cas1.adatum.com -WitnessDire ctory c:\FirstDag -DatabaseAvailabilityGroupIpAddresses 172.16.0.3 |
Обратите внимание каталог создавать не нужно, и использовать его для своих целей тоже не стоит.
Добавление серверов почтовых ящиков в группу обеспечение высокой доступности
Для того чтобы добавить Mailbox сервер в DAG воспользуемся командлетом Add-DatabaseAvailabilityGroupServer.
1 2 |
[PS] C:\Windows\system32>Add-DatabaseAvailabilityGroupServer -MailboxServer lon-mbx1 -Identity FirstDAG [PS] C:\Windows\system32>Add-DatabaseAvailabilityGroupServer -MailboxServer lon-mbx2 -Identity FirstDAG |
Опять же меняя Lon-MBX1 и Lon-MBX2 на свои сервера почтовых ящиков.
Настройка баз данных
Добавив сервера в DAG вы еще не сделали базы данных размещенные на этих серверах отказоустойчивыми. Дело в том что кластер DAG в Exchange — не требует общего хранилища, поэтому в Exchange существует специальный механизм репликации баз данных.
Вы создаете копии базы данных на различных серверах в пределах DAG, тем самым вы запускаете процесс репликации баз на другие сервера. При этом рабочей будет только одна копия, все остальные будут резервными.
1 2 3 4 5 6 7 |
[PS] C:\Windows\system32>Add-MailboxDatabaseCopy -Identity Research -MailboxServer lon-mbx2 WARNING: Active Directory couldn't be updated in Swindon site(s) affected by the change to 'Research'. It won't be completely usable until after Active Directory replication occurs. WARNING: Please restart the Microsoft Exchange Information Store service on server LON-MBX2 after adding new mailbox databases. [PS] C:\Windows\system32>Invoke-Command -ComputerName lon-mbx2 -ScriptBlock {Restart-Service MSExchangeIS} WARNING: Waiting for service 'Microsoft Exchange Information Store (MSExchangeIS)' to stop... |
Первая команда из примера выше создает копию базы данных Research на сервере lon-mbx2. Вторая команда перезапускает службу Microsoft Exchange Information Store на компьютере lon-mbx2
Есть один важный момент. Вы не можете указывать разные каталоги для хранения баз данных на разных серверах. Т.е. все копии базы данных на всех серверах должны располагаться по одному пути. Если на сервере lon-mbx1 файл базы данных храниться в корне диска D:, то и на других серверах эта база данных должна храниться в корне диска D:.
Если вы создаете несколько копий одной базы данных, то возможно у вас будет желание указать в каком порядке они должны активироваться в случае выхода из строя активной копии. Для этого можно воспользоваться параметром ActivationPreference. Значение от 1 до количества копий этой базы данных. Чем меньше число тем выше вероятность активации.
Копии базы данных могут содержать не актуальную информацию, а отложенную. Т.е. вы можете использовать подобные копии как некую альтернативу бекапам. Единственный нюанс максимальное время задержки 14 дней. Установить эту задержку можно в момент создания копии базы данных через параметр ReplayLagTime.
Для переноса активной копии на новый сервер используется командлет Move-ActiveMailboxDatabase, где в параметре ActivateOnServer указывается сервер на котором должна быть активирована база данных.
1 2 3 4 5 6 7 8 9 10 11 |
[PS] C:\Windows\system32>Move-ActiveMailboxDatabase Research -ActivateOnServer lon-mbx2 Confirm Are you sure you want to perform this action? Moving mailbox database "Research" from server "LON-MBX1.Adatum.com" to server "LON-MBX2.Adatum.com". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y Identity ActiveServerAtS ActiveServerAtE Status NumberOfLogsLost RecoveryPoint MountStatus MountStatus tart nd Objective AtMoveStart AtMoveEnd -------- --------------- --------------- ------ ---------------- ------------- ----------- ----------- Research lon-mbx1 lon-mbx2 Succeeded 0 1/8/2015 5... Mounted Mounted |
Дополнительные настройки сети
Можно разнести трафик репликации и трафик для доступа к серверу почтовых ящиков по отдельным сетям, что увеличит скорость репликации. Для этого у ваших серверов почтовых ящиков должно быть по две сетевые карты.
Во-первых, выключаем автоматическую конфигурацию сетей.
1 2 |
[PS] C:\Windows\system32>Set-DatabaseAvailabilityGroup -Identity FirstDag -ManualDagNetworkConfiguration $true WARNING: No static address matched networks 'Cluster Network 3'. Specified static addresses: '172.16.0.3' |
Во-вторых, создаем сеть
1 2 3 4 5 6 |
[PS] C:\Windows\system32>New-DatabaseAvailabilityGroupNetwork ReplicationDagNetwork -DatabaseAvailabilityGroup FirstDAG -Subnets 192.168.1.0/24 Identity ReplicationEnabled Subnets -------- ------------------ ------- FirstDAG\ReplicationDagNetwork True {{192.168.1.0/24,Unknown}} |
Где ReplicationDagNetwork — имя вновь создаваемой сети, FirstDAG — имя нашего DAG, 192.168.1.0/24 — подсеть 192.168.1.0 с маской 255.255.255.0 которая будет использоваться для репликации
В-третьих, у первой сети выключаем репликацию
1 |
[PS] C:\Windows\system32>Set-DatabaseAvailabilityGroupNetwork FirstDAG\MapiDagNetwork -ReplicationEnabled $false |
Где FirstDAG\MapiDagNetwork идентификатор автоматически созданной сети, можно проверить имя используя командлет Get-DatabaseAvailabilityGroupNetwork.
Еще почитать
У меня при добавлении первого сервера в DAG возникла ошибка, возможно вам поможет рецепт решения