Руководство по настройке прослушивателя группы доступности для SQL Server на виртуальных машинах RHEL в Azure

Применимо к: SQL Server на виртуальной машине Azure

Примечание

Представленное руководство находится в общедоступной предварительной версии.

В этом учебнике мы используем SQL Server 2017 с RHEL 7.6, но для настройки высокого уровня доступности можно использовать SQL Server 2019 в RHEL 7 или RHEL 8. Команды для настройки ресурсов группы доступности в RHEL 8 изменились, и, чтобы получить дополнительные сведения о правильных командах, вам нужно будет ознакомиться с разделом Создание ресурса группы доступности и ресурсами RHEL 8.

В этом учебнике объясняется, как создать прослушиватель группы доступности для серверов SQL Server на виртуальных машинах RHEL в Azure. Вы научитесь:

  • создавать подсистему балансировки нагрузки на портале Azure;
  • настраивать серверный пул для подсистемы балансировки нагрузки;
  • создавать пробы для подсистемы балансировки нагрузки;
  • Настройка правил балансировки нагрузки
  • создавать ресурс подсистемы балансировки нагрузки в кластере;
  • Создание прослушивателя группы доступности
  • проверять подключение к прослушивателю;
  • тестировать отработку отказа.

Предварительные требования

Пройти Руководство по настройке групп доступности для SQL Server на виртуальных машинах RHEL в Azure

Создание балансировщика нагрузки на портале Azure

Приведенные ниже инструкции помогут вам выполнить шаги 1–4 из раздела Создание и настройка подсистемы балансировки нагрузки на портале Azure статьи о настройке подсистемы балансировки нагрузки на портале Azure.

Создание подсистемы балансировки нагрузки

  1. На портале Azure откройте группу ресурсов, в которой содержатся виртуальные машины SQL Server.

  2. В колонке группы ресурсов щелкните Добавить.

  3. Выполните поиск по запросу подсистема балансировки нагрузки и в результатах поиска выберите Подсистема балансировки нагрузки, опубликованную корпорацией Майкрософт.

  4. В колонке Балансировщик нагрузки щелкните Создать.

  5. В диалоговом окне Создание подсистемы балансировки нагрузки настройте подсистему балансировки нагрузки, задав следующие параметры:

    Параметр Значение
    имя; Текст, представляющий имя балансировщика нагрузки. Например, sqlLB.
    Тип Внутренний
    Виртуальная сеть Созданная виртуальная сеть по умолчанию должна называться VM1VNET.
    Подсеть Выберите подсеть, в которой расположены экземпляры SQL Server. По умолчанию должна быть VM1Subnet.
    Назначение IP-адресов Статическое
    Частный IP-адрес Используйте созданный в кластере IP-адрес virtualip.
    Подписка Используйте подписку, которая использовалась для группы ресурсов.
    Группа ресурсов Выберите группу ресурсов, в которой расположены экземпляры SQL Server.
    Расположение Выберите расположение Azure, в котором расположены экземпляры SQL Server.

Настройка серверного пула

В Azure серверный пул адресов называется просто серверным пулом. В нашем случае это адреса трех экземпляров SQL Server в группе доступности.

  1. В группе ресурсов щелкните созданную подсистему балансировки нагрузки.

  2. В колонке Параметры щелкните Серверные пулы.

  3. На вкладке Серверные пулы щелкните Добавить, чтобы создать серверный пул адресов.

  4. В колонке Добавление серверного пула в поле Имя введите имя серверного пула.

  5. В разделе Сопоставлено с выберите Виртуальная машина.

  6. Выберите каждую виртуальную машину в среде и свяжите с каждой из них соответствующий IP-адрес.

    Добавление серверного пула

  7. Нажмите кнопку Добавить.

Создание пробы

