5 февраля 2020 г.

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

В конце прошлого года я участвовал в проекте миграции систем SAP на новую платформу, где, в частности, использовалась виртуализация. Так как до этого с продуктивным использованием сред виртуализации не сталкивался, а здесь пришлось достаточно глубоко погрузиться в эту область, я хочу поделиться своими знаниями. 

Под средой виртуализации я имею ввиду продукты компании VMware. Для корпоративных систем, наверное, это самое распространённое решение по виртуализации. 

Начнём с того, что SAP поддерживает виртуализацию для своих продуктов. Конечно, официально поддерживаются далеко не все продукты существующие на рынке, а в большей части только корпоративные и имеющие поддержку на уровне Enterprise. Список поддерживаемых и не поддерживаемых продуктов можно найти в SAP note 1122387 - Linux: SAP Support in virtualized environments. 
Если кратко, то в продуктивной среде можно использовать:
  • основанные на Xen, но в рамках корпоративных версий Linux и Citrix,
  • основанные на KVM, но опять же в рамках Enterprise продуктов (SUSE, Red Hat, IBM и т.п.),
  • линейку продуктов VMware от версии 5.x и выше,
  • виртуализацию типа LPAR (логическое разбиение физического сервера на отдельные машины) от разных вендоров. 

Точно не поддерживаются Microsoft Hyper-V, Virtual PC, Virtual Server, Oracle VirtualBox, Parallels Virtuozzo Containers, а также контейнеры от Linux (LXC, Docker). Отмечу, что в целях разворачивания обучающих систем, это всё можно смело использовать. И 80% их будет работать. Официальная поддержка относится к продуктивному использованию на боевых системах.

Теперь рассмотрим VMware. За одним этим словом скрывается огромный зоопарк различных систем и решений, который за более чем 20 лет существования компании разрастался, видоизменялся и переименовывался. Типичная конфигурация (рис. 1) представляет собой несколько физических машин, на которых устанавливается как операционная система специальное программное обеспечение - гипервизор. Гипервизор управляет ресурсами физической машины, распределяя их между работающими виртуальными машинами. У VMware гипервизор это продукт под названием ESXi сервер. В целом ESXi представляет собой узкоспециализированный дистрибутив Linux, который умеет рулить оборудованием и виртуальными машинами. VMware ESXi имеет очень небольшие требования к дисковому пространству, поэтому в качестве носителя может быть использована даже SD карта. После старта весь образ этой специфичной ОС хранится в оперативной памяти.

Накладные расходы (overhead) со стороны VMware ESXi минимальны, немного процессорных ресурсов и чуть-чуть оперативной памяти. :)

Рис. 1. Типовая схема виртуализации VMware.

К серверам подключается один или несколько дисковых массивов. Причём, современные решения от разных вендоров имеют хорошую интеграцию с VMware, поддерживая различные фишки через общий API. Например, "тонкие виртуальные диски" на уровне СХД.

Стоит также отметить, что многие вендоры оборудования тесно работают с VMware и в плане серверного оборудования тоже. В результате на свои сервера поставляют собственные сборки VMware ESXi, куда интегрированы специфичные драйвера и патчи.

Сам по себе ESXi не имеет графического интерфейса: на экране консоли сервера после загрузки появляется минималистичная заставка, отображающая только IP адрес и hostname, по которому можно войти через http-интерфейс для управления средой виртуализации (рис. 2).

Рис. 2. Пример начального экрана консоли сервера с VMware ESXi.

В консоли есть возможность перейти в настройки конфигурации по клавише F2 (в основном,  доступны только настройки сети) и выключить/перезагрузить сервер (клавиша F12). Все остальные функции по управлению виртуальной средой осуществляются через web-интерфейс сервера ESXi. Для очень тонкой настройки есть возможность активировать доступ через ssh (по-умолчанию, доступ закрыт) и войти на сервер через удалённую консоль.

Компания VMware умеет прекрасно продавать свои продукты. За это перед ними снимаю шляпу. Наверное, поэтому web-интерфейс VMware ESXi имеет лишь базовый набор функций. Для получения полного функционала рекомендуется приобрести продукт под названием VMware vCenter Server, который разворачивается в виде отдельной виртуальной машины (внутри представляет собой опять же Linux). И вот уже его web-интерфейс (VMware vSphere Client) имеет больше возможностей. Например, можно делать шаблоны виртуальных машин, клонировать их или осуществлять глубокий мониторинг производительности. На ESXi мониторинг ресурсов ограничивается только текущим состоянием (последний час). 

Несколько физических машин, каждая под управлением ESXi, могут быть объединены в кластер на уровне VMware. Машины в одном кластере должны иметь максимально похожие модели процессоров, а лучше вообще быть идентичны по всем параметрам. Поэтому для VMware конфигурации идеально подходят блейд-системы, когда на одном шасси функционирует несколько идентичных лезвий-серверов.
Другой продукт от компании VMware - vMotion позволяет переносить виртуальные машины между физическими узлами одного кластера. В случае ручного переезда останова гостевых операционных систем и приложений не происходит, пользователи процесса даже не замечают.  То есть происходит, так называемая "живая" миграция (live migration). 
В случае автоматического переезда, как в High-Availability решении, возможно два варианта:
  • рестарт виртуальной машины на резервной ноде в случае падения на основной,
  • "бесшовный" рестарт, который достигается за счёт использования решения VMware Fault Tolerance. 

Во втором решении используется одновременная работа двух виртуальных машин на разных узлах с полной синхронизацией и горячее переключение на резервную в случае сбоя основной машины. У решения есть строгие ограничения по количеству виртуальных процессоров и жёсткие требования к инфраструктуре. 

Лично я отношусь к VMware как к еще одному слою абстракции, который съедает определённые ресурсы для своей работы (overhead) и обязательно рано или поздно даст о себе знать дополнительной головной болью. В принципе, как и любое другое программное обеспечение.

Но, стоит признать и ряд несомненных плюсов в системе виртуализации. Во-первых, это абстрагирование виртуального сервера с операционной системой и SAP от физического сервера. Благодаря этому мы можем легко перенести систему на другое оборудование (при идентичности архитектуры конечно). При использовании "живой" миграции не нужно планировать downtime. Можно освободить физический сервер и провести на нём необходимые работы.  Конечно, чтобы была такая возможность полностью освободить физический сервер от виртуальных машин, необходимо тщательно планировать ресурсы физических машин в кластере. Запас по ресурсам должен быть всегда. 
Во-вторых, это лёгкость разворачивания новых серверов с SAP системами, путём клонирования/копирования существующих виртуальных машин или шаблонов. Если вы опять же оставите ресурсы в кластере, то можно создавать системы для тестирования и экспериментов. В частности, создавать машины для тестирования разворачивания резервных копий продуктивных систем. 
В-третьих, так как виртуализация не любит зоопарка решений в плане физических серверов и архитектур, вам придётся унифицировать оборудование, что может в дальнейшем снизить расходы на администрирование и обслуживание.
Еще можно отметить возможность использования дополнительного уровня резервного копирования через сохранение всей виртуальной машины. Причем можно использовать функцию VMware - snapshot, которая позволит минимизировать время простоя приложения во время создания резервной копии.
Но при этом надо понимать, что виртуальная среда это идеальное решение когда у вас много маленьких виртуальных машин, а реализация огромных серверов будет затруднительна. Да и накладные расходы тут уже будут мешать. Если у вас требования к оборудованию одного сервера равны мощностям физического узла, то реализация такого сервера в виртуальной среде ни одного плюса не даст. А при съедании всех ресурсов большой виртуальной машиной ESXi скорее всего "встанет колом", потому что начнётся активный swapping и очереди к процессорным ресурсам.

На русском языке есть очень хорошая книга "Администрирование VMware vSphere 5" от Михаила Михеева. Самая последняя версия - 3-издание от 2012 года. Более свежей версии нет,  так как автора взяли работать в VMware и он книгу обновлять перестал. :) Но для понимая всех продуктов книга подходит отлично. Поищите, в сети её найти можно. 

Продолжение в этом посте.




14 января 2020 г.

Рассказ про работу системного администратора в Yandex

Хочу поделиться своей находкой - прекрасным рассказом про работу системного администратора от Дмитрия Куликовского из компании Yandex.

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

Я считаю, что мы можем смело отнести себя к системным администраторам, поэтому всё, что говорит автор, относится и к нам.

Я смотрел на скорости 1,5х, вполне реальная скорость для этого видео.



Автор: Шиболов Вячеслав Анатольевич


25 декабря 2019 г.

С наступающим Новым 2020 Годом!


Всех, кто читает мой блог постоянно или заглядывает сюда лишь изредка, хочу поздравить с наступающим, а для кого-то уже с наступившим, Новым Годом!

