Hinweis:
Dieser Artikel bezieht sich auf die aktuelle On-Premises Installation von Haiilo.
1. Einleitung
Willkommen in eurer neuen Digitalen Heimat: Haiilo!
Dieses Dokument gibt euch als Systemadministratoren einige grundlegende Informationen über das eigene Hosting von Haiilo, die Systemanforderungen, Docker selbst und wie wir Anwendungsvirtualisierung einsetzen. Außerdem erhaltet ihr einige einführende Informationen zu Backups, Updates, Benutzerverzeichnis, Benutzerauthentifizierung und unserer REST-API.
Alle werden mit hilfreichen Links zu unserer Wissensdatenbank und Dokumentation versorgt.
Wir hoffen, alle eure Fragen zum Hosting von Haiilo und der Funktionsweise dahinter beantworten zu können und empfehlen euch, Notizen zu machen, wenn etwas nicht klar ist.
2. Systemanforderungen
- 2.1 Anforderungen an die Server-Software
- 2.2 Anforderungen an die Server-Hardware
- 2.3 Anforderungen an den Client-Browser
2.1 Anforderungen an die Server-Software
Haiilo kann überall eingesetzt werden, wo Docker Compose lauffähig ist. Derzeit ist dies Linux und Mac OS, aber wir empfehlen nur die Linux-Distributionen. Wir haben gute Erfahrungen mit Ubuntu, Debian, RedHat, SLES und CentOS gemacht.
Windows Server ist aufgrund fehlender Komponenten nicht möglich.
2.2 Anforderungen an die Server-Hardware
Unsere Mindestanforderungen an die Hardware für einen einzelnen Host basieren auf der Anzahl der regelmäßigen Benutzer auf eurem Haiilo.
Wenn ihr den optionalen Metriken-Stack (start-advanced.sh) ausführen möchten, um Daten wie CPU-Last, RAM-Nutzung und Backend-Einblicke zu sammeln, benötigen ihr 10 GB zusätzlichen RAM und 2 zusätzliche Kerne. Weitere Informationen zu unserem Metriken Stack findet ihr im Abschnitt 3.4 Third-Party Container.
2.3 Anforderungen an den Client-Browser
*IE11 wird nicht unterstützt. Wir empfehlen einen modernen Browser für eine gute Benutzererfahrung.
**Die Unterstützung von Microsoft Edge, älter als v80, wird in zukünftigen Versionen entfernt.
Das ist alles, was euer Client braucht.
3. Docker
Eine andere Art der Virtualisierung
Docker wird verwendet, um Anwendungspakete namens "Container" auszuführen. In einem typischen exemplarischen Anwendungsfall betreibt ein Container einen Webserver und eine Webanwendung, während ein zweiter Container einen Datenbankserver betreibt, der von der Webanwendung verwendet wird. Container sind voneinander isoliert und bündeln ihre eigenen Tools, Bibliotheken und Konfigurationsdateien und können über klar definierte Kanäle miteinander kommunizieren. Alle Container werden von einem einzigen Betriebssystemkern betrieben und sind damit leichter als virtuelle Maschinen, es gibt eher eine Virtualisierung von nur einer Anwendung als von einem ganzen Betriebssystem. Container werden aus "Images" erstellt, die ihren genauen Inhalt angeben. Images werden oft durch Kombination und Modifikation von "Base-Images" erstellt, die aus Repositorien heruntergeladen wurden.
Haiilo ist eine Java-basierte Anwendung, die als Docker Container bereit gestellt wird und zusammen mit anderen containerisierten Anwendungen wie PostgreSQL (Datenbank) und MongoDB (Filestore) mit Docker-Compose inszeniert wird.
Hinweis:
Mehr zu Docker erfahrt ihr in der offiziellen Docker Dokumentation .
3.1 Docker-Compose
Ein Werkzeug zur Definition und Ausführung von Multi-Container-Docker-Anwendungen
Mit Compose verwendet ihr eine YAML-Datei, um die Dienste eurer Anwendung zu konfigurieren. Anschließend erstellt und startet ihr mit einem einzigen Befehl alle Dienste aus eurer Konfiguration.
Mit jedem Release stellen wir eine vorkonfigurierte YAML-Datei mit dem Namen "docker-compose.yml" zur Verfügung, die eine Art Vorkonfiguration für unsere Orchestrierung von Docker-Containern ist.
Die Compose-Datei enthält alle Konfigurationsdetails wie öffentliche Ports, virtuelle Netzwerkeinstellungen, Containerlinks- damit sie miteinander kommunizieren können, Volume Mounts und nicht zu vergessen die Umgebungsparameter für die Dimensionierung und Konfiguration von tieferen Komponenten wie der Backend JVM.
Um euch einen Eindruck von dieser Technologie zu vermitteln, zeigen wir euch den Load Balancer-Teil unserer Compose-Datei:
- services: Enthält alle unsere Container, die wir orchestrieren wollen.
- coyo-lb: Ist der Hostname des Containers, so dass wir diese Abkürzung z.B. beim Verlinken verwenden können.
- image: Definiert, aus welchem Image der Container erstellt wird. Ist das Image lokal nicht vorhanden, zieht Docker es sich aus dem Docker Hub.
- environment: Hier kommen eure spezifischen Konfigurationen zum Einsatz. Wir liefern eine zusätzliche Datei, in der alle Parameter mit Werten gefüllt werden.
- links: Definiert, mit welchen Containern dieser Container über alle Ports innerhalb des virtuellen Docker-Netzwerks kommunizieren kann.
- volumes: Definiert Mounts in den virtuellen Docker-Container. Diese sind wichtig, da alle Daten beim Entfernen eines Containers verloren gehen, außer wenn einige Volumes vom Host in den Container einhängt werden.
- ports: Definition der offenen Ports. In diesem Fall ist dies also unser Load Balancer und wir wollen, dass er den gesamten HTTP-Verkehr verarbeitet, so dass die Ports 80 und 443 geöffnet werden. Die anderen Ports sind für andere öffentlich zugängliche Dienste bestimmt.
3.2 Docker Netzwerk
Docker erstellt standardmäßig eine virtuelle Netzwerkbrücke und weist den Containern dynamisch IP-Adressen zu. Dieses Netzwerk ist von außerhalb des Hosts nicht erreichbar. Um Container öffentlich zugänglich zu machen, müsst ihr ein Port Mapping konfigurieren. Mit unserer Compose-Datei erstellt Docker-Compose ein virtuelles Netzwerk namens "coyo-default", in dem nur der Load balancer veröffentlicht wird. Ohne weitere Konfiguration ist der IP-Bereich für alle Container 172.18.0.0.0.0/24.
Wie Ihr das virtuelle Netzwerk von Haiilo selbst konfigurieren könnt, erfahrt Ihr in diesem Artikel.
Und Wenn ihr Haiilo mit einem HTTP(S)-Proxy betreiben wollt, schaut in diesen Artikel.
Load balancer
Alle eingehenden Verbindungen gehen über den Haiilo-Loadbalancer. Dieser erzwingt eine SSL-Verbindung, sodass ihr ein gültiges Zertifikat benötigt, um Haiilo in unserem Standard-Setup auszuführen. Es ist aber möglich dieses neu zu konfigurieren, um den Proxy eures Unternehmens zu verwenden. Wenn ihr die Konfiguration unseres Haiilo Loadbalancer (Haproxy) ändern möchtet, müsst ihr die .conf-Datei beibehalten und Anpassungen vornehmen.
Neben den HTTP(S)-Ports 80 und 443 akzeptiert der Loadbalancer Verbindungen zu den folgenden Ports:
5601 |
5602 |
8083 |
15672 |
Hinweis:
Anderen Dienste wie Datenbank und Filestore sind von außerhalb des Hosts nicht zugänglich.
3.3 Haiilo Container
Haiilo stack
Diese Container sind das Herzstück von Haiilo. Es besteht aus Load Balancer, Backend, Frontend, Push, Dokumentation und Backup.
Load Balancer |
Backend |
Frontend |
Push |
Docs |
Backup |
i18n |
Gateway |
3.4 Third-Party Container
Abhängigkeiten
Dies sind die obligatorischen Abhängigkeiten, um Haiilo auszuführen.
PostgreSQL |
MongoDB |
Elasticsearch |
RabbitMQ |
Redis |
Tika |
Service-Discovery /Eureka |
Logging Stack (ELK)
ELK alias Elastic Stack wird am häufigsten in der Protokollanalyse in IT-Umgebungen eingesetzt und besteht aus drei verschiedenen Open-Source-Projekten. Mit diesem Stack könnt ihr eure Protokolldateien aller Container mit einem Webinterface einfach durchsuchen:
Elasticsearch |
Logstash |
Kibana |
Metriken Stack (PROM) - Optional
Überwacht euer Haiilo mit dem PROM-Stack. Da dieser Stapel zusätzliche RAM-Ressourcen benötigt und ihr bereits ein Überwachungstool in eurem Unternehmen verwenden könntet, ist dieser Stack optional und kann mit dem erweiterten Startskript (start-advanced.sh) gestartet werden. Das findet ihr in jedem unserer Releases.
Interessante Kennzahlen über euer Haiilo findet ihr in unseren vorkonfigurierten Grafana-Dashboards, bspw. CPU- und Speicherauslastung der einzelnen Container und viele weitere detaillierte Informationen.
Prometheus |
Grafana |
cAdvisor |
Exporter |
4. Haiilo Home-Verzeichnis
Jedes Haiilo Release enthält ein Zip-Paket mit Start-/Stopp-Skripten der bereits erwähnten Compose-Datei und der wichtigen .env-Datei, in der all eure Umgebungsparameter mit Standardwerten eingestellt sind.
start.sh |
start-advanced.sh |
stop.sh |
docker-compose.yml |
.env |
.services (deprecated ab v32) |
coyo-data/ |
4.1 Update
Wenn ihr auf eine neue Version von Haiilo aktualisieren möchten, müsst ihr nur das Zip-Paket herunterladen.
Erstellt einfach ein Backup (Anleitung), stoppt Haiilo mit unserem mitgelieferten stop.sh-Skript und entpackt sowie ersetzt alle oben genannten Dateien. Es wird dringend empfohlen, die .env-Datei auf neue Parameter zu überprüfen, die in der .env-Datei angepasst werden müssen. Die Änderungen der Parameter, die wir mit jedem Release vorgenommen haben, findet ihr in unseren Release Notes.
5. Benutzerverwaltung und Authentifizierung
Benutzerverwaltung
Wenn ihr Haiilo zum ersten Mal startet, wird ein lokales Benutzerverzeichnis verwendet. Wenn ihr ein externes Benutzerverzeichnis hinzufügen möchtet, ist das kein Problem:
Haiilo unterstützt das Protokoll LDAP(S) für die Benutzerprovisionierung, sodass Verzeichnisse wie MS Active Directory, MS Azure AD und OpenLDAP problemlos zu integrieren sind.
Hinweis:
Hier findet ihr die Anleitung
Authentifizierung
Neben der lokalen Authentifizierung mit Benutzern des lokalen Benutzerverzeichnisses, authentifizieren sich Benutzer von externen Benutzerverzeichnissen gegenüber eurem Haiilo über LDAP(S) und ihr könnt auch andere Authentifizierungsanbieter hinzufügen.
Haiilo unterstützt die Authentifizierung über SAML 2.0 und OpenID mit seinem OAuth 2.0-Standard, sodass ihr MS Office SSO, MS ADFS, Google, Facebook, LinkedIn und so weiter problemlos integrieren könnt.
Hinweis:
Eine Anleitung findet ihr hier.
6. REST API
Unsere REST-API stellt euch einige zusätzliche Verwaltungsfunktionen zur Verfügung, wie z. B. die Neuindizierung der Suchindizes oder den Status des Servers. Außerdem ist es möglich, alle Funktionen zu nutzen, die Haiilo im Web anbietet sowie die Profilfelder der Benutzer anzupassen.
Hinweis:
Mehr Informationen erhaltet ihr in unserer Dokumentation.