Проба определяет, как Azure будет проверять, какому из экземпляров SQL Server в данный момент принадлежит прослушиватель группы доступности. Azure проверяет службу по IP-адресу и порту, которые вы указываете при создании пробы.

  1. В колонке Параметры для подсистемы балансировки нагрузки щелкните Health probes (Пробы работоспособности).

  2. В колонке Health probes (Пробы работоспособности) щелкните Добавить.

  3. Настройте пробу в колонке Добавление пробы . Для настройки пробы используйте следующие значения:

    Параметр Значение
    имя; Текст, представляющий имя пробы. Например, SQLAlwaysOnEndPointProbe.
    протокол; TCP
    порт. Вы можете использовать любой доступный порт. Например, 59999.
    Интервал 5
    Пороговое значение сбоя 2
  4. Нажмите кнопку ОК.

  5. Войдите на все виртуальные машины и откройте порт пробы с помощью следующих команд:

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

Azure создаст пробу и с ее помощью будет проверять, в каком экземпляре SQL Server есть прослушиватель для группы доступности.

Настройка правил балансировки нагрузки

Правила балансировки нагрузки определяют способ направления трафика подсистемой балансировки нагрузки в экземплярах SQL Server. Для этой подсистемы балансировки нагрузки включите прямой ответ от сервера, так как одновременно только один из трех экземпляров SQL Server может содержать ресурс прослушивателя группы доступности.

  1. В колонке Параметры для балансировщика нагрузки щелкните Правила балансировки нагрузки.

  2. В колонке Правила балансировки нагрузки щелкните Добавить.

  3. В колонке Добавление правил балансировки нагрузки настройте правило балансировки нагрузки. Используйте следующие параметры:

    Параметр Значение
    имя; Текстовое имя, представляющее правила балансировки нагрузки. Например, SQLAlwaysOnEndPointListener.
    протокол; TCP
    порт. 1433
    Внутренний порт 1433. Это значение игнорируется, поскольку правило использует плавающий IP-адрес (прямой ответ от сервера) .
    Проба Используйте имя пробы, созданной для этого балансировщика нагрузки.
    Сохранение сеанса None
    Время ожидания простоя (в минутах) 4
    Плавающий IP-адрес (прямой ответ от сервера) Enabled

    Добавление правила балансировки нагрузки

  4. Нажмите кнопку ОК.

  5. Azure настроит правило балансировки нагрузки. Теперь подсистема балансировки нагрузки настроена для маршрутизации трафика в экземпляр SQL Server, на котором размещается прослушиватель для группы доступности.

На этом этапе группа ресурсов содержит подсистему балансировки нагрузки, через которую происходит подключение ко всем виртуальным машинам SQL Server. Подсистема балансировки нагрузки также содержит IP-адрес прослушивателя группы доступности Always On для SQL Server. Таким образом, любая виртуальная машина может отвечать на запросы для групп доступности.

Создание ресурса подсистемы балансировки нагрузки в кластере

  1. Войдите на основную виртуальную машину. Чтобы включить порт пробы подсистемы балансировки нагрузки Azure (в нашем примере используется 59999), необходимо создать ресурс. Выполните следующую команду:

    sudo pcs resource create azure_load_balancer azure-lb port=59999
    
  2. Создайте группу, содержащую ресурсы virtualip и azure_load_balancer:

    sudo pcs resource group add virtualip_group azure_load_balancer virtualip
    

Добавление ограничений

  1. Чтобы ресурсы IP-адреса и группы доступности подсистемы балансировки нагрузки Azure выполнялись в одном узле, необходимо настроить ограничение совместного размещения. Выполните следующую команду:

    sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
    
  2. Создайте ограничение очередности, чтобы ресурс группы доступности запускался до ресурса IP-адреса подсистемы балансировки нагрузки Azure. Ограничение совместного размещения предполагает такое ограничение, поэтому его необходимо задать явно.

    sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
    
  3. Чтобы проверить ограничения, выполните следующую команду:

    sudo pcs constraint list --full
    

    Вы должны увидеть следующий результат.

    Location Constraints:
    Ordering Constraints:
      promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory)
      promote ag_cluster-master then start azure_load_balancer (kind:Mandatory) (id:order-ag_cluster-master-azure_load_balancer-mandatory)
    Colocation Constraints:
      virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY)
      azure_load_balancer with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-azure_load_balancer-ag_cluster-master-INFINITY)
    Ticket Constraints:
    

