Поделиться через


Настройка групп доступности 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.

Схема настройки нескольких подсетей с помощью Pacemaker.

Обновление базы информации о кластере

  1. Экспорт базы информации о кластере.

    sudo pcs cluster cib <filename>
    

    Где <filename> находится имя, которое требуется вызвать CIB.

  2. Измените созданный файл. Найдите раздел <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", если в подсети более одного сервера.

  3. Импорт измененной базы информации о кластере и изменение настройки Pacemaker.

    sudo pcs cluster cib-push <filename>
    

    Где <filename> имя файла CIB с измененными сведениями ОБ IP-адресе.

Проверка изменений и отработки отказа

  1. После успешного применения базы информации о кластере с обновленной конфигурацией проверьте связь с DNS-именем, которое связано с ресурсом IP-адреса в Pacemaker. Он должен отражать IP-адрес, связанный с подсетью, в которой в данный момент размещаются группа доступности Always On или экземпляр отказоустойчивого кластера.

  2. Выполните отработку отказа группы доступности Always On или экземпляра отказоустойчивого кластера в другой подсети.

  3. После полного подключения группы доступности Always On или экземпляра отказоустойчивого кластера проверьте связь с DNS-именем, которое связано с IP-адресом. Он должен отражать IP-адрес во второй подсети.

  4. При необходимости выполните отработку отказа группы доступности Always On или экземпляра отказоустойчивого кластера в исходной подсети.