How To: SAP HANA Express Installation in der eigenen Cloud

How To: SAP HANA Express Installation in der eigenen Cloud

Veröffentlicht am 26. Januar 2021 von

Jörg Brandeis

| SAP HANA |


Vorsicht bei Ionos

Ich habe ganz kurzfristig (29.7.2024) eine Nachricht erhalten, dass mein Server am 31.8.2024 abgeschaltet wird. Das passiert also mit genau 1 Monat Vorankündigung und mitten in den Sommerferien, wo niemand Zeit hat, sich darum zu kümmern.

  • Die Frist ist viel zu kurz - für einen Hoster ist das völlig unprofessionell
  • Die Kommunikation ist wirklich übel: "Wir bedanken uns für Ihr Vertrauen und entschuldigen uns für eventuelle Unannehmlichkeiten."
    • Nein, Vertrauen habe ich keines mehr in dieses Unternehmen.
    • Jeder betroffene Kunden wird große Unannehmlichkeiten damit haben.

Der Support kann nichts machen, das ist halt so. Netter Mensch, der aber daran nichts ändern kann.

Dann doch lieber bei Amazon auf AWS gehen. Die sind wenigstens von der Kommunikation und Zuverlässigkeit besser.


Die eigene HANA Express Installation ist die einfachste Option, nach dem die SAP Ihre HANA Express (HXE) Images für die Hyperscaler nicht mehr bereitstellt. Ich habe mir selber eine HXE Installation (database server only) auf einem virtuellen Server bei IONOS erstellt. Das dauert zwar länger, ist aber gerade für einen Server, den man rund um die Uhr laufen lassen will, mit 200-300€ p.a. eigentlich viel günstiger.

Wichtig: Nur Binärinstallation von HANA Express, database server only

Hier beschreibe ich nur die Variante der Binärinstallation von HANA Express, database server only. D.h. es "fehlen" der Applikationsserver XS Advanced und Anwendungen wie z.B. Web IDE und SAP HANA Cockpit. Für das Lernen von SQLScript und dem Arbeiten mit dem System mit Eclipse ist das völlig ausreichend. Wer Web-Applikationen entwickeln will, der muss an der entsprechenden Stelle mehr Dateien installieren. Und Die Variante der VM-Installation ist etwas einfacher.1

Diese Anleitung lädt alle zum Nachmachen ein, die keine Lust haben, sich mit allen Details selber auseinanderzusetzen. Da ich kein Basis-Administrator oder Linux Experte bin, kann ich nicht garantieren, dass mein Vorgehen das Beste ist, dass das System optimal konfiguriert ist und das ich beim günstigsten Hoster bin. Was ich aber mit Sicherheit sagen kann: Wenn man sich an die Beschreibung hält, dann bekommt man mit wenig Zeitaufwand eine lauffähige SAP HANA Datenbank.

Das ist der Weg... zur eignen HANA Express Installation

Ich beschreibe nur, was ich gemacht habe. Dabei werde ich nicht auf alle anderen möglichen Szenarien und Konstellationen eingehen. Dadurch wird die Anleitung schlanker und lässt sich 1:1 reproduzieren. Ob das für Sie und Ihr Szenario passt, können Sie ganz leicht an der folgenden List ablesen. Hier sind die wichtigsten Eckpfeiler der Anleitung beschrieben.

  • Virtuellen Server buchen: Warum bin ich bei IONOS und nicht bei einem der Hyperscalern
  • Einspielen eines OpenSuse Leap 15 Linux Images
  • Installation der notwendigen Voraussetzungen (Java, Bibliotheken)
  • Vergabe einer Sub-Domain, so dass der Server beispielsweise unter hana.brandeis.de erreichbar ist
  • Installation und Aufruf des HANA Downloaders
  • Installation der HANA Express (database server only)
  • Notwendige Portfreigaben der Firewall
  • Einrichtung des Systems in Eclipse
  • Starten und Beenden des Systems

Es werden keine Linux Details besprochen, d.h. wenn man davon abweicht, dann sollte man wissen was man macht. Die notwendige Doku habe ich an jeder Stelle verlinkt, das ist aber dann nicht mehr mein Weg.

Voraussetzungen und Software

  • Grundlegende Kenntnisse in Linux und der Bedienung von FTP-Client und SSH Terminal
  • 1 Server, Anforderungen siehe unten
  • SSH Terminal, z.B. PuTTY
  • FTP Programm, z.B. FileZilla

Warum ein klassicher Webhoster und kein Hyperscaler?

Zunächst möchte ich mein Anforderungsprofil beschreiben.

  • Die SAP HANA soll rund um die Uhr erreichbar sein. Als ich noch ganz alleine meine Schulungen gemacht habe, war das egal. Ich konnte einfach schnell das System in der CAL starten und nach dem Kaffeholen loslegen. Wenn man zu dritt ist, geht das nicht mehr so einfach. Also soll die Kiste rund um die Uhr laufen.
  • Der Zugang sollte in erster Linie mit Eclipse erfolgen. D.h. mir reicht die SQL-Konsole und die reinen XSC Calculation Views. Das ist für BW-Berater ausreichend. Trotzdem soll auf dem System grundsätzlich XSA laufen, damit man mal die WebIDE zeigen kann.
  • Bei Schulungen sollen bis zu 20 Teilnehmer gleichzeitig arbeiten können, allerdings mit sehr überschaubarem Datenvolumen: Dem Demo Datenmodell zum Buch SQLScript für SAP HANA. Der Zugang hierbei erfolgt nur über die SQL-Konsole.
  • Ein regelmäßiges Backup ist nicht notwendig. Vielleicht aber das Sichern von einzelnen Systemzuständen in Images, um vor Schulungen immer den gleichen Zustand herzustellen.
  • Das System soll nicht physisch in meinem Büro stehen. Ich möchte nicht noch mehr Blech da rumstehen haben. Und da meine Schulungsteilnehmer darauf zugreifen, soll die Internetanbindung maximal schnell sein

In 2020 hatte ich bereits einen virtuellen Server für ein Konferenzsystem bei IONOS betrieben und war damit sehr zufrieden. Darum hatte ich mich bei der neuen Heimat für meine HXE auch dort umgesehen. Soweit ich die Preislisten von Google Cloud Platform (GCP), Amazon AWS und Microsoft Azure verstehe, sind sie nicht günstiger2

Für eine HANA Express Installation nur mit Datenbank und ohne XSA Applications empfiehlt die SAP ein Minimum von 2 Cores und 8 GB Ram. Für das etwas grössere Paket VPS XL RAM mit 6 vCores, 18 GB Ram und 160GB SSD verlangt IONOS im ersten Jahr 162€ und für jedes weitere Jahr 288€. Das erscheint mir relativ günstig. Aber ich bin mir sicher, dass auch andere Hoster preiswerte virtuelle Server in dieser Größenordnung haben. Natürlich hätte ich den Server auch eine Nummer kleiner nehmen können, aber bei Schulungen soll er nicht in die Knie gehen.

Ein anderer Aspekt für die Entscheidung für einen "kleineren" Hoster3

Das Linux Image einspielen

Wenn man einen vServer bucht, dann kann man dort ganz einfach unterschiedliche Betriebssysteme installieren. Ich wähle OpenSuse Leap 15. Das steht zwar nicht auf der Liste der empfohlenen Linux-Varianten, ist aber bei meinem Hoster verfügbar und ich muss nicht selber Linux installieren.

Server Verwaltung bei Ionos

Installation des OpenSuse Leap 15 Images

Backup Agent stelle ich aus, weil das zusätzliche Kosten verursacht. Für mich ist ein sauberes Image nach der Installation wichtiger als ein permanentes Backup. Es wird ein Pop-Up mit dem Kennwort des Servers angezeigt. Unnötig zu erwähnen, dass man sich dieses wirklich gut merken muss. Ansonsten kommt man nicht mehr auf die Maschine.

Popup mit Kennwort

Pop-Up mit Kennwort

Vorbereiten des Betriebssystems

Nach der Installation des Betriebssystems müssen wir uns mit der Konsole als Root verbinden und dort ein paar Dinge installieren. Dafür verwende ich den kostenlosen SSH-Client PuTTY 4. Die Verbindungsparameter finde ich auf der Serverübersicht:

Verbindungsparameter für den Server

Die wichtigsten Verbindungsparameter

Also starten wir PuTTY und verbinden uns mit der IP Adresse:

Putty Einstellungen

PuTTY Einstellungen: Nur die IP und Port sind relevant

Dort melden wir uns mit dem Benutzernamen root und dem Kennwort ein:

Linux Konsole

Linux Konsole

Ein Hinweis zur Konsole

Die meisten werden es schon wissen, aber in der Konsole steht links immer ein Prompt. Der enthält viele wertvolle Hinweise über den Kontext. Das ist gerade bei einer Anleitung wie dieser sehr wichtig.

Beispielsweise sagt der Prompt localhost:~ # das folgende: Du bist am Server mit dem Namen localhost mit einem privilegierten User (#) angemeldet und befindest dich im Home-Verzeichnis dieses Users.

Weiter unten kommt z.B. der Prompt hana:/hana # . Das System hat also jetzt den Namen hana und wir befinden uns im Verzeichnis /hana.

Installation von Java und ein paar Bibliotheken

Wenn wir verbunden sind, dann werden jetzt die notwendigen Komponenten installiert. Das machen wir mit dem Paketmanager ZYPPER. Die folgenden Zeilen bitte einzeln, nacheinander in der Konsole eingeben. Alle Fragen, die dabei gestellt werden, müssen mit Y bestätigt werden.

localhost:~ # zypper install java-11-openjdk
localhost:~ # zypper install insserv
localhost:~ # zypper install libatomic1
localhost:~ # zypper install libnuma1
localhost:~ # zypper install numactl
localhost:~ # zypper install libltdl7

oder alle zusammen auf einmal:

localhost:~ # zypper install java-11-openjdk insserv libatomic1 libnuma1 numactl

Wenn hier etwas vergessen wird, dann wird das im Anschluss bei der Installation der HANA Express zu Fehlern führen, die man sich mühsam aus den Logs raussuchen muss.

Vergabe von Hostname und Domain

Dieser Schritt ist optional. Wer ihn überspringt kann nur per IP-Adresse auf seine SAP HANA Express Installation zugreifen.

Da ich meinen Server über einen festen Hostname wie z.B. hana.brandeis.de muss ich noch ein paar extra Schritte unternehmen. Zunächst muss ich meiner Domain brandeis.de mit dem folgenden A-Record in den DNS Einstellungen eine Sub-Domain zuweisen:

image 2 1024x407

DNS-Einstellungen für die Sub-Domain

Und jetzt muss ich dem Server noch mitteilen, dass er auf den Namen hana.brandeis.de hört. Dazu muss ich zwei Änderungen in Konfigurationsdateien machen. In die Datei

  • /etc/hostname muss der neue Hostname hana reingeschrieben werden. Und in
  • /etc/hosts muss einen Eintrag für hana.brandeis.de eingefügt werden:

212.227.215.128 hana.brandeis.de hana

Da ich aber mit den Linux Konsolen Texteditoren nicht so gerne arbeite, lade ich die Dateien per FTP runter und wieder hoch. Dazu verbinde ich mich per IP mit dem Benutzernamen root und meinem Passwort per FTP mit dem Server. Als FTP-Client verwende ich den kostenlosen FileZilla5 :

FTP Programm FileZilla

So kann ich die Dateien bequem in meinem gewohnten Notepad++ (oder dem normalen Notepad) bearbeiten und wieder speichern.

Notepad

Bearbeiten der Datei `/etc/hostname` in Notepad++

Notepad++

Bearbeiten der Datei `/etc/hosts` in Notepad++

Nach dem Editieren müssen die Dateien jeweils gespeichert, geschlossen und hochgeladen werden. Damit die beiden Einstellungen greiffen, muss der Server jetzt neu gestartet werden. Das erreichen wir in der Konsolemit der Eingabe von

reboot