Создание прослушивателя группы доступности

  1. Выполните следующие команды SQLCMD или SSMS на основном узле.

    • Замените IP-адрес, указанный ниже, на IP-адрес virtualip.
    ALTER AVAILABILITY
    GROUP [ag1] ADD LISTENER 'ag1-listener' (
            WITH IP(('10.0.0.7'    ,'255.255.255.0'))
                ,PORT = 1433
            );
    GO
    
  2. Войдите на каждый узел виртуальной машины. Используйте следующую команду, чтобы открыть файл hosts и настроить разрешение имен узлов для ag1-listener на каждой машине.

    sudo vi /etc/hosts
    

    В редакторе vi введите i, чтобы вставить текст, а в пустую строку добавьте IP-адрес ag1-listener. Затем рядом с IP-адресом добавьте ag1-listener после пробела.

    <IP of ag1-listener> ag1-listener
    

    Чтобы выйти из редактора vi, сначала нажмите клавишу Esc, а затем введите команду :wq для записи файла и выхода. Выполните это действие в каждом узле.

Тестирование прослушивателя и отработки отказа

Проверка входа на SQL Server с помощью прослушивателя группы доступности

  1. Используйте SQLCMD для входа на основной узел SQL Server, используя имя прослушивателя группы доступности:

    • Используйте созданное ранее имя для входа и замените <YourPassword> правильным паролем. В приведенном ниже примере используется имя для входа sa, созданное с помощью SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  2. Проверьте имя сервера, с которым установлено соединение. Выполните следующую команду в SQLCMD:

    SELECT @@SERVERNAME
    

    В выходных данных должен отобразиться текущий основной узел. Если вы никогда не тестировали отработку отказа, это должен быть VM1.

    Завершите сеанс SQL Server, введя команду exit.

Тестирование отработки отказа

  1. Выполните следующую команду, чтобы вручную выполнить отработку отказа первичной реплики в <VM2> или другую реплику. Замените <VM2> значением имени вашего сервера.

    sudo pcs resource move ag_cluster-master <VM2> --master
    
  2. Если вы проверите свои ограничения, то увидите, что из-за перехода на другой ресурс вручную было добавлено еще одно ограничение:

    sudo pcs constraint list --full
    

    Вы увидите, что добавлено ограничение с идентификатором cli-prefer-ag_cluster-master.

  3. Удалите ограничение c идентификатором cli-prefer-ag_cluster-master, используя следующую команду:

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    
  4. Проверьте кластерные ресурсы с помощью команды sudo pcs resource, теперь основным экземпляром должна быть <VM2>.

    Примечание

    Эта статья содержит упоминания термина slave (ведомый) . Корпорация Майкрософт больше не использует его. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.

    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
        Masters: [ <VM2> ]
        Slaves: [ <VM1> <VM3> ]
    Resource Group: virtualip_group
        azure_load_balancer        (ocf::heartbeat:azure-lb):      Started <VM2>
        virtualip  (ocf::heartbeat:IPaddr2):       Started <VM2>
    
  5. Используйте SQLCMD для входа в первичную реплику с использованием имени прослушивателя:

    • Используйте созданное ранее имя для входа и замените <YourPassword> правильным паролем. В приведенном ниже примере используется имя для входа sa, созданное с помощью SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  6. Проверьте сервер, с которым установлено соединение. Выполните следующую команду в SQLCMD:

    SELECT @@SERVERNAME
    

    Вы должны увидеть, что теперь вы подключены к виртуальной машине, для которой выполнена отработка отказа.

Дальнейшие действия

Дополнительные сведения о подсистемах балансировки нагрузки в Azure см. в статье: