В первой части (статья была опубликована в блоге Яндекс Облака) был рассмотрена установка платформы SAP Netweaver ABAP AS, которая является основой для большинства SAP систем. В этой публикации мы перейдем от сервера приложений к уровню базы данных.
Изначально SAP Netweaver работал на широком спектре баз данных, среди которых были как принадлежащие компании SAP (SAP MaxDB, SAP ASE) так и базы данных от сторонних производителей (DB2, Oracle и MS SQL Server). Ситуация кардинально начала меняться в 2015 году с выходом SAP HANA (High-performance Analytic Appliance). Эта база данных позиционировалась компанией SAP как революционный для рынка продукт:
- обработка всех запросов осуществляется исключительно в оперативной памяти
- совмещение построчного и поколоночного хранение данных
- встроенные библиотеки PAL (Predictive Analytics Library), BFL (Business Function Library), Text Analysis, SAP HANA SQLScript и другие инструменты для подготовки данных на стороне базы данных и таким образом уменьшения обмена данными с сервером приложений.
Чтобы максимально использовать потенциал новой БД в SAP перерабатывают свою флагманскую ERP-система, которая выходит в 2015 году под названием S/4HANA и уже работает исключительно на базе SAP HANA. В последствии глубоко переработанные HANA — версии появляются у других популярных продуктов хранилища данных BW (Business Warehouse) — решение выходит на рынок под названием SAP BW/4HANA и у CRM-системы — решение выходит на рынок под названием SAP C/4HANA.
Остальные SAP ABAP и JAVA системы, например, шина данных SAP Process Orсhestration теперь могут использовать SAP HANA, как одну из доступных для установки баз данных, наряду с Oracle, DB2 и другими.
Поскольку SAP HANA является мультиконтейнерной базой данных, типичный корпоративный SAP — ландшафт выглядит следующим образом:
в этом скриношоте каждый тенант – это изолированная база данных какой-либо SAP системы (SAP Process Orсhestration, SAP EWM, SAP ATTP, SAP S/4HANA и т.д) внутри одной инсталляции SAP HANA.
Со временем у SAP появились также и коммерческие продукты которые представляют собой связку веб-приложение + база данных SAP HANA.
Например, SAP Medical Research Insights. Данная система должна помочь врачам выработать правильный план лечения, опирающийся на огромный массив данных, в том числе и о генетических исследованиях.
Еще один важный момент это наличие в архитектуре SAP HANA встроенного веб сервера (SAP HANA Extended Application Service). Данный сервер имеет привилегированный доступ к базе данных и позволяет выполнять приложения на Java, Python, Node.js и множестве других языков программирования. В версии сервиса Advanced Model (XSA) в ландшафте SAP HANA появляется такой функционал, как интегрированная среда разработки с веб-интерфейсом (SAP WEB IDE), Codereview (Gerrit) планировщик зданий (SAP XS JOB SCHEDULER) и многое другое.
Архитектура SAP HANA XSA:
Появление и постоянное развитие SAP HANA требует новых знаний у администраторов и разработчиков приложений. Возможность установить и экспериментировать со своей собственной базой и средой разработки в облаке представляется в этом случае далеко не лишней.
Однако SAP HANA будет интересна не только в Enterprise-среде, и не только среди разработчиков SAP. Благодаря гибкой лицензионной политики этот продукт можно бесплатно установить и использовать, в том числе и в коммерческих целях (размер в этом случае ограничен 32 GB) Возможно приведённый ниже пример установки и использования даст идею о том какое место может занять база данных SAP HANA и SAP HANA Extended Application Service в Вашем проекте.
Шаг 1. Скачиваем установочные файлы SAP HANA
Заходим на страницу загрузки SAP HANA, express edition и если у Вас нет учетной записи в SAP необходимо пройти простую регистрацию
Скачиваем и запускаем SAP HANA Express Edition Download Manager
В Download Manager укажем следующие варианты загрузки
Платформа – Linux/x86 – 64
Image – Binary Installer
Package – Applications*
* — Под Applications подразумевается база данных SAP HANA, сервер приложений и среда разработки SAP HANA Extended Application Services, Advanced Model (XSA)
Шаг 2. Создаём виртуальную машину в Яндекс Облаке
На этом шаге нам понадобится следующий бесплатный софт:
- PuTTY – SSH-клиент.
- PuTTYgen – Генератор Public/Private ключей.
- WinSCP – SFTP-клиент.
Как альтернативу для данных приложений можно также рассмотреть приложение MobaXTerm
Создадим связку Public-Private ключ с помощью PuTTYgen.
Регистрируемся / заходим в Яндекс Облако (https://cloud.yandex.ru/). Переходим в раздел Compute Cloud и приступаем к созданию виртуальной машины.
Имя виртуальной машины: saphana2
Зададим подходящие характеристики ВМ. В руководстве по установке для SAP HANA Express Edition (Server + Application) видим следующие рекомендуемые параметры:
Зададим их при создании нашей виртуальной машины.
vCPU — 2,
RAM – 32GB,
15 GB + 150 GB, где
15 GB (загрузочный диск — SSD)
150 GB (данные — * HDD)
* — т.к. SAP HANA все операции проводит в оперативной памяти в качестве носителя для снепшота данных мы можем выбрать более медленный HDD
В качестве операционной системы выберем последнюю стабильную ОС OpenSUSE, на момент написания статьи – это версия ОС OpenSUSE 42.3
Укажем Логин и Public SSH-ключ, сгенерированный с помощью PuTTYgen
Шаг 3. Подготавливаем виртуальную машину к установке SAP HANA XSA
Находим в настройках Публичный IPv4 адрес:
Подключаемся к созданной ВМ с помощью Putty-клиента, указав в подключении публичный IPv4, заданный логин и путь к Private – ключу
Подготовим файловую структуру к установке.
lsblk
vda – boot диск, vdb –диск, созданный под данные.
SAP рекомендует следующую файловую структуру:
/usr/sap + /usr/sap/distr – 35 GB
/hana/shared/data — 60 GB
/hana/shared/log — 10 GB
/hana/shared –40 GB
Реализуем такую структуру с помощью утилиты fdisk:
fdisk /dev/vdb`
Проверим ещё раз структуру и создадим файловую систему ext4 на всех созданных разделах:
lsblk
mkfs.ext4 /dev/vdb1
mkfs.ext4 /dev/vdb2
mkfs.ext4 /dev/vdb3
mkfs.ext4 /dev/vdb4
Создадим директории под дистрибутивы и базу данных SAP HANA, а также примонтируем к ним созданные на предыдущем шаге разделы. Также обновим файл /etc/fstab, чтобы монтирование восстанавливалось при перезагрузке:
mkdir /usr/sap
mkdir /hana
mkdir /hana/shared
mkdir /hana/shared/data
mkdir /hana/shared/log
mount /dev/vdb1 /usr/sap
mount /dev/vdb2 /hana/shared/data
mount /dev/vdb3 /hana/shared/log
mount /dev/vdb4 /hana/shared
mkdir /usr/sap/distr
vi /etc/fstab
Установим разрешение на папку с установочными файлами SAP:
chmod -R 777 /usr/sap/distr
Импортируем в WinSCP настройки из Putty. Подключимся к ВМ и загрузим в /usr/sap/distr архивы SAP HANA Server (hxe.tgz), SAP HANA Extended Application Services –XSA (hxeesa.tgz) и shine.tgz (Учебный контент)
Распакуем архивы:
cd /usr/sap/distr
tar -xvzf hxe.tgz
tar -xvzf hxexsa.tgz
tar -xvzf shine.tgz
Добавим репозиторий:
sudo zypper ar -c https://download.opensuse.org/tumbleweed/repo/oss/ openSUSE-Tumbleweed-Oss-HTTPS
Установим требуемые для работы библиотеки libstdc++, libnuma1, libatomic и libgcc_s1:
zypper install libstdc++6
zypper install libatomic1
zypper install libgcc_s1
zypper install libnuma1
Шаг 4. Устанавливаем SAP HANA XS
Первое с чего стоит начать установку – это определением понятия SID
SID (SAP System Identificator) — представляет собой комбинацию трех символов и должен быть уникальным в рамках ландшафта. В рамках установки SAP HANA Express Edition значение SID по-умолчанию HXE. Предполагается, что мы не будем выбирать в качестве SID что-то другое.
Запускаем скрипт инсталляции с правами root – пользователя:
cd /usr/sap/distr
./setup_hxe.sh
В меню установки требуется несколько раз нажать Enter.
Таким образом мы установим предложенные значения по умолчанию:
Дистрибутивы лежат в /distr/HANA_EXPRESS_20
SID – HXE
Номер инстанции – 90
Установка всех компонентов – all*
* — В данном случае это значит, что мы установим набор библиотек Application Function Library (AFL), куда входят Predictive Analysis Library (PAL), Business Function Library (BFL), Optimization Function Library (OFL).
Плагин SAP HANA EPM–MDS предназначен для получения данных из различных OLAP источников, а подсистема расширенных сервисов (Extended Services, XS) — это встроенный веб-сервер и набор различных компонентов, имеющих привилегированный доступ к базе данных.
Указываем мастер-пароль для пользователей, которые создаются во время инсталляции SAP HANA.
Поскольку мы выбрали SID – HXE, adm – пользователь на уровне операционной системы будет hxeadm. Указанный мастер-пароль также применится и к пользователю SYSTEM на уровне базы данных.
В процессе установки XSA потребуется также задать мастер-пароль от пользователей XSA_ADMIN, XSA_DEV, TEL_ADMIN
Процесс инсталляции.
База SAP HANA Express Edition установлена.
Шаг 5. Проверка работы SAP HANA XSA
Проверим что база данных SAP HANA установлена и работает:
su – hxeadm
HDB info
Пример сервисов, которые будут запущены:
Пройдём авторизацию в SAP HANA Extended Application Services, Advanced Model:
xs-admin-login
Пользователь: XSA_ADMIN
Пароль: Мастер-пароль, который мы задали при установке
Проверим версию SAP HANA Extended Application Services, Advanced Model:
xs -v
Шаг 6. Пост-инсталляционные действия
Для того чтобы использовать веб-инструменты разработки и администрирования SAP HANA XSA необходимо отредактировать файл hosts на локальной Windows-мшине.
1. Открываем блокнот от имени Администратора
2. Открываем в блокноте файл C:\Windows\System32\drivers\etc\hosts
3. Вносим строку вида:
<внешний ip-адрес>
Шаг 7. Начало работы
Существует несколько способов администрирования и разработки для SAP HANA XSA
Администрирование: SAP HANA Cockpit. В настоящее время SAP позиционирует его, как основной инструмент управления базой данных. Также возможно управление базой данных из Eclipse (Перспектива – SAP HANA Administration Console)
Разработка: Через веб-интерфейс, через инструмент SAP Web IDE или через Eclipse (Перспектива – SAP HANA Development)
Поскольку HANA Cockpit и WebIDE были установлены во время процесса инсталляции именно их как средства управления и администрирования мы и будем рассматривать.
Получим url для интересующих нас приложений xsa-cockpit, webide и cockpit-web-app:
xs app xsa-cockpit --urls
xs app webide --urls
xs app cockpit-web-app --urls
Скопируем https – адрес и откроем его в браузере для каждого из этих приложений.
XSA Cockpit
XSA Cockpit — это браузерная система управления сервером приложений SAP HANA Extended Application Services, Advanced Model.
XSA Cockpit позволяет управлять пользователями и ролями, организациями и пространствами.
В разделе User Management можно проверить, и при необходимости назначить, для пользователя XSA_DEV роли DEVX_ADMINISTRATOR, DEVX_DEVELOPER.
В разделе Tenant Databases можно расширить возможности XSA на новый тенант, в нашем случае – HXE и связать с ним пространство разработки development
HANA Cockpit
HANA Cockpit — это система управления базой данных SAP HANA.
Cockpit можно использовать для управления пользователями и ролями на уровне базы данных, для создания бекапов, мониторинга работы, диагностирования проблем с производительностью на уровне базы и множества других административных задач.
Скрипт регистрации ресурсов базы данных в HANA Cockpit выполняется при установке, если скрипт по каким-либо причинам не выполнился – его необходимо запустить вручную до первого использования Cockpit-ом.
su – hxeadm
/usr/sap/distr/HANA_EXPRESS_20/register_cockpit.sh
WebIDE
WebIDE –это интегрированная с GitHub-ом браузерная среда разработки.
В разделе Development можно разрабатывать, тестировать и публиковать модули на NodeJS, Java, HTML5.
В разделе Database Explorer можно создавать и управлять объектами на уровне базы данных (таблицы, представления, хранимые процедуры и т.д).
Подключение к тенанту и обзор объектов в нём:
Шаг 8. Первое Node.js приложение
Откроем WebIDE и создадим простое UI5/Node.js приложение “Hello World!”
Для этого выберем
Workspace – Git – Clone Repository
В качестве репозитория укажем — Repository – github.com/basisteam-io/SAPHANAXS_helloworld.git
Таким образом мы получим копию простого приложения Hello world!, разобраться или модифицировать которое не составит никакого труда.
Установим пространство где будет развернуто данное приложение.
В нашем случае это пространство – development.
Последовательно сделаем Вuild приложения и проекта.
Результатом билдинга будет .mtar файл в папке mta_archives, которая расположена в верхней части меню с иерархией проекта.
Необходимо выбрать содержащийся в папке .mtar файл и сделать для него операцию «Deploy to XS Advanced».
Вернёмся к командной строке и переключимся на пространство development:
xs target -o HANAExpress -s development
Выведем список всех запущенных приложений в этом пространстве:
xs apps
Отроем наше приложение в браузере:
Заключение
Установить базу данных SAP HANA с сервером приложений HANA Extended Application Services, Advanced Model и написать своё первое приложение оказалось не сложно. В следующей статье рассмотрим более сложный пример, включающий в себя взаимодействие с базой данных SAP HANA.
Роман Горбенко, консультант SAP EWM / SAP BASIS
krids
MDC это все-таки далеко не «типичный корпоративный SAP-ландшафт» и для БД классичесих SAP-систем в основном делают single-tenant. Ни разу не видел, чтобы в реальном проде кто-то совмещал базы, скажем, S/4, BW, HCM в одном инстансе. MDC это больше про облачную историю, ну или DEV/QAS среды.
romangorbenko Автор
Моё почтение. С версии HANA 2.0 SPS 01 возможна только установка в виде MDC.
«With the SAP HANA 2.0 SPS 01 release (2017), the multi-container mode is the default and only supported mode to run SAP HANA systems.»[1]. Нет каких — либо ограничений на использование MDC, в том числе и в продакшен среде.
krids
Приветствую. Это понятно. Речь шла о SYSTEMDB + 1 tenant only. Действительно, технически при наличии ресурсов ничто не мешает упихать все БД тенантами в один инстанс, но есть нюансы, например, как следствие, единая версионность всех БД-тенантов (что может быть неприемлемо для конкретных SAP-систем) и репликация (и takeover) в режиме все или никто. Собственно с учетом этого при необходимости консолидации продуктивных БД на одном хосте деплоймент в MultiSID-варианте выглядит, имхо, предпочтительнее, хотя тоже не без некоторых ограничений.
romangorbenko Автор
Моё почтение. Да, тоже полностью согласен. Takeover — это хоть и маленький (~5 мин.), но всё же — это будет даунтайм для всех систем систем в ландшафте. Скорректирую статью. Спасибо за комментарий.