Оглядываясь назад, могу сказать, что уходящий год был для меня очень продуктивным. Я участвовал в проекте, который очень долго ждал, к которому готовился и всеми силами способствовал его старту. И вот этот проект позади. Выполнена миграция систем заказчика со старой, не поддерживаемой и устаревшей платформы на новое современное и производительное аппаратное обеспечение. Ещё один заказчик ушел с платформы HP-UX/PA-RISC+Itanium на Linux/x86_64. Всё прошло трудно, но точно в срок, который я и условия договора установили в начале. Это был проект, который мне подарил неоценимый опыт и бороду. :)

Что касается свободного времени, то в этом году я прочитал 33 книги и посмотрел порядка 60 фильмов и сезонов сериалов.

Из книг в этом году открыл для себя Юрия Германа:
  • "Россия молодая" (2 книги); 
  • "Дело, которому ты служишь"; 
  • "Дорогой мой человек"; 
  • "Я отвечаю за всё".

Также рекомендую книгу Дмитрия Соколов-Митрича "Яндекс.Книга", в которой рассказана не только история компании "Яндекс", но и становления всего ИТ в России. И если сравнивать с сериалом "Холивар. История Рунета", который я просмотрел до этого, то книга просто бальзам на душу. Сериал после 2-х более или менее интересных серий скатился в политику, однобоко навязывая либеральные взгляды автора проекта. Причем, сюжеты серий далеко ушли от ИТ. Итог: сериал не рекомендую, книгу же, напротив, рекомендую.

Еще прочитал "Как закалялась сталь" Николая Островского. В школьные годы я осилил только первую часть, забуксовав на второй. Книга местами удивляет не вполне литературным стилем, скупостью языка, но в конце всё встаёт на свои места: книга это автобиография человека далекого от литературы.

Ещё одно открытие - книга Александра Чудакова "Ложится мгла на старые ступени". Мне очень понравилось. Но наверное, тут надо сделать скидку на мой возраст и то, что моё детство пришлось на конец 80-х, начало 90-х и провёл я эти годы в деревне. Я слушал в аудио-формате, но для этой книги этот формат не рекомендую, лучше читать.

Еще прочитал Юваль Ной Харари "Sapiens. Краткая история человечества". Книга спорная, но читается легко и для общего развития можно ознакомиться.

Ну и напоследок могу еще посоветовать Всеволода Овчинникова и его "Ветка сакуры: рассказ о том, что за люди японцы" и "Корни дуба: впечатления и размышления об Англии и англичанах". Сказать, что понравилось, это не сказать ничего. :) Хотел найти что-то подобное, например, про Германию. Но не нашёл.

Из сериалов:
  • "Кремниевая долина" закончился на 6-м сезоне. Очень слабый последний сезон, много претензий, натянутости, нестыковок, но последняя серия очень хороша. Кто не смотрел, теперь можно просмотреть все серии сразу;
  • "Любовь, смерть и роботы" - мультсборник разных авторов, оценка: серии 3 и 14 на 5 баллов; 1, 7, 8 и 18 на 4,5; а 13 на 4. Остальные особо не выделились;
  • "Семейный брак" - очень легко и интеллектуально по-британски о проблемах брака и долгой совместной жизни между мужчиной и женщиной.

Из отечественных фильмов:

Из зарубежных фильмов:
  • "Одарённая" - есть небольшие претензии к сценарию, но в целом очень качественный фильм;
  • "Статус Брэда" - та же проблема кризиса среднего возраста у мужчин, молодым, наверное, не зайдёт;
  • "Светская жизнь" - классический Вуди Аллен;
  • "Чудо" - качественный фильм, можно и нужно смотреть с детьми;
  • "Как отмыть миллион" - на удивление приятный фильм, при этом затрагивающий вполне определённые проблемы жизни при капитализме.

Ну вернёмся к нашему 2020-му. :)

Желаю всем здоровья, финансового благополучия и хорошего настроения! Поменьше читать негативных новостей и газет, больше хороших книг и фильмов! Хорошо вам отдохнуть за праздники, перезагрузиться и быть готовым к новым задачам и свершениям!

Ну и какой Новый Год без подарков. Вот вам ссылочка, где можно скачать свежие материалы SAP курсов. Спасибо за неё щедрому человеку, который не смог один наслаждаться таким богатством. :)


До встречи в 2020 году! 


Автор: Шиболов Вячеслав Анатольевич


24 октября 2019 г.