Installation und Aufruf des HANA Download Managers

Zum Download des HANA Download Manager müssen Sie sich zunächst auf dieser Seite https://www.sap.com/cmp/td/sap-hana-express-edition.html registrieren. Danach können Sie den Download Manager runterladen. Ich habe mich für die Platform-Independent Variante entschieden:

Download Manager der SAP

Auswahl des HANA Download Managers

Per FTP habe ich dann den DM in das Verzeichnis /root hochgeladen:

FTP zum Upload

Dowlnoad Manager im Verzeichnis /root

Dananch wieder mit PuTTY neu verbinden. Jetzt sollte auch der neue Hostname (bei mir hana )angezeigt werden:Wichtig ist, dass wir im Verzeichnis /root sind. Dort wird zunächst noch ein neues Verzeichnis /root/Downloads angelegt und dann der DM mit den passenden Parametern gestartet:

hana:~ # mkdir Downloads
hana:~ # java -jar HXEDownloadManager.jar linuxx86_64 installer Getting_Started_HANAexpress_Binary_Installer.pdf hxe.tgz

Konsole nach erfolgreichem Download

Konsole nach dem erfolgreichen Download

Starten der HANA Express Installation

Navigieren ins Hauptverzeichnis und Anlegen eines neuen Unterverzeichnis /hana:

hana:~ # cd ..
hana:/ # mkdir hana
hana:/ # cd hana

Dort dann die Dateien Entpacken:

hana:/hana # tar -xvzf /root/Downloads/hxe.tgz

Und jetzt wird installiert:

hana:/hana # ./setup_hxe.sh

Dabei werden uns allerlei Fragen gestellt, deren Standardwerte wir mit Enter einfach übernehmen können oder nach unserem Gusto anpassen. Ich mache hier die folgenden Änderungen:

  • Als System-ID wähle ich DEV, damit ich das System von anderen HANA Express Systemen in Eclipse unterscheiden kann.
  • Als Instance Number wähle ich 00. Das spiegelt sich später in den Ports wieder, wo die 2. und 3. Stelle die Instanz Nummer sind.
  • Das Passwort müssen wir uns wieder gut merken, denn das wird auch für die HANA Default User verwendet.
hana:/hana # ./setup_hxe.sh
Enter HANA, express edition installer root directory:
    Hint: <extracted_path>/HANA_EXPRESS_20
HANA, express edition installer root directory [/hana/HANA_EXPRESS_20]:

The SAP HANA system ID (SID) is three uppercase alphanumeric characters to identify the SAP HANA system.

Enter SAP HANA system ID [HXE]: DEV

An instance number is a two-digit numeric identifier for the SAP HANA instance.

Enter instance number [90]: 00

Enter local host name [hana.brandeis.training]:

Password must be at least 8 characters in length.  It must contain at least
1 uppercase letter, 1 lowercase letter, and 1 number.  Special characters
are allowed, except  (backslash), ' (single quote), " (double quotes),
` (backtick), and $ (dollar sign).

Enter HDB master password:
Confirm "HDB master" password:

##############################################################################
# Summary before execution                                                   #
##############################################################################
HANA, express edition installer : /hana/HANA_EXPRESS_20
  Component(s) to install                   : HANA server, Application Function Library, SAP HANA EPM-MDS
  Host name                                 : hana.brandeis.training
  HANA system ID                            : DEV
  HANA instance number                      : 00
  Master password                           : ********
  Log file                                  : /var/tmp/setup_hxe_2021-01-26_11.10.33.log

Proceed with installation? (Y/N) : Y

Notwendige Portfreigaben der Firewall

Während die Installation läuft, können wir uns um die Portfreigabe kümmern. Die notwendigen HANA-spezifischen Ports sind:

  • 3\<NN>15 - SQL/MDX Zugang für die erste Tenant Datenbank
  • 3\<NN>13 - SQL/MDX Zugang zur Systemdatenbank
  • 5\<NN>13 bis 5<\NN>14 - Instance Agent

In dieser Liste steht \<NN\> für die Instanz Nummer. In meinem Beispiel 00, es wird aber auch gerne der Standardwert 90 gewählt. Alle Ports zur SAP HANA finden Sie auf dieser Seite, wo Sie noch auf das Produkt SAP HANA Platform einschränken sollten.

Bei IONOS sieht die Portkonfiguration dann so aus:

Ports freigeben bei Ionos

Es dauert übrigens ein paar Minuten bis bei IONOS die Ports dann wirklich zugänglich sind. Dazu bitte den Status beachten: Erst wenn statt "Wird Konfiguriert" dort "Aktiv" steht, dann ist das fertig.

Einrichtung des Systems in Eclipse

Wenn die Installation durch ist und die Ports freigegeben wurden, dann können wir uns mit Eclipse verbinden. Die Installationsprozedur hat uns schon eine Tennant-Datenbank mit dem Namen der System-ID angelegt. In meinem Fall also DEV:

Verbindungsparameter in Eclipse

Benutzer und Kennwort eingeben

Verbindungsparameter in Eclipse

Starten und Beenden des Systems

Das System ist dafür ausgelegt, das es rund um die Uhr läuft. Sollte es z.B. für ein offline-Backup mal angehalten werden oder nach dem Serverneustart hochgefahren werden, so müssen wir uns dafür mit den Benutzer \<sid\>adm anmelden, also bei mir mit devadm. Um das System zu starten, geben wir HDB start ein:

HANA Express Installation starten und stoppen

Und zum Stoppen entsprechend HDB stop .

Nach dem alles läuft, empfehle ich die Erstellung eines Images. Damit kann man immer wieder den gleichen Systemstand nach der Installation herstellen.

Änderungen für die XSA Installation

Falls man die XSA mit installieren will, benötigt man mehr Pakete und mehr Speicher. Notfalls den SWAP erhöhen, siehe nächsten Abschnitt.

localhost:~ # java -jar HXEDownloadManager.jar linuxx86_64 installer hxe.tgz hxexsa.tgz shine.tgz eml.tgz apl.tgz sdi.tgz dpagent_linux_x86_64.tgz

Nachtrag, falls der Speicher nicht reicht

Die SAP empfiehlt bei der XSA Version, dass man mit weniger als 24 GB RAM noch zusätzlich den Swap Bereich auf 32 GB erweitert. Das geht relativ einfach, solange man eine Swap-Datei verwendet.

hana:~ # swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/dm-0 partition   2G   0B   -2

hana:~ # sudo lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                     8:0    0   160G  0 disk
├─sda1                  8:1    0   512M  0 part /boot
└─sda2                  8:2    0 159.5G  0 part
  ├─vgopensuse-lvswap 254:0    0     2G  0 lvm  [SWAP]
  └─vgopensuse-lvroot 254:1    0 157.5G  0 lvm  /
sr0                    11:0    1  1024M  0 rom

hana:~ # free -m
              total        used        free      shared  buff/cache   available
Mem:          17962        6045       10160         117        1755       11517
Swap:          2047           0        2047

hana:~ # sudo fallocate -l 32G /swap_file

hana:/ # chmod 600 /swap_file

hana:/ # mkswap /swap_file
Setting up swapspace version 1, size = 32 GiB (34359734272 bytes)
no label, UUID=39e55ea6-95b4-433c-9596-2180c4474487

hana:/ # swapon /swap_file

hana:/ # swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-0                               partition       2097148 0       -2
/swap_file                              file            33554428        0      -        
                3
hana:/ # swapon --show
NAME       TYPE      SIZE USED PRIO
/dev/dm-0  partition   2G   0B   -2
/swap_file file       32G   0B   -3

Dazu muss noch die Datei /etc/fstab erweitert werden:

LABEL=swapfile /swap_file swap  swap          0  0

Falls der Festplattenspeicher irgendwann voll ist

In der Konsole sehen wir mit der Anweisung df direkt, wie viel Speicherplatz noch frei ist:

hxe:~ # df
Filesystem     1K-blocks      Used Available Use% Mounted on
devtmpfs            4096         0      4096   0% /dev
tmpfs           32778968         0  32778968   0% /dev/shm
tmpfs           13111588   1254832  11856756  10% /run
tmpfs               4096         0      4096   0% /sys/fs/cgroup
/dev/nvme0n1p2 455285760 453984768       128 100% /
/dev/nvme0n1p2 455285760 453984768       128 100% /.snapshots
/dev/nvme0n1p2 455285760 453984768       128 100% /boot/grub2/i386-pc
/dev/nvme0n1p2 455285760 453984768       128 100% /boot/grub2/x86_64-efi
/dev/nvme0n1p2 455285760 453984768       128 100% /home
/dev/nvme0n1p2 455285760 453984768       128 100% /opt
/dev/nvme0n1p2 455285760 453984768       128 100% /root
/dev/nvme0n1p2 455285760 453984768       128 100% /srv
/dev/nvme0n1p2 455285760 453984768       128 100% /tmp
/dev/nvme0n1p2 455285760 453984768       128 100% /usr/local
/dev/nvme0n1p2 455285760 453984768       128 100% /var
/dev/nvme0n1p1    523248      5104    518144   1% /boot/efi
tmpfs            6555792         0   6555792   0% /run/user/1001
tmpfs            6555792         0   6555792   0% /run/user/472
tmpfs            6555792         0   6555792   0% /run/user/0

Wenn 100% in Verwendung sind, müssen wir wieder etwas freigeben. Sonst geht garnichts mehr auf dem System. Der Server ist dann ständig am hyperventilieren. Um den Speicherverbrauch von Verzeichnissen zu ermitteln, gibt es die Anweisung du. Wenn man nur die Summe des Speicherverbrauchs des aktuellen Verzeichnis wissen will, hilft `du -sh. Wenn man sich so etwas umschaut, findet man schnell das backup Verzeichnis:

hxeadm@hxe:/hana/shared/HXE/HDB00/backup/log/DB_HXE> du -sh
326G    .

Eine wirksame Maßnahme, die ich nur auf Spielsystemen empfehlen kann, ist das löschen aller Backup-Logs. Echte DB-Admins würden die Logs wahrscheinlich vorher irgendwo sichern.

Nur auf Spielsystemen machen! Alle Dateien in einem Verzeichnis löschen geht so:

hxeadm@hxe:/hana/shared/HXE/HDB00/backup/log/DB_HXE> rm *

Fazit

Die SAP HANA Express Installation in der eigenen Cloud ist nicht so schwer und geht auch relativ schnell. Damit macht man sich unabhängig von der SAP. Ich bin gespannt, wie sich das System auf Dauer verhält. Falls ich hier noch etwas nachjustieren muss, werde ich es natürlich auf dieser Seite veröffentlichen.


  1. Die unterschiedlichen Installationsmöglichkeiten sind hier beschrieben
  2. OK, von vollständigem Verstehen kann nicht die Rede sein. Da man für Speicher, CPU und Netzwerk separat zahlt, ist am Ende die Rechnung oft wieder höher als erwartet. Und welches der 3000 unterschiedlichen Maschinengrößen man braucht, das versteht kein Mensch. Aber ich habe zumindest einen Vergleich versucht.
  3. IONOS gehört zu United Internet, das ist ein Konzern mit über 5 Mrd. € Umsatz. Das ist natürlich nur im Vergleich zu den Hyperscalern klein. Immerhin haben sie den Sitz noch in Deutschland und zahlen hoffentlich auch hier die Steuern. war für mich, dass ich seit längerem vermeide, bei Amazon und Co. einzukaufen. Deren Geschäftsgebaren ist in vielerlei Hinsicht unethisch und ich möchte ihnen deshalb nach Möglichkeit kein Geld überweisen. Bislang war es bequem zu sagen: Die SAP bietet nur Images an für die großen drei, also kann ich gar nicht anders. Nach dem das jetzt auch nicht mehr der Fall ist, fällt diese Ausrede weg.
  4. PuTTY kann man kostenlos runterladen unter https://www.putty.org
  5. Filezilla kann man unter https://filezilla-project.org/download.php kostenlos downloaden