Обеспечение высокого уровня доступности NFS на виртуальных машинах Azure в SUSE Linux Enterprise Server
Примечание.
Мы рекомендуем развернуть одну из сторонних служб NFS Azure: NFS на томах Файлы Azure или NFS ANF для хранения общих данных в высокодоступной системе SAP. Помните, что мы не подчеркиваем эталонные архитектуры SAP, используя кластеры NFS.
В этой статье описывается развертывание виртуальных машин, их настройка, установка платформы кластера, а также установка высокодоступного NFS-сервера, который можно использовать для хранения общих данных высокодоступной системы SAP. В этом руководстве описывается настройка высокодоступного NFS-сервера, который используется двумя системами SAP, NW1 и NW2. Имена ресурсов (например, виртуальных машин или виртуальных сетей) в примере предполагают, что вы использовали шаблон файлового сервера SAP с префиксом ресурсов prod.
Примечание.
В этой статье содержатся ссылки на термины, которые корпорация Майкрософт больше не использует. Когда эти термины будут удалены из программных продуктов, мы удалим их и из этой статьи.
Сначала прочитайте следующие примечания и документы SAP:
примечание к SAP 1928533, которое содержит:
- список размеров виртуальных машин Azure, поддерживаемых для развертывания ПО SAP;
- важные сведения о доступных ресурсах для каждого размера виртуальной машины Azure;
- сведения о поддерживаемом программном обеспечении SAP и сочетаниях операционных систем и баз данных;
- сведения о требуемой версии ядра SAP для Windows и Linux в Microsoft Azure.
примечание к SAP 2015553, в котором описываются предварительные требования к SAP при развертывании программного обеспечения SAP в Azure;
Примечание SAP 2205917 содержит рекомендуемые параметры ОС для SUSE Linux Enterprise Server для приложений SAP.
Примечание SAP 1944799 содержит рекомендации для SAP HANA в SUSE Linux Enterprise Server для приложений SAP.
примечание к SAP 2178632, содержащее подробные сведения обо всех доступных метриках мониторинга для SAP в Azure;
примечание к SAP 2191498, содержащее сведения о необходимой версии агента SAP Host Agent для Linux в Azure;
примечание к SAP 2243692, содержащее сведения о лицензировании SAP в Linux в Azure;
примечание к SAP 1984787, содержащее общие сведения о SUSE Linux Enterprise Server 12;
примечание к SAP 1999351, содержащее дополнительные сведения об устранении неполадок, связанных с расширением для расширенного мониторинга Azure для SAP;
вики-сайт сообщества SAP, содержащий все необходимые примечания к SAP для Linux;
SAP NetWeaver на виртуальных машинах Linux. Руководство по планированию и внедрению
Развертывание виртуальных машин Azure для SAP в Linux (данная статья)
Развертывание СУБД Виртуальных машин Azure для SAP на Linux.
Заметки о выпуске SUSE Linux Enterprise Server для приложений SAP 12 с пакетом обновления 5 (SP5)
Обзор
Чтобы добиться высокого уровня доступности, SAP NetWeaver необходим NFS-сервер. NFS-сервер настраивается в отдельном кластере и может использоваться несколькими системами SAP.
NFS-сервер использует выделенное виртуальное имя узла и виртуальные IP-адреса для каждой системы SAP, использующей этот NFS-сервер. Load Balancer в Azure должен использовать виртуальный IP-адрес. В представленной конфигурации показана следующая подсистема балансировки нагрузки:
- Интерфейсный IP-адрес 10.0.0.4 для NW1
- Интерфейсный IP-адрес 10.0.0.5 для NW2
- Порт пробы 61000 для NW1
- Порт пробы 61001 для NW2
Настройка высокодоступного NFS-сервера
Развертывание Linux вручную с помощью портала Azure
В этом документе предполагается, что вы уже развернули группу ресурсов, Azure виртуальная сеть и подсеть.
Разверните две виртуальные машины для серверов NFS. Выберите подходящий образ SLES, поддерживаемый системой SAP. Вы можете развернуть виртуальную машину в любом из вариантов доступности — масштабируемый набор, зону доступности или группу доступности.
Настройка Azure Load Balancer
Следуйте инструкциям по созданию подсистемы балансировки нагрузки, чтобы настроить стандартную подсистему балансировки нагрузки для высокого уровня доступности сервера NFS. Во время настройки подсистемы балансировки нагрузки рассмотрите следующие моменты.
- Конфигурация внешнего IP-адреса: создание двух интерфейсных IP-адресов. Выберите ту же виртуальную сеть и подсеть, что и сервер NFS.
- Серверный пул: создайте внутренний пул и добавьте виртуальные машины сервера NFS.
- Правила для входящего трафика: создайте два правила балансировки нагрузки, одно для NW1 и другое для NW2. Выполните те же действия для обоих правил балансировки нагрузки.
- Внешний IP-адрес: выбор внешнего IP-адреса
- Серверный пул: выбор внутреннего пула
- Проверьте "Порты высокой доступности"
- Протокол: TCP
- Проба работоспособности: создайте пробу работоспособности со следующими сведениями (применяется как для NW1, так и для NW2)
- Протокол: TCP
- Порт: [например: 61000 для NW1, 61001 для NW2]
- Интервал: 5
- Пороговое значение пробы: 2
- Время ожидания простоя (минуты): 30
- Установите флажок "Включить плавающий IP-адрес"
Примечание.
Номер свойства конфигурации пробы работоспособностиOfProbes, иначе известный как "Неработоспособное пороговое значение" на портале, не учитывается. Таким образом, чтобы управлять числом успешных или неудачных последовательных проб, задайте для свойства "probeThreshold" значение 2. В настоящее время невозможно задать это свойство с помощью портал Azure, поэтому используйте команду Azure CLI или PowerShell.
Примечание.
Если в серверный пул внутренней (без общедоступного IP-адреса) подсистемы балансировки нагрузки Azure ценовой категории "Стандартный" помещаются виртуальные машины без общедоступных IP-адресов, у них не будет исходящего подключения к Интернету без дополнительной настройки, разрешающей маршрутизацию к общедоступным конечным точкам. Подробные сведения о такой настройке см. в статье Подключение к общедоступной конечной точке для виртуальных машин с помощью Azure Load Balancer (цен. категория "Стандартный") в сценариях обеспечения высокого уровня доступности SAP.
Внимание
- Не включайте метки времени TCP на виртуальных машинах Azure, размещенных за Azure Load Balancer. Включение меток времени TCP помешает работе проб работоспособности. Установите для параметра
net.ipv4.tcp_timestamps
значение0
. Дополнительные сведения см. в разделе Пробы работоспособности Load Balancer. - Чтобы предотвратить изменение значения saptune вручную
net.ipv4.tcp_timestamps
,0
1
необходимо обновить версию saptune до версии 3.1.1 или более поздней. Дополнительные сведения см. в разделе saptune 3.1.1 . Необходимо ли обновить?.
Создание кластера Pacemaker
Следуйте указаниям в статье Настройка кластера Pacemaker в SUSE Linux Enterprise Server в Azure, чтобы создать базовый кластер Pacemaker для этого NFS-сервера.
Настройка NFS-сервера
Ниже приведены элементы с префиксами: [A] — применяется ко всем узлам, [1] — применяется только к узлу 1, [2] — применяется только к узлу 2.
[A] Установите разрешения имен.
Можно использовать DNS-сервер или внести изменения в файл /etc/hosts на всех узлах. В этом примере показано, как использовать файл /etc/hosts. Замените IP-адрес и имя узла в следующих командах.
sudo vi /etc/hosts
Вставьте следующие строки в /etc/hosts. Измените IP-адрес и имя узла в соответствии со своей средой.
# IP address of the load balancer frontend configuration for NFS 10.0.0.4 nw1-nfs 10.0.0.5 nw2-nfs
[A] Включите NFS-сервер.
Создайте корневую запись экспорта NFS.
sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports' sudo mkdir /srv/nfs/
[A] Установите компоненты DRBD.
sudo zypper install drbd drbd-kmp-default drbd-utils
[A] Создайте секцию для устройств DRBD.
Выведите список всех доступных дисков данных.
sudo ls /dev/disk/azure/scsi1/ # Example output # lun0 lun1
Создайте секции для всех дисков данных.
sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0' sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun1'
[A] Создайте конфигурации LVM.
Выведите список всех доступных секций.
ls /dev/disk/azure/scsi1/lun*-part* # Example output # /dev/disk/azure/scsi1/lun0-part1 /dev/disk/azure/scsi1/lun1-part1
Создайте тома LVM для всех секций.
sudo pvcreate /dev/disk/azure/scsi1/lun0-part1 sudo vgcreate vg-NW1-NFS /dev/disk/azure/scsi1/lun0-part1 sudo lvcreate -l 100%FREE -n NW1 vg-NW1-NFS sudo pvcreate /dev/disk/azure/scsi1/lun1-part1 sudo vgcreate vg-NW2-NFS /dev/disk/azure/scsi1/lun1-part1 sudo lvcreate -l 100%FREE -n NW2 vg-NW2-NFS
[A] Настройте DRBD.
sudo vi /etc/drbd.conf
Убедитесь, что файл drbd.conf содержит приведенные ниже две строки.
include "drbd.d/global_common.conf"; include "drbd.d/*.res";
Измените глобальную конфигурацию DRBD.
sudo vi /etc/drbd.d/global_common.conf
Добавьте следующие записи в разделы handlers и net.
global { usage-count no; } common { handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh"; split-brain "/usr/lib/drbd/notify-split-brain.sh root"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; } startup { wfc-timeout 0; } options { } disk { md-flushes yes; disk-flushes yes; c-plan-ahead 1; c-min-rate 100M; c-fill-target 20M; c-max-rate 4G; } net { after-sb-0pri discard-younger-primary; after-sb-1pri discard-secondary; after-sb-2pri call-pri-lost-after-sb; protocol C; tcp-cork yes; max-buffers 20000; max-epoch-size 20000; sndbuf-size 0; rcvbuf-size 0; } }
[A] Создайте устройства NFS DRBD.
sudo vi /etc/drbd.d/NW1-nfs.res
Вставьте конфигурацию для нового устройства DRBD и выйдите.
resource NW1-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } }
sudo vi /etc/drbd.d/NW2-nfs.res
Вставьте конфигурацию для нового устройства DRBD и выйдите.
resource NW2-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } }
Создайте устройство DRBD и запустите его.
sudo drbdadm create-md NW1-nfs sudo drbdadm create-md NW2-nfs sudo drbdadm up NW1-nfs sudo drbdadm up NW2-nfs
[1] Пропустите начальную синхронизацию.
sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
[1] Задайте первичный узел.
sudo drbdadm primary --force NW1-nfs sudo drbdadm primary --force NW2-nfs
[1] Подождите, пока новые устройства DRBD синхронизируются.
sudo drbdsetup wait-sync-resource NW1-nfs sudo drbdsetup wait-sync-resource NW2-nfs
[1] Создайте файловые системы на устройствах DRBD.
sudo mkfs.xfs /dev/drbd0 sudo mkdir /srv/nfs/NW1 sudo chattr +i /srv/nfs/NW1 sudo mount -t xfs /dev/drbd0 /srv/nfs/NW1 sudo mkdir /srv/nfs/NW1/sidsys sudo mkdir /srv/nfs/NW1/sapmntsid sudo mkdir /srv/nfs/NW1/trans sudo mkdir /srv/nfs/NW1/ASCS sudo mkdir /srv/nfs/NW1/ASCSERS sudo mkdir /srv/nfs/NW1/SCS sudo mkdir /srv/nfs/NW1/SCSERS sudo umount /srv/nfs/NW1 sudo mkfs.xfs /dev/drbd1 sudo mkdir /srv/nfs/NW2 sudo chattr +i /srv/nfs/NW2 sudo mount -t xfs /dev/drbd1 /srv/nfs/NW2 sudo mkdir /srv/nfs/NW2/sidsys sudo mkdir /srv/nfs/NW2/sapmntsid sudo mkdir /srv/nfs/NW2/trans sudo mkdir /srv/nfs/NW2/ASCS sudo mkdir /srv/nfs/NW2/ASCSERS sudo mkdir /srv/nfs/NW2/SCS sudo mkdir /srv/nfs/NW2/SCSERS sudo umount /srv/nfs/NW2
[A] Настройте обнаружение нескольких основных устройств DRBD.
При использовании DRBD для синхронизации данных одного узла с другим может возникнуть нескольких основных устройств. Разделенный мозг — это сценарий, в котором оба узла кластера определили устройство DRBD в качестве основного и утратили синхронизацию. Эта ситуация может возникать редко, но вам следует обработать и устранить проблему "разделенного мозга" как можно быстрее. Поэтому важно получать уведомления о возникновении нескольких основных устройств.
Ознакомьтесь с официальной документацией по DRBD, чтобы узнать, как настроить уведомление о возникновении нескольких основных устройств.
Можно также осуществить автоматическое восстановление в случае возникновения нескольких основных устройств. Дополнительные сведения см. в статье Automatic split brain recovery policies (Политики автоматического восстановления при возникновении нескольких основных устройств).
Настройка платформы кластера
[1] Добавьте в конфигурацию кластера устройства NFS DRBD для системы SAP NW1.
Внимание
В ходе последних тестов были выявлены ситуации, когда netcat перестает отвечать на запросы из-за невыполненной работы и ограничения на обработку только одного подключения. Ресурс netcat прекращает прослушивать запросы Azure Load Balancer, и плавающий IP-адрес становится недоступным.
Для существующих кластеров Pacemaker ранее рекомендовалось заменять netcat на socat. Сейчас мы рекомендуем использовать агент ресурса azure-lb, который входит в состав пакета resource-agents со следующими требованиями к версии пакета:- Минимальная версия для SLES 12 SP4/SP5 — resource-agents-4.3.018.a7fb5035-3.30.1.
- Минимальная версия для SLES 15/15 с пакетом обновления 1 (SP1) — resource-agents-4.3.0184.6ee15eb2-4.13.1.
Обратите внимание, что для этого изменения потребуется незначительное время простоя.
Если конфигурация существующих кластеров Pacemaker уже была изменена для использования socat, как описано в этой статье, немедленно переключаться на агент ресурса azure-lb не нужно.sudo crm configure rsc_defaults resource-stickiness="200" # Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW1_nfs \ ocf:linbit:drbd \ params drbd_resource="NW1-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW1_nfs drbd_NW1_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW1_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd0 \ directory=/srv/nfs/NW1 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive nfsserver systemd:nfs-server \ op monitor interval="30s" sudo crm configure clone cl-nfsserver nfsserver sudo crm configure primitive exportfs_NW1 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW1" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=1 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW1_nfs IPaddr2 \ params ip=10.0.0.4 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW1_nfs azure-lb port=61000 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW1_nfs \ fs_NW1_sapmnt exportfs_NW1 nc_NW1_nfs vip_NW1_nfs sudo crm configure order o-NW1_drbd_before_nfs inf: \ ms-drbd_NW1_nfs:promote g-NW1_nfs:start sudo crm configure colocation col-NW1_nfs_on_drbd inf: \ g-NW1_nfs ms-drbd_NW1_nfs:Master
[1] Добавьте в конфигурацию кластера устройства NFS DRBD для системы SAP NW2.
# Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW2_nfs \ ocf:linbit:drbd \ params drbd_resource="NW2-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW2_nfs drbd_NW2_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW2_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd1 \ directory=/srv/nfs/NW2 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive exportfs_NW2 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW2" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=2 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW2_nfs IPaddr2 \ params ip=10.0.0.5 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW2_nfs azure-lb port=61001 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW2_nfs \ fs_NW2_sapmnt exportfs_NW2 nc_NW2_nfs vip_NW2_nfs sudo crm configure order o-NW2_drbd_before_nfs inf: \ ms-drbd_NW2_nfs:promote g-NW2_nfs:start sudo crm configure colocation col-NW2_nfs_on_drbd inf: \ g-NW2_nfs ms-drbd_NW2_nfs:Master
Параметр
crossmnt
в ресурсах кластераexportfs
представлен в нашей документации для обеспечения обратной совместимости с более старыми версиями SLES.[1] Отключите режим обслуживания.
sudo crm configure property maintenance-mode=false
Следующие шаги
- Настройка кластера Pacemaker в SUSE Linux Enterprise Server в Azure
- Планирование и реализация виртуальных машин Azure для SAP
- Развертывание виртуальных машин Azure для SAP NetWeaver
- SAP NetWeaver на виртуальных машинах Azure. Руководство по развертыванию СУБД SQL Server
- См. сведения в статье Обеспечение высокого уровня доступности SAP HANA на виртуальных машинах Azure в SUSE Linux Enterprise Server.