Саповские секретики - VII

Секретик 1.

Транзакция SM50 отображает список рабочих процессов, которые сконфигурированы в текущей SAP инстанции. Количество рабочих процессов разного назначения настраивается через набор SAP параметров вида rdisp/wp_no_*. Нехватка рабочих процессов, в зависимости от типа, приводит к увеличению заданий в очереди ABAP-диспетчера, "зависанию" во время диалоговой работы, задержкам при запуске фоновых заданий и т.п. При чрезмерном количестве рабочих процессов происходит не оптимальное использование ресурсов сервера. Для мониторинга при настройке оптимального количества рабочих процессов инстанции помогут возможности транзакции SM50. На основном экране транзакции на верхней панели есть кнопка "CPU" (рис. 1).

Рис. 1. Начальный экран транзакции SM50.

После нажатия на данную кнопку напротив каждого рабочего процесса появится время, в течении которого соответствующий процесс операционной системы реально использовал ресурсы центрального процессора (рис. 2).


Рис. 2. Отображение реального времени работы рабочего процесса.

Если данное число после 2-4 недель работы инстанции равно 0, значит ABAP-диспетчер ни разу не давал задания данному рабочему процессу. Если вы обнаружили много таких процессов одного типа, то часть из них можно смело удалить. 

Главное не принимайте такое решение на основании короткого времени работы инстанции. Особенно, если у вас есть редкие кратковременные пиковые дни работы системы, а инстанция не пережила такой день после своего старта.

В последних версиях SAP систем, после обновления транзакции SM50, данные временные значения отображаются постоянно.


Секретик 2.

В транзакции SM04 отображается список пользователей, которые выполнили вход в систему на текущей SAP инстанции. Дополнительно, используя данную транзакцию можно проводить мониторинг версии клиентского программного обеспечения SAP GUI, которое использовал пользователь, а так же IP адрес, с которого был выполнен вход в систему. Для этого на панели на основном экране транзакции необходимо войти в настройки варианта просмотра (рис. 3).

Рис. 3. Настройки варианта просмотра экрана в транзакции SM04.

В диалоговом окне добавить поля "Версия GUI" и "IP-адрес" и нажать кнопку "Скопировать" (рис. 4). 

Рис. 4. Настройка видимых полей транзакции SM04.

После этого в соответствующих полях отобразится информация по пользователям, выполнившим вход в систему (рис. 5).

Рис. 5. Информация по версиям SAP GUI и IP-адресам пользователей.

Секретик 3.

Если SAP система работает на операционной системе UNIX-like, Linux в том числе, то будет полезно знать, что у пользователя операционной системы <sid>adm есть ряд настроенных псевдонимов (aliases) для команд. Например,
  • cdexe - переход в директорию с SAP Kernel.
  • cdpro - переход в директорию с профилями SAP.
  • cdDi - переход в директорию текущей инстанции.

Рис. 6. Пример использования alias для пользователя <sid>adm.

Все активные псевдонимы можно посмотреть выполнив команду alias (рис. 7).



Псевдонимы настраиваются в профайлах пользователя операционной системы. Найти их можно набрав команду в домашней директории пользователя:
grep alias .*

Хотите попробовать администрирование SAP системы в операционной системе Linux?
Посмотрите мои новые обучающие пакеты практических заданий.


Предыдущие выпуски:
- Саповские секретики - I,
- Саповские секретики - II,
- Саповские секретики - III,
- Саповские секретики - IV,
- Саповские секретики - V,
- Саповские секретики - VI.


Автор: Шиболов Вячеслав Анатольевич.


2 октября 2019 г.

Когда возникает системный дамп TIME_OUT

Работа пользователей в ABAP-части SAP системы возможна в двух режимах:
  • диалоговый режим,
  • фоновый режим.

Первый режим является основным. В этом случае пользователь работает с системой в интерактивном режиме, вводя информацию в поля транзакций и получая результаты на экране SAP GUI. За обработку запросов от диалоговых пользователей отвечают отдельные процессы SAP инстанции – диалоговые рабочие процессы (DIA).

Второй режим, фоновый (background), служит для запуска долгих тяжелых отчетов или стандартных периодических заданий для обслуживания SAP системы (задания, собирающие различную статистику, проводящие очистку и т.п.). Фоновые задания не требуют постоянного коннекта пользователя с системой посредством SAP GUI, поэтому пользователь может запланировать задание и выйти из системы. Просмотреть результаты работы задания можно после его окончания через систему спула. За выполнение фоновых заданий в системе отвечает другой вид рабочих процессов - фоновые рабочие процессы (тип BTC).

Количество рабочих процессов для диалоговой и фоновой обработки настраивается через следующие SAP параметры:
  • rdisp/wp_no_dia,
  • rdisp/wp_no_btc.

Напоминаю, что про параметры SAP системы у меня уже была серия статей (часть 1, часть 2).

Вышеуказанные параметры являются статическими и считываются системой только при старте ABAP инстанции. Количество рабочих процессов в работающей системе можно просмотреть в транзакции SM50.

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

Дело в том, что в любой SAP системе количество диалоговых рабочих процессов инстанции всегда меньше количества пользователей. Так же как и в любой операционной системе количество ядер центрального процессора всегда меньше количества работающих процессов. Поэтому, если найдётся группа упорных пользователей, в которой каждый запустит по тяжёлому долгому отчёту (а то и по 2-3), а отчёты займут на длительный промежуток времени большинство диалоговых рабочих процессов, то остальные пользователи будут "курить в сторонке". Для них система перестанет реагировать на любые шаги диалога, даже, если они работают в лёгких, нересурсоёмких транзакциях. Чтобы пресекать такие ситуации у ABAP инстанции есть параметр rdisp/max_wprun_time. Значение параметра - время в секундах. А если после числа добавить букву M или H, то система воспримет значение, как указанное в минутах или часах (рис. 1).

Рис. 1. Параметр инстанции rdisp/max_wprun_time.

Если диалоговый рабочий процесс работает над одним шагом диалога и интервал времени больше, чем значение, указанное в ограничивающем параметре, то система прервёт выполнение данного шага. В этом случае работающая программа останавливается, диалоговый рабочий процесс освобождается, а в системе генерируется ABAP-дамп с именем TIME_OUT. При этом в разделе "Анализ ошибки" будет подсказка с именем вышеуказанного параметра и его текущего значения в системе (рис. 2).

Рис. 2. Пример системного дампа TIME_OUT.

При долгом ожидании рабочим процессом данных от базы данных также произойдёт сброс и дамп. Для того, чтобы избежать этого, необходимо при обновлении данных периодически вставлять в код программы "COMMIT WORK". После каждой такой команды счётчик обнуляется, хотя шаг диалога продолжает работать на том же рабочем процессе.

Данное ограничение по времени работы одного шага диалога в рабочем процессе можно настраивать на разных инстанциях в рамках одной системы по разному. То есть на одной диалоговой инстанции установить значение в "60M", а на второй и все "3H", если этого требует бизнес. Так же стоит отметить, что параметр динамический, а следовательно может быть изменён во время работы системы в любой момент времени без рестарта ABAP инстанции.

Но не смотря на возможность установки высоких значений параметра, делать этого не рекомендуется. Во-первых, в этом случае перестаёт функционировать встроенный механизм и повышается вероятность возникновения проблем другого уровня. Например, можно получить вставшую колом систему, в которую невозможно войти и посмотреть, что с ней происходит.
А во-вторых, это не способ решения проблем с производительностью системы. Имея высокие значения параметра, можно не отследить момент, когда ваша система потребует повышения производительности через апгрейд оборудования и/или проведения оптимизации на программном уровне.

Для ориентира следует брать значение по умолчанию, которое равно 10 минутам ("600"). А дальше уже изменять в зависимости от загруженности системы и решаемых задач.

В системах основанных на SAP NetWeaver 7.40 и выше появилась возможность более глубокой настройки данного ограничения, используя следующие 3 параметра:
  • rdsip/scheduler/prio_high/max_runtime,
  • rdsip/scheduler/prio_normal/max_runtime,
  • rdsip/scheduler/prio_low/max_runtime.

Назначение параметров такое же - задание максимального времени работы диалогового рабочего процесса, обрабатывающего запросы разного приоритета (high, normal, low). 
Причём, параметр rdisp/max_wprun_time в системе остался. И при явной его установке перезаписывает значение выше-указанных трёх параметров. Поэтому его рекомендуется из профайлов удалить, а пользоваться новыми параметрами (рис. 3).

Рис. 3. Новые параметры ограничения максимального времени работы одного шага диалога.

Дополнительную информацию по теме можно найти в SAP note 25528 - Configuration of maximum work process runtime - parameter rdisp/max_wprun_time.


Автор: Шиболов Вячеслав Анатольевич