11 февраля 2020 г.

SAP системы в виртуальной среде VMware - II

В первой части статьи я вкратце описал что собой представляет типовая архитектура виртуального кластера VMware.

Теперь поговорим об отношениях между SAP и VMware.


Тот проект, в котором я участвовал, представлял собой перенос систем SAP на платформу Linux/Oracle. В качестве дистрибутива Linux использовался SUSE Linux Enterprise Server for SAP Applications. Так что учитывайте, что следующая информация и перечень рекомендаций, который я привожу, были собраны для выбранной платформы. Хотя, конечно же, большая часть знаний носит универсальный характер и пригодится всем кто разворачивает SAP в виртуальной среде.

Для начала, источники информации, которые я использовал:

Рассмотрим рекомендации по настройке BIOS.
  1. Включить все возможные опции поддержки аппаратной виртуализации - VT-x, AMD-V, EPT, RVI, VT-d , AMD-Vi.
  2. Выключить опцию "Node Interleaving" для включения поддержки NUMA. NUMA это фишка современных мультипроцессорных систем, которая заключается в разной скорости доступа к разным банкам памяти от разных процессоров. Проще говоря, у каждого процессора есть свои банки памяти, к которым доступ осуществляется гораздо быстрее, чем к банкам памяти соседнего процессора. И программное обеспечение с поддержкой NUMA понимает это и старается работать только с банками памяти текущего процессора, не обращаясь к "дорогой" памяти.
  3. Включить опции ускорения "Turbo Mode" и "Hyper-Threading". C Hyper-Threading ситуация такая: активировать его надо, но при распределении виртуальных ядер между виртуальными машинами на них рассчитывать не стоит.
  4. Выключить опции "Power-Saving", "C1E Halt State", а "Power Management" включить в режим "OS Controlled Mode".
  5. Использовать профиль "Max performance" и/или "Max virtualization". У некоторых вендоров (например, HPE) есть отдельные профили при использовании серверов в составе VMware кластера.
  6. Максимально отключить ненужные устройства.

Второй пункт нашей программы - рекомендации по настройке ESXi и виртуальных машин.
  1. Технология VMware DRS не поддерживается SAP. DRS (Distributed Resource Scheduler) это технология автоматического выравнивания нагрузки на узлах в виртуальном кластере за счёт переноса работающих виртуальных машин между узлами. Технология позволяет выравнивать нагрузку, что положительно влияет на питание и охлаждение стоек в серверной. 
  2. Рекомендуется использовать специальную файловую систему VMFS и хранить виртуальную машину в виде отдельных файлов, а не использовать VMware RDM. RDM (Raw Device Mapping) это тип хранения файлов виртуальных машин на сырых дисках специального формата. Аналог RAW-дисков для хранения файлов базы данных ORACLE.
  3. При распределении ресурсов процессора считать, что 1 vCPU = 1 physical core (не учитывать логические ядра Hyper-Threading). ESXi сам распределяет ядра виртуальных машин по физическим ядрам. Стараться конфигурировать виртуальные машины по CPU и RAM внутри одной NUMA ноды. Поэтому я считаю очень важным понимание топологии NUMA на этапе сайзинга физических серверов. Рассчитывайте так, чтобы самая большая ваша виртуальная машина влезла в одну NUMA ноду, как по памяти, так и по процессорным ядрам. Функцию добавления процессорных ядер "на горячую" не использовать, то есть переключить "HotAddCPU" = disable.
  4. При конфигурации сети: использовать VMXNET3 адаптер и, желательно, включить NIC teaming. Дело в том, что ESXi имеет в своём составе специальные виртуальные адаптеры для основных устройств, которые оказывают наибольшее влияние на производительность. К ним можно отнести сетевые адаптеры и SCSI-контроллеры. Желательно выбирать самые последние "модели", но обязательно смотреть таблицы совместимости на отдельной странице сайта VMware для гостевой операционной системы. VMXNET3 это самый быстрый и обладающий минимальным overhead сетевой адаптер для виртуальных машин VMware. NIC teaming это технология объединения нескольких физических адаптеров в один, что повышает скорость и отказоустойчивость.
    Также стоить иметь в виду, что обычная практика это разделение всей сети комплекса на управляющую сеть, сеть для переноса виртуальных машин с помощью технологии vMotion и минимум 2 адаптера с NIC teaming для пользовательского доступа. Если используется High-Availability, то тоже надо заложить дублирование сетевых каналов. То есть количество сетевых адаптеров физических узлов надо закладывать с учётом этой информации на этапе сайзинга комплекса.
    В VMware есть функциональность по организации виртуальных коммутаторов - vSwitch, которые позволяют объединить все физические сетевые адаптеры и рулить ими на уровне абстракции VMware, разделяя на подсети.
  5. Memory reservation = размер сконфигурированной памяти VM (опция "Reserve all guest memory (All locked)"). То есть виртуальная машина сразу забирает всю память и не играет с выделением, swapping и другими фишечками VMware. А их там много. Например, balooning. Для SAP это всё увеличивает вероятность получения дополнительных проблем с производительностью, поэтому упрощаем процедуру выделения оперативной памяти виртуальной машине по максимуму.
  6. В качестве типа SCSI адаптера лучше всего использовать PVSCSI. Объяснение аналогично сетевому адаптеру (см. пункт 4). 
  7. Виртуальные диски типа "eager-zeroed thick provisioned". То есть никаких динамических дисков. В этом случае виртуальный диск занимает всё место, да еще и заполняет пустые блоки нулями. Данный вариант обладает самой высокой производительностью.
  8. Распределить файлы базы данных по нескольким виртуальным хранилищам (они  в VMware называются Datastores) и нескольким PVSCSI контроллерам. Например, я сделал так: отдельный диск и контроллер для OS + swap; отдельный для redo logs файлов; и несколько для data-files Oracle.
  9. На уровне ESXi обязательно активировать multipathing с политикой Round-Robin, но снизить лимит с "1000" (значение по-умолчанию) на меньшее значение (где-то встречал рекомендации установить в "1"). Multipathing это использование всех путей до СХД для повышения производительности и отказоустойчивости.
  10. Использование snapshots на постоянной основе не рекомендуется. При удалении snapshot могут отваливаться фоновые задания в SAP системе. Но snapshot можно использовать при выполнении резервного копирования. Про это будет отдельный пост.
  11. Использовать фиксированный MAC адрес. Для этого в настройках виртуальной машины необходимо выбрать тип "Manual". В Linux на MAC адрес завязан HardwareKey, на основании которого генерируется SAP License Key. Если VMware при смене узла, на котором работает виртуальная машина, изменит MAC адрес сетевого адаптера, то лицензионный ключ слетит. Подробности в SAP note 2161991 - VMware vSphere configuration guidelines.
  12. Возможно использование больших страниц (Large Pages) для виртуальных машин с большим объемом памяти. Смотреть на поддержку операционной системы и версии базы данных, которые будут использоваться в виртуальных машинах.

Ну и напоследок, рекомендации по настройке гостевой операционной системы. В моём случае это была SUSE Linux Enterprise Server.
  1. Отключить screen saver и анимацию.
  2. Обязательно устанавливать VMware Tools. Инструкции по установке можно найти на этой странице. Для Linux есть альтернатива - open-vm-tools, SLES поддерживает её с версии 12. Данная версия также поддерживается со стороны VMware (пруф). 
  3. Обязательная синхронизация времени. Лучше использовать NTP-сервер, а не опции VMware Tools (параметр tools.syncTime = "FALSE"). По опции VMware Tools происходит синхронизация времени гостевой операционной системы со временем ESXi узла. Это, как вы поняли, не рекомендуется. 
  4. Настройки swap-области внутри виртуальной машины такие же, как SAP рекомендует и для физических машин. Про эти рекомендации я писал в этом посте.
  5. Допускается использование LVM. Моё личное мнение, что с ним в Linux жить гораздо проще.
  6. Настроить автоматический запуск сервера приложений SAP и DB при старте операционной системы. Чтобы при рестарте виртуальной машины ваша система поднималась сама. Об этом тоже будет отдельный пост.
  7. ORACLE 10g и новее поддерживает NUMA по умолчанию (параметр _enable_numa_optimization), изменять параметр самостоятельно не рекомендуется.
  8. Выключить iptables командой /etc/init.d/iptables stop. Отключить SELinux выставив параметр SELINUX = disabled в файле /etc/selinux/config. Ну или деактивировать это на этапе установки операционной системы.

Как вы можете заметить, прочитав всё вышеперечисленное и заглянув в первоисточники, SAP относится к виртуализации как неизбежному злу. Поддерживаются только базовые функции, делается максимальный упор на производительность и устойчивость решения. Что в принципе диктуется тем, что это программное обеспечение Enterprise уровня. И я лично разделяю такую позицию.

Более подробную подборку SAP notes по VMware можно найти на этой странице SAP Wiki.


Комментариев нет:

Отправить комментарий