Развертывание горизонтально масштабируемой системы SAP HANA с резервным узлом на виртуальных машинах Azure с помощью Azure NetApp Files в Red Hat Enterprise Linux
В этой статье описывается, как развернуть высокодоступную систему SAP HANA в конфигурации с резервированием на виртуальных машинах Hat Enterprise Linux с помощью Azure NetApp Files для томов общего хранилища.
В примерах конфигураций, командах установки и т. д. экземпляр системы HANA имеет значение 03, а ее идентификатор — HN1. Примеры основаны на HANA 2.0 SP4 и Red Hat Enterprise Linux для SAP 7.6.
Примечание.
В этой статье содержатся ссылки на термины, которые корпорация Майкрософт больше не использует. Когда эти термины будут удалены из программных продуктов, мы удалим их и из этой статьи.
Прежде чем начать, ознакомьтесь со следующими примечаниями и документацией по SAP.
- Документация по Azure NetApp Files
- К 1928533 заметки SAP относятся:
- список размеров виртуальных машин Azure, поддерживаемых для развертывания ПО SAP;
- важные сведения о доступных ресурсах для каждого размера виртуальной машины Azure;
- сведения о поддерживаемом программном обеспечении SAP и сочетаниях операционных систем и баз данных;
- сведения о требуемой версии ядра SAP для Windows и Linux в Microsoft Azure.
- В примечании к SAP 2015553 описываются предварительные требования к SAP при развертывании программного обеспечения SAP в Azure
- Примечание SAP [2002167], содержащее рекомендуемые параметры ОС для Red Hat Enterprise Linux.
- примечание к SAP 2009879, содержащее рекомендации по SAP HANA для Red Hat Enterprise Linux;
- Примечание SAP 3108302 содержит рекомендации по SAP HANA для Red Hat Enterprise Linux 9.x
- Примечание SAP 2178632, в котором содержатся подробные сведения обо всех доступных метриках мониторинга для SAP в Azure.
- Примечание SAP 2191498, в котором содержатся сведения о необходимой версии агента SAP Host Agent для Linux в Azure.
- Примечание SAP 2243692, в котором содержатся сведения о лицензировании SAP для Linux в Azure.
- Примечание SAP 1999351, в котором содержатся дополнительные сведения об устранении неполадок, связанных с расширением для расширенного мониторинга Azure для SAP.
- Примечание SAP 1900823, в котором содержатся сведения о требованиях к хранилищу SAP HANA.
- Вики-сайт сообщества SAP, который содержит все необходимые примечания SAP для Linux.
- SAP NetWeaver на виртуальных машинах Linux. Руководство по планированию и внедрению
- Развертывание программного обеспечения SAP на виртуальных машинах Linux в Azure
- Развертывание СУБД Виртуальных машин Azure для SAP на Linux.
- Общая документация по RHEL
- Документация по RHEL для конкретной службы Azure:
- Тома NFS версии 4.1 в Azure NetApp Files для SAP HANA
Обзор
Одним из способов достижения высокого уровня доступности HANA является настройка автоматической отработки отказа узла. Чтобы настроить автоматическую отработку отказа узла, добавьте одну или несколько виртуальных машин в систему HANA и настройте их в качестве резервных узлов. При сбое активного узла происходит автоматический переход на резервный узел. В представленной конфигурации с виртуальными машинами Azure вы достигаете автоматической отработки отказа с помощью NFS на Azure NetApp Files.
Примечание.
Для резервного узла требуется доступ ко всем томам базы данных. Тома HANA должны быть подключены как тома NFSv4. Улучшенный механизм блокировки на основе аренды файлов в протоколе NFSv4 используется для ограждения I/O
.
Внимание
Чтобы создать поддерживаемую конфигурацию, необходимо развернуть тома HANA и журнальные тома как тома NFSv4.1 и подключить их с помощью протокола NFSv4.1. Конфигурация автоматической отработки отказа узла HANA с резервным узлом не поддерживается для NFSv3.
На предыдущей схеме, которая соответствует сетевым рекомендациям для SAP HANA, три подсети представлены в одной виртуальной сети Azure:
- для связи с клиентами;
- для связи с системой хранения данных;
- для обмена данными между узлами SAP HANA.
Тома NetApp для Azure находятся в отдельной подсети, делегированной Azure NetApp Files.
Для этого примера конфигурации подсетями являются следующие адреса:
client
10.9.1.0/26storage
10.9.3.0/26hana
10.9.2.0/26anf
10.9.0.0/26 (делегирование подсети в Azure NetApp Files)
Настройка инфраструктуры Azure NetApp Files
Прежде чем продолжить настройку инфраструктуры Azure NetApp Files, ознакомьтесь с документацией по Azure NetApp Files.
Служба Azure NetApp Files доступна в нескольких регионах Azure. Проверьте, предоставляется ли служба Azure NetApp Files в выбранном регионе Azure.
Перейдите по приведенной ниже ссылке, чтобы узнать о доступности службы Azure NetApp Files по регионам Azure: Доступность Azure NetApp Files по региону Azure.
Важные замечания
При создании томов Azure NetApp Files для горизонтального масштабирования SAP HANA с использованием сценария изолированных узлов следует учитывать важные рекомендации, описанные в томах NFS версии 4.1 в Azure NetApp Files для SAP HANA.
Выбор размера базы данных HANA в Azure NetApp Files
Пропускная способность тома Azure NetApp Files зависит от размера тома и уровня обслуживания, как описано в разделе Уровни обслуживания для Azure NetApp Files.
При разработке инфраструктуры SAP HANA в Azure с помощью Azure NetApp Files помните о рекомендациях в томах NFS версии 4.1 в Azure NetApp Files для SAP HANA.
Конфигурация в этой статье представлена простыми томами Azure NetApp Files.
Внимание
Для производственных систем, где производительность является ключевым, рекомендуется оценить и рассмотреть возможность использования группы томов приложений Azure NetApp Files для SAP HANA.
Развертывание ресурсов Azure NetApp Files
В следующих инструкциях предполагается, что вы уже развернули виртуальную сеть Azure. Ресурсы Azure NetApp Files и виртуальные машины, к которым будут подключаться ресурсы Azure NetApp Files, должны быть развернуты в одной виртуальной сети Azure или в одноранговых виртуальных сетях Azure.
Создайте учетную запись NetApp в выбранном регионе Azure, следуя инструкциям в разделе Создание учетной записи NetApp.
Настройте пул емкости Azure NetApp Files, следуя инструкциям по настройке пула емкости Azure NetApp Files.
В архитектуре HANA, представленной в этой статье, используется один пул емкости Azure NetApp Files с уровнем обслуживания Ультра. Для рабочих нагрузок HANA в Azure рекомендуется использовать уровень обслуживанияAzure NetApp Files Ультра или Премиум.
Делегируйте подсеть в Azure NetApp Files согласно инструкциям по делегированию подсети в Azure NetApp Files.
Разверните тома Azure NetApp Files, следуя инструкциям по созданию тома NFS для Azure NetApp Files.
При развертывании томов обязательно выберите версию NFSv4.1. Разверните тома в выделенной подсети Azure NetApp Files. IP-адреса томов Azure NetApp Files назначаются автоматически.
Учтите, что ресурсы Azure NetApp Files и виртуальные машины Azure должны находиться в одной виртуальной сети Azure или в одноранговых виртуальных сетях Azure. Например, HN1-Data-Mnt00001, HN1-log-mnt00001 и т. д. — это имена томов, а NFS://10.9.0.4/HN1-Data-mnt00001, NFS://10.9.0.4/HN1-log-mnt00001 и т. д. — это пути к файлам на томах Azure NetApp Files.
- volume HN1-data-mnt00001 (nfs://10.9.0.4/HN1-data-mnt00001)
- volume HN1-data-mnt00002 (nfs://10.9.0.4/HN1-data-mnt00002)
- volume HN1-log-mnt00001 (nfs://10.9.0.4/HN1-log-mnt00001)
- volume HN1-log-mnt00002 (nfs://10.9.0.4/HN1-log-mnt00002)
- volume HN1-shared (nfs://10.9.0.4/HN1-shared)
В этом примере мы использовали отдельный том Azure NetApp Files для каждого тома данных HANA и журнального тома. Для более производительной конфигурации, оптимизированной для небольших или непродуктивных систем, можно разместить все подключения к данным на одном томе, все журналы на отдельном другом томе.
Развертывание виртуальных машин Linux с помощью портала Azure
Сначала необходимо создать тома Azure NetApp Files. Затем сделайте следующее.
Создайте подсети виртуальной сети Azure в вашей виртуальной сети Azure.
Разверните виртуальные машины.
Создайте дополнительные сетевые интерфейсы и подключите сетевые интерфейсы к соответствующим виртуальным машинам.
Каждая виртуальная машина имеет три сетевых интерфейса, которые соответствуют трем подсетям виртуальной сети Azure (
client
,storage
иhana
).Дополнительные сведения см. в статье Создание виртуальной машины Linux в Azure с несколькими сетевыми картами.
Внимание
Для рабочих нагрузок SAP HANA низкий показатель задержки чрезвычайно важен. Чтобы добиться низких значений задержки, пообщайтесь с представителями корпорации Майкрософт. Так виртуальные машины и тома Azure NetApp Files развернуты близко друг от друга. При подключении новой системы SAP HANA, которая использует SAP HANA Azure NetApp Files, отправьте необходимые сведения.
В следующих инструкциях предполагается, что вы уже создали группу ресурсов, виртуальную сеть Azure и три подсети виртуальной сети Azure: client
, storage
и hana
. При развертывании виртуальных машин выберите подсеть клиента, чтобы сетевой интерфейс клиента был основным интерфейсом на виртуальных машинах. Кроме того, необходимо настроить явный маршрут к делегированной подсети Azure NetApp Files через шлюз подсети хранилища.
Внимание
Убедитесь, что выбранная операционная система была сертифицирована для использования SAP HANA на конкретных типах виртуальных машин. Список сертифицированных для SAP HANA типов виртуальных машин и выпусков ОС доступен на сайте Certified and Supported SAP HANA® Hardware (Сертифицированное и поддерживаемое оборудование SAP HANA®). Чтобы просмотреть подробные сведения о поддерживаемых SAP HANA на определенных типах виртуальных машин выпусках ОС, щелкните необходимый тип виртуальной машины.
Создайте группу доступности для SAP HANA. Убедитесь, что задан максимальный домен обновления.
Создайте три виртуальные машины (hanadb1, hanadb2 и hanadb3), выполнив следующие действия.
a. Используйте образ Red Hat Enterprise Linux в коллекции Azure, который поддерживается для SAP HANA. В этом примере мы использовали образ RHEL-SAP-HA 7.6.
b. Выберите ранее созданную группу доступности для SAP HANA.
c. Выберите подсеть виртуальной сети Azure для клиента. Выберите Ускоренная сеть.
При развертывании виртуальных машин имя сетевого интерфейса создается автоматически. В этих инструкциях мы будем называть автоматически создаваемые сетевые интерфейсы, подключенные к подсети виртуальной сети Azure клиента, такие как hanadb1-Client, hanadb2-Client и hanadb3-Client.
Создайте три сетевых интерфейса, по одному для каждой виртуальной машины, для
storage
подсети виртуальной сети (в этом примере — hanadb1-storage, hanadb2-storage и hanadb3-storage).Создайте три сетевых интерфейса, по одному для каждой виртуальной машины, для
hana
подсети виртуальной сети (в этом примере — hanadb1-hana, hanadb2-hana и hanadb3-hana).Подключите вновь созданные виртуальные сетевые интерфейсы к соответствующим виртуальным машинам, выполнив следующие действия.
a. Перейдите к виртуальной машине на портале Azure.
b. В меню слева выберите Виртуальные машины. Выполните фильтрацию по имени виртуальной машины (например, hanadb1), а затем выберите виртуальную машину.
c. В области Обзор выберите Остановить, чтобы освободить виртуальную машину.
d. Выберите Сеть, а затем подключите сетевой интерфейс. Из раскрывающегося списка Подключение сетевого интерфейса выберите уже созданные сетевые интерфейсы для подсетей
storage
иhana
.д) Выберите Сохранить.
f. Повторите шаги с б) по д) для оставшихся виртуальных машин (в нашем примере — hanadb2 и hanadb3).
ж. Пока оставьте виртуальные машины в остановленном состоянии. Далее мы включим функцию ускорения сети для всех новых подключенных сетевых интерфейсов.
Включите ускорение сети для дополнительных сетевых интерфейсов для подсетей
storage
иhana
, выполнив следующие действия.a. Откройте Azure Cloud Shell на портале Azure.
b. Выполните следующие команды, чтобы включить ускоренную сеть для дополнительных сетевых интерфейсов, подключенных к подсетям
storage
иhana
.az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb1-storage --accelerated-networking true az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb2-storage --accelerated-networking true az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb3-storage --accelerated-networking true az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb1-hana --accelerated-networking true az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb2-hana --accelerated-networking true az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hanadb3-hana --accelerated-networking true
Запустите виртуальные машины, выполнив следующие действия.
a. В меню слева выберите Виртуальные машины. Выполните фильтрацию по имени виртуальной машины (например, hanadb1), а затем выберите ее.
b. В области Обзор выберите Запуск.
Настройка и подготовка операционной системы
Инструкции в следующих разделах начинаются с одной из следующих версий.
- [A]: применимо ко всем узлам;
- [1]: применимо только к узлу 1;
- [2]: применимо только к узлу 2.
- [3]: применимо только к узлу 3
Настройте и подготовьте ОС, выполнив следующие действия.
[A]: сохраните файлы узлов на виртуальных машинах. Включите в них записи для всех подсетей. Для этого примера в
/etc/hosts
были добавлены приведенные ниже записи.# Storage 10.9.3.4 hanadb1-storage 10.9.3.5 hanadb2-storage 10.9.3.6 hanadb3-storage # Client 10.9.1.5 hanadb1 10.9.1.6 hanadb2 10.9.1.7 hanadb3 # Hana 10.9.2.4 hanadb1-hana 10.9.2.5 hanadb2-hana 10.9.2.6 hanadb3-hana
[A] Добавьте сетевой маршрут, чтобы связь с Azure NetApp Files проходила через сетевой интерфейс хранилища.
В этом примере будет использоваться
Networkmanager
для настройки дополнительного сетевого маршрута. В следующих инструкциях предполагается, что сетевой интерфейс хранилища имеет значениеeth1
.
Сначала определите имя подключения для устройстваeth1
. В этом примере имя устройства —eth1
isWired connection 1
.# Execute as root nmcli connection # Result #NAME UUID TYPE DEVICE #System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0 #Wired connection 1 4b0789d1-6146-32eb-83a1-94d61f8d60a7 ethernet eth1
Затем настройте дополнительный маршрут к Azure NetApp Files делегированной сети через
eth1
.# Add the following route # ANFDelegatedSubnet/cidr via StorageSubnetGW dev StorageNetworkInterfaceDevice nmcli connection modify "Wired connection 1" +ipv4.routes "10.9.0.0/26 10.9.3.1"
Перезагрузите виртуальную машину, чтобы активировать изменения.
[A]: установите пакет клиента NFS.
yum install nfs-utils
[A] Подготовьте ОС для запуска SAP HANA в Azure NetApp с NFS, как описано в примечании SAP 3024346 — Параметры ядра Linux для NetApp NFS. Создайте файл /etc/sysctl.d/91-NetApp-HANA.conf для параметров конфигурации NetApp.
vi /etc/sysctl.d/91-NetApp-HANA.conf # Add the following entries in the configuration file net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 131072 16777216 net.ipv4.tcp_wmem = 4096 16384 16777216 net.core.netdev_max_backlog = 300000 net.ipv4.tcp_slow_start_after_idle=0 net.ipv4.tcp_no_metrics_save = 1 net.ipv4.tcp_moderate_rcvbuf = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_sack = 1
[A] Создайте файл конфигурации /etc/sysctl.d/ms-az.conf с дополнительными параметрами оптимизации.
vi /etc/sysctl.d/ms-az.conf # Add the following entries in the configuration file net.ipv6.conf.all.disable_ipv6 = 1 net.ipv4.tcp_max_syn_backlog = 16348 net.ipv4.conf.all.rp_filter = 0 sunrpc.tcp_slot_table_entries = 128 vm.swappiness=10
Совет
Не следует явно задавать net.ipv4.ip_local_port_range и net.ipv4.ip_local_reserved_ports в файлах конфигурации sysctl, чтобы разрешить агенту узла SAP управлять диапазонами портов. Дополнительные сведения см. в примечании к SAP 2382421.
[A] Настройте параметры sunrpc, как рекомендуется в примечании SAP 3024346 — Параметры ядра Linux для NetApp NFS.
vi /etc/modprobe.d/sunrpc.conf # Insert the following line options sunrpc tcp_max_slot_table_entries=128
[A] Настройка Red Hat для HANA.
Настройте RHEL, как описано в примечаниях к SAP 2292690, 2455582, 2593824 и примечании к Red Hat 2447641.
Примечание.
При установке HANA 2.0 SP04 вам потребуется установить пакет
compat-sap-c++-7
, как описано в примечании SAP 2593824, прежде чем можно будет установить SAP HANA.
Монтируйте тома Azure NetApp Files
[A] Создайте точки подключения для томов базы данных HANA.
mkdir -p /hana/data/HN1/mnt00001 mkdir -p /hana/data/HN1/mnt00002 mkdir -p /hana/log/HN1/mnt00001 mkdir -p /hana/log/HN1/mnt00002 mkdir -p /hana/shared mkdir -p /usr/sap/HN1
[1] Создайте каталоги узлов для/usr/sap на HN1-shared.
# Create a temporary directory to mount HN1-shared mkdir /mnt/tmp # if using NFSv3 for this volume, mount with the following command mount 10.9.0.4:/HN1-shared /mnt/tmp # if using NFSv4.1 for this volume, mount with the following command mount -t nfs -o sec=sys,nfsvers=4.1 10.9.0.4:/HN1-shared /mnt/tmp cd /mnt/tmp mkdir shared usr-sap-hanadb1 usr-sap-hanadb2 usr-sap-hanadb3 # unmount /hana/shared cd umount /mnt/tmp
[A] Проверьте параметры домена NFS. Убедитесь, что домен настроен в качестве домена Azure NetApp Files по умолчанию, т. е.
defaultv4iddomain.com
, а для сопоставления установлено значение Никто.Внимание
Обязательно укажите домен NFS в
/etc/idmapd.conf
виртуальной машине в соответствии с конфигурацией домена по умолчанию в Azure NetApp Files:defaultv4iddomain.com
. В случае несоответствия между конфигурацией домена на клиенте NFS (т. е. виртуальной машине) и NFS-сервере (т. е. конфигурацией Azure NetApp) разрешения для файлов на томах NetApp в Azure, подключенных к виртуальным машинам, будут отображаться какnobody
.sudo cat /etc/idmapd.conf # Example [General] Domain = defaultv4iddomain.com [Mapping] Nobody-User = nobody Nobody-Group = nobody
[A] Проверьте параметр
nfs4_disable_idmapping
. Оно должно иметь значение Y. Чтобы создать структуру каталогов, гдеnfs4_disable_idmapping
находится, выполните команду подключения. Вы не сможете вручную создать каталог в /sys/modules, так как доступ зарезервирован для ядра или драйверов.# Check nfs4_disable_idmapping cat /sys/module/nfs/parameters/nfs4_disable_idmapping # If you need to set nfs4_disable_idmapping to Y mkdir /mnt/tmp mount 10.9.0.4:/HN1-shared /mnt/tmp umount /mnt/tmp echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping # Make the configuration permanent echo "options nfs nfs4_disable_idmapping=Y" >> /etc/modprobe.d/nfs.conf
Дополнительные сведения об изменении параметра
nfs4_disable_idmapping
см. в разделе https://access.redhat.com/solutions/1749883.[A] Подключите общие тома Azure NetApp Files.
sudo vi /etc/fstab # Add the following entries 10.9.0.4:/HN1-data-mnt00001 /hana/data/HN1/mnt00001 nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 10.9.0.4:/HN1-data-mnt00002 /hana/data/HN1/mnt00002 nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 10.9.0.4:/HN1-log-mnt00001 /hana/log/HN1/mnt00001 nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 10.9.0.4:/HN1-log-mnt00002 /hana/log/HN1/mnt00002 nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 10.9.0.4:/HN1-shared/shared /hana/shared nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 # Mount all volumes sudo mount -a
Для рабочих нагрузок, требующих более высокой пропускной способности, рассмотрите возможность
nconnect
подключения, как описано в томах NFS версии 4.1 в Azure NetApp Files для SAP HANA. Проверьте, поддерживается лиnconnect
Azure NetApp Files в выпуске Linux.[1] Подключите тома конкретного узла к hanadb1.
sudo vi /etc/fstab # Add the following entries 10.9.0.4:/HN1-shared/usr-sap-hanadb1 /usr/sap/HN1 nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 # Mount the volume sudo mount -a
[2] Подключите тома конкретного узла к hanadb2.
sudo vi /etc/fstab # Add the following entries 10.9.0.4:/HN1-shared/usr-sap-hanadb2 /usr/sap/HN1 nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 # Mount the volume sudo mount -a
[3] Подключите тома конкретного узла к hanadb3.
sudo vi /etc/fstab # Add the following entries 10.9.0.4:/HN1-shared/usr-sap-hanadb3 /usr/sap/HN1 nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 0 0 # Mount the volume sudo mount -a
[A] Убедитесь, что все тома HANA подключены с помощью протокола NFS версии NFSv4.
sudo nfsstat -m # Verify that flag vers is set to 4.1 # Example from hanadb1 /hana/data/HN1/mnt00001 from 10.9.0.4:/HN1-data-mnt00001 Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.9.3.4,local_lock=none,addr=10.9.0.4 /hana/log/HN1/mnt00002 from 10.9.0.4:/HN1-log-mnt00002 Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.9.3.4,local_lock=none,addr=10.9.0.4 /hana/data/HN1/mnt00002 from 10.9.0.4:/HN1-data-mnt00002 Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.9.3.4,local_lock=none,addr=10.9.0.4 /hana/log/HN1/mnt00001 from 10.9.0.4:/HN1-log-mnt00001 Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.9.3.4,local_lock=none,addr=10.9.0.4 /usr/sap/HN1 from 10.9.0.4:/HN1-shared/usr-sap-hanadb1 Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.9.3.4,local_lock=none,addr=10.9.0.4 /hana/shared from 10.9.0.4:/HN1-shared/shared Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.9.3.4,local_lock=none,addr=10.9.0.4
Установка
В этом примере для развертывания SAP HANA в конфигурации с горизонтальным увеличением масштаба с резервным узлом Azure мы использовали HANA 2.0 SP4.
Подготовка к установке SAP HANA
[A] Перед установкой HANA задайте корневой пароль. После завершения установки можно будет отключить корневой пароль. Выполните как
root
командуpasswd
.[1] Убедитесь, что вы можете войти с помощью SSH в hanadb2 и hanadb3без запроса пароля.
ssh root@hanadb2 ssh root@hanadb3
[A] Установите дополнительные пакеты, необходимые для HANA 2.0 SP4. Дополнительные сведения см. в примечании к SAP 2593824.
yum install libgcc_s1 libstdc++6 compat-sap-c++-7 libatomic1
[2], [3] Измените владельца каталогов SAP HANA
data
иlog
на hn1adm.# Execute as root sudo chown hn1adm:sapsys /hana/data/HN1 sudo chown hn1adm:sapsys /hana/log/HN1
[A] Временно отключите брандмауэр, чтобы он не влиял на установку HANA. После завершения установки HANA его можно включить снова.
# Execute as root systemctl stop firewalld systemctl disable firewalld
Установка HANA
[1] Установите SAP Hana, следуя инструкциям из руководства по установке и обновлению SAP HANA 2.0. В этом примере мы устанавливаем SAP HANA с горизонтальным увеличением масштаба с главным, одним рабочим и одним резервным узлом.
a. Запустите программу hdblcm из каталога с установочным программным обеспечением HANA. Используйте параметр
internal_network
и передайте диапазон адресов подсети, используемой для обмена данными между узлами HANA../hdblcm --internal_network=10.9.2.0/26
b. Введите следующие значения на запрос в командной строке:
- На запрос Choose an action (Выберите действие): введите 1 (установка).
- На запрос Additional components for installation (Выберите дополнительные компоненты для установки): введите 2, 3.
- Для пути установки: нажмите клавишу ВВОД (путь по умолчанию — /hana/shared).
- На запрос Local Host Name (Имя локального узла): нажмите клавишу ВВОД, чтобы принять значение по умолчанию.
- На запрос Желаете добавить узлы в систему? введите y
- На запрос Добавить имена узлов с разделителями-запятыми: введите hanadb2, hanadb3
- На запрос Имя привилегированного пользователя [root]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- Для ролей узла hanadb2: введите 1 (для рабочей роли)
- На запрос Группа отработки отказа узла для узла hanadb2 [default]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- На запрос Storage Partition Number (Номер раздела хранилища) для хоста hanadb2 [<<назначать автоматически>>]: нажмите клавишу Enter, чтобы принять значение по умолчанию
- На запрос Рабочая группа для узла hanadb2 [default]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- На запрос Выберите роли для узла hanadb3: введите 2 (режим ожидания)
- На запрос Группа отработки отказа узла для узла hanadb3 [default]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- На запрос Рабочая группа для узла hanadb3 [default]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- На запрос SAP HANA System ID (Идентификатор системы SAP HANA): введите HN1.
- На запрос Instance number [00] (Номер экземпляра [00]): введите 03.
- На запрос Local Host Worker Group [default] (Рабочая группа локального узла [по умолчанию]): нажмите клавишу ВВОД, чтобы принять значение по умолчанию.
- На запрос Select System Usage / Enter index [4] (Выберите использование системы или введите индекс [4]): введите 4 (пользовательское значение).
- На запрос Location of Data Volumes [/hana/hata/HN1] (Расположение томов данных [/hana/hata/HN1]): нажмите клавишу ВВОД, чтобы принять значение по умолчанию.
- На запрос Location of Log Volumes [/hana/hata/HN1] (Расположение томов журналов [/hana/hata/HN1]): нажмите клавишу ВВОД, чтобы принять значение по умолчанию.
- На запрос Restrict maximum memory allocation? [n] (Ограничить максимальное выделение памяти? [n]): введите n.
- На запрос Имя узла сертификата для узла hanadb1 [hanadb1]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- На запрос Имя узла сертификата для узла hanadb2 [hanadb2]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- На запрос Имя узла сертификата для узла hanadb3 [hanadb3]: нажмите клавишу ВВОД, чтобы принять значение по умолчанию
- На запрос System Administrator (hn1adm) Password (Пароль системного администратора (hn1adm)): введите пароль.
- На запрос System Database User (system) Password (Пароль пользователя системной базы данных (system)): введите пароль системы.
- На запрос Confirm System Database User (system) Password (Подтвердите пароль пользователя системной базы данных (system)): еще раз введите пароль системы.
- На запрос Restart system after machine reboot? (Перезапустить систему после перезагрузки компьютера?) [n]: введите n
- На запрос Do you want to continue (y/n)? (Продолжить (да или нет)?): проверьте сводку и, если все настроено правильно, введите y (Да).
[1] Проверьте файл global.ini
Откройте файл global.ini и убедитесь, что конфигурация внутреннего взаимодействия между узлами SAP HANA настроена. Проверьте раздел communication. В нем должен быть указан диапазон адресов для подсети
hana
, а параметрlisteninterface
должен иметь значение.internal
. Проверьте раздел internal_hostname_resolution. Он должен содержать IP-адреса виртуальных машин HANA, принадлежащих к подсетиhana
.sudo cat /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini # Example #global.ini last modified 2019-09-10 00:12:45.192808 by hdbnameserve [communication] internal_network = 10.9.2.0/26 listeninterface = .internal [internal_hostname_resolution] 10.9.2.4 = hanadb1 10.9.2.5 = hanadb2 10.9.2.6 = hanadb3
[1] Добавьте сопоставление узлов, чтобы обеспечить использование IP-адресов клиента для связи между клиентами. Добавьте раздел
public_host_resolution
и добавьте соответствующие IP-адреса из подсети клиента.sudo vi /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini #Add the section [public_hostname_resolution] map_hanadb1 = 10.9.1.5 map_hanadb2 = 10.9.1.6 map_hanadb3 = 10.9.1.7
[1] Перезапустите SAP HANA, чтобы активировать изменения.
sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem HDB sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem HDB
[1] Убедитесь, что клиентский интерфейс будет использовать IP-адреса из подсети
client
для обмена данными.# Execute as hn1adm /usr/sap/HN1/HDB03/exe/hdbsql -u SYSTEM -p "password" -i 03 -d SYSTEMDB 'select * from SYS.M_HOST_INFORMATION'|grep net_publicname # Expected result "hanadb3","net_publicname","10.9.1.7" "hanadb2","net_publicname","10.9.1.6" "hanadb1","net_publicname","10.9.1.5"
Сведения о том, как проверить конфигурацию, см. в примечании SAP 2183363 - Configuration of SAP HANA internal network (2183363: настройка внутренней сети SAP HANA).
[A] Затем снова включите брандмауэр.
Остановка HANA
sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem HDB
Повторно включите брандмауэр.
# Execute as root systemctl start firewalld systemctl enable firewalld
Откройте необходимые порты брандмауэра
Внимание
Создайте правила брандмауэра, разрешающие передачу трафика репликации системы HANA и клиентов. Требуемые порты перечислены в разделе Порты TCP/IP для всех продуктов SAP. Следующие команды приведены исключительно в качестве примера. В этом сценарии используется номер системы 03.
# Execute as root sudo firewall-cmd --zone=public --add-port={30301,30303,30306,30307,30313,30315,30317,30340,30341,30342,1128,1129,40302,40301,40307,40303,40340,50313,50314,30310,30302}/tcp --permanent sudo firewall-cmd --zone=public --add-port={30301,30303,30306,30307,30313,30315,30317,30340,30341,30342,1128,1129,40302,40301,40307,40303,40340,50313,50314,30310,30302}/tcp
Запуск HANA
sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem HDB
Чтобы оптимизировать SAP HANA под базовое хранилище Azure NetApp Files, задайте следующие параметры SAP HANA.
max_parallel_io_requests
128async_read_submit
onasync_write_submit_active
onasync_write_submit_blocks
all
Дополнительные сведения приведены в статье Конфигурации стека ввода-вывода для SAP HANA.
Начиная с систем SAP HANA 2.0 параметры можно задать в
global.ini
. Дополнительные сведения см. в примечании к SAP 1999930.Для систем SAP HANA 1.0 версии SPS12 и более ранних эти параметры можно настроить во время установки, как описано в примечании к SAP 2267798.
Хранилище, используемое Azure NetApp Files, имеет ограничение размера файла, равное 16 терабайтам (ТБ). SAP HANA не осведомлена неявно об ограничениях размера хранилища и не будет создавать новый файл данных при достижении предельного размера файла в 16 ТБ. Так как SAP HANA попытается увеличивать размер файла за пределы 16 ТБ, эта попытка приведет к ошибкам и, в конце концов, к сбою сервера индексации.
Внимание
Чтобы SAP HANA не пыталась увеличивать размер файлов данных за пределы 16 ТБ подсистемы хранения, задайте следующие параметры в
global.ini
.
Тестовая отработка отказа SAP HANA
Имитация сбоя узла на рабочем узле SAP HANA. Выполните следующие действия.
a. Прежде чем имитировать сбой узла, выполните следующие команды в качестве hn1adm, чтобы записать состояние среды.
# Check the landscape status python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | hanadb1 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | | hanadb2 | yes | ok | | | 2 | 2 | default | default | master 2 | slave | worker | slave | worker | worker | default | default | | hanadb3 | yes | ignore | | | 0 | 0 | default | default | master 3 | slave | standby | standby | standby | standby | default | - | # Check the instance status sapcontrol -nr 03 -function GetSystemInstanceList GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN
b. Для имитации сбоя узла выполните следующую команду в качестве привилегированного пользователя на рабочем узле, hanadb2 в этом случае.
echo b > /proc/sysrq-trigger
c. Наблюдайте за системой до завершения отработки отказа. После завершения отработки отказа запишите состояние, которое должно выглядеть следующим образом.
# Check the instance status sapcontrol -nr 03 -function GetSystemInstanceList GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GRAY hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN # Check the landscape status python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | hanadb1 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | | hanadb2 | no | info | | | 2 | 0 | default | default | master 2 | slave | worker | standby | worker | standby | default | - | | hanadb3 | yes | info | | | 0 | 2 | default | default | master 3 | slave | standby | slave | standby | worker | default | default |
Внимание
При возникновении аварии ядра не следует задерживать отработку отказа SAP HANA. Установите значение
kernel.panic
на 20 секунд на всех виртуальных машинах HANA. Настройка выполняется в/etc/sysctl
. Перезагрузите виртуальные машины, чтобы активировать изменение. Если это изменение не выполняется, отработка отказа может занять 10 или более минут, если на узле возникла авария ядра.Удалите сервер имен, выполнив следующие действия.
a. Перед тестированием проверьте состояние среды, выполнив следующие команды в качестве hn1adm:
#Landscape status python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | hanadb1 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | | hanadb2 | yes | ok | | | 2 | 2 | default | default | master 2 | slave | worker | slave | worker | worker | default | default | | hanadb3 | yes | ignore | | | 0 | 0 | default | default | master 3 | slave | standby | standby | standby | standby | default | - | # Check the instance status sapcontrol -nr 03 -function GetSystemInstanceList GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN
b. Выполните следующие команды в качестве hn1adm на активном главном узле, hanadb1 в этом случае.
hn1adm@hanadb1:/usr/sap/HN1/HDB03> HDB kill
Резервный узел hanadb3 войдет в работу в качестве главного узла. Ниже приведено состояние ресурса после завершения теста отработки отказа.
# Check the instance status sapcontrol -nr 03 -function GetSystemInstanceList GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GRAY # Check the landscape status python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | hanadb1 | no | info | | | 1 | 0 | default | default | master 1 | slave | worker | standby | worker | standby | default | - | | hanadb2 | yes | ok | | | 2 | 2 | default | default | master 2 | slave | worker | slave | worker | worker | default | default | | hanadb3 | yes | info | | | 0 | 1 | default | default | master 3 | master | standby | master | standby | worker | default | default |
c. Перезапустите экземпляр HANA на hanadb1 (то есть на той же виртуальной машине, где был уничтожен сервер имен). Узел hanadb1 повторно присоединится к среде и сохранит свою резервную роль.
hn1adm@hanadb1:/usr/sap/HN1/HDB03> HDB start
После запуска SAP HANA в hanadb1 должно быть указано следующее состояние.
# Check the instance status sapcontrol -nr 03 -function GetSystemInstanceList GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN # Check the landscape status python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | hanadb1 | no | info | | | 1 | 0 | default | default | master 1 | slave | worker | standby | worker | standby | default | - | | hanadb2 | yes | ok | | | 2 | 2 | default | default | master 2 | slave | worker | slave | worker | worker | default | default | | hanadb3 | yes | info | | | 0 | 1 | default | default | master 3 | master | standby | master | standby | worker | default | default |
d. Опять же, остановите сервер имен на активном в данный момент главном узле (то есть на узле hanadb3).
hn1adm@hanadb3:/usr/sap/HN1/HDB03> HDB kill
Узел hanadb1 возобновит роль главного узла. После завершения теста отработки отказа состояние будет выглядеть следующим образом.
# Check the instance status sapcontrol -nr 03 -function GetSystemInstanceList GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GRAY hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN # Check the landscape status python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | hanadb1 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | | hanadb2 | yes | ok | | | 2 | 2 | default | default | master 2 | slave | worker | slave | worker | worker | default | default | | hanadb3 | no | ignore | | | 0 | 0 | default | default | master 3 | slave | standby | standby | standby | standby | default | - |
д) Запустите SAP HANA в hanadb3, который будет готов к работе в качестве резервного узла.
hn1adm@hanadb3:/usr/sap/HN1/HDB03> HDB start
После запуска SAP HANA в hanadb3 состояние выглядит следующим образом.
# Check the instance status sapcontrol -nr 03 -function GetSystemInstanceList & python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus hanadb2, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN hanadb3, 3, 50313, 50314, 0.3, HDB|HDB_STANDBY, GREEN hanadb1, 3, 50313, 50314, 0.3, HDB|HDB_WORKER, GREEN # Check the landscape status python /usr/sap/HN1/HDB03/exe/python_support/landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | hanadb1 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | | hanadb2 | yes | ok | | | 2 | 2 | default | default | master 2 | slave | worker | slave | worker | worker | default | default | | hanadb3 | no | ignore | | | 0 | 0 | default | default | master 3 | slave | standby | standby | standby | standby | default | - |
Следующие шаги
- Планирование и реализация виртуальных машин Azure для SAP
- Развертывание виртуальных машин Azure для SAP NetWeaver
- SAP NetWeaver на виртуальных машинах Azure. Руководство по развертыванию СУБД SQL Server
- Тома NFS версии 4.1 в Azure NetApp Files для SAP HANA
- Чтобы узнать больше об обеспечении высокого уровня доступности и планировании аварийного восстановления SAP HANA на виртуальных машинах Azure, ознакомьтесь со статьей Высокий уровень доступности SAP HANA на виртуальных машинах Azure.