Настройка групп доступности AlwaysOn с несколькими подсетями и экземпляров отказоустойчивого кластера
Область применения: SQL Server — Linux
Если группа доступности AlwaysOn (AG) или экземпляр отказоустойчивого кластера (FCI) охватывает несколько сайтов, каждый сайт обычно имеет собственную сеть, что часто означает, что у каждого сайта есть собственный IP-адрес.
Например, адреса сайта A начинаются с, а адреса B сайта начинаются с192.168.1.<x>
192.168.2.<x>
, где <x>
является частью IP-адреса, уникального для сервера. Без какой-либо маршрутизации на сетевом уровне эти серверы не могут взаимодействовать друг с другом.
Для этого существует два способа:
- настройте сеть, которая связывает две разные подсети (то есть VLAN)
- настройка маршрутизации между подсетями
Решение на основе виртуальной локальной сети
Предварительные требования. Для решения на основе виртуальной локальной сети каждый сервер, участвующий в группе доступности или FCI, должен иметь две сетевые карты (сетевой адаптер с двумя портами будет одной точкой сбоя на физическом сервере), чтобы его можно было назначить IP-адреса в собственной подсети, а также один на виртуальной локальной локальной сети. Это требование в дополнение к любым другим потребностям сети, таким как iSCSI, который также нуждается в собственной сети.
Создание IP-адресов для группы доступности Always On или экземпляра отказоустойчивого кластера осуществляется в виртуальной локальной сети. В следующем примере виртуальная локальная сеть имеет подсеть 192.168.3.<x>
, поэтому IP-адрес, созданный для группы доступности или FCI 192.168.3.104
. Так как группе доступности Always On (AG) или экземпляру отказоустойчивого кластера (FCI) назначен один IP-адрес, дополнительная настройка не требуется.
Настройка с использованием Pacemaker
В Windows отказоустойчивый кластер Windows Server (WSFC) изначально поддерживает несколько подсетей и обрабатывает несколько IP-адресов посредством зависимости OR IP-адреса. В Linux отсутствует зависимость OR, но можно обеспечить поддержку нескольких подсетей в собственном коде с помощью Pacemaker, хотя при этом нельзя использовать обычную командную строку Pacemaker. Вместо этого нужно изменить базу информации о кластере (CIB). База информации о кластере представляет собой XML-файл с конфигурацией Pacemaker.
Обновление базы информации о кластере
Экспорт базы информации о кластере.
sudo pcs cluster cib <filename>
Где
<filename>
находится имя, которое требуется вызвать CIB.Измените созданный файл. Найдите раздел
<resources>
. Вы увидите различные ресурсы, созданные для группы доступности или FCI. Найдите ресурс, связанный с IP-адресом.<instance_attributes>
Добавьте раздел со сведениями для второго IP-адреса до или после существующего.<operations>
Синтаксис выглядит примерно так:<instance_attributes id="<NameForAttribute>"> <nvpair id="<NameForIP>" name="ip" value="<IPAddress>"/> </instance_attributes>
где
<NameForAttribute>
уникальное имя этого атрибута,<NameForIP>
является именем, связанным с IP-адресом,<IPAddress>
является IP-адресом второй подсети.Ниже приводится пример.
<instance_attributes id="virtualip-instance_attributes"> <nvpair id="virtualip-instance_attributes-ip" name="ip" value="192.168.1.102"/> </instance_attributes>
По умолчанию в экспортированном XML-файле CIB есть только один
<instance_attributes />
. Если есть две подсети, вам потребуется две<instance_attributes />
записи.Ниже приведен пример записей для двух подсетей:
<instance_attributes id="virtualip-instance_attributes1"> <rule id="Subnet1-IP" score="INFINITY" boolean-op="or"> <expression id="Subnet1-Node1" attribute="#uname" operation="eq" value="Node1" /> <expression id="Subnet1-Node2" attribute="#uname" operation="eq" value="Node2" /> </rule> <nvpair id="IP-In-Subnet1" name="ip" value="192.168.1.102"/> </instance_attributes> <instance_attributes id="virtualip-instance_attributes2"> <rule id="Subnet2-IP" score="INFINITY"> <expression id="Subnet2-Node1" attribute="#uname" operation="eq" value="Node3" /> </rule> <nvpair id="IP-In-Subnet2" name="ip" value="192.168.2.102"/> </instance_attributes>
Следует использовать
boolean-op="or"
, если в подсети более одного сервера.Импорт измененной базы информации о кластере и изменение настройки Pacemaker.
sudo pcs cluster cib-push <filename>
Где
<filename>
имя файла CIB с измененными сведениями ОБ IP-адресе.
Проверка изменений и отработки отказа
После успешного применения базы информации о кластере с обновленной конфигурацией проверьте связь с DNS-именем, которое связано с ресурсом IP-адреса в Pacemaker. Он должен отражать IP-адрес, связанный с подсетью, в которой в данный момент размещаются группа доступности Always On или экземпляр отказоустойчивого кластера.
Выполните отработку отказа группы доступности Always On или экземпляра отказоустойчивого кластера в другой подсети.
После полного подключения группы доступности Always On или экземпляра отказоустойчивого кластера проверьте связь с DNS-именем, которое связано с IP-адресом. Он должен отражать IP-адрес во второй подсети.
При необходимости выполните отработку отказа группы доступности Always On или экземпляра отказоустойчивого кластера в исходной подсети.