So erstellst du eine self-hosted Airbyte Umgebung in der Azure Cloud

In dieser Kurzanleitung zeige ich, wie man in einer virtuellen Maschine in Azure eine Airbyte-Umgebung in Betrieb nimmt.

Airbyte ist eine Datenintegrationsplattform, die dabei hilft, Daten aus verschiedenen Quellen zu sammeln und in Data Warehouses, Data Lakes und ähnliche Ziele zu übertragen. Airbyte kann sowohl als Opensource-Variante selbst oder als SaaS-Lösung beim Anbieter mit einem entsprechenden Pricing-Modell betrieben werden.

Diese Plattform konzentriert sich besonders auf die Schritte des Datenextrahierens und -ladens (Extract und Load) aus verschiedensten Quellen. Mit über 300 vordefinierten Konnektoren ermöglicht Airbyte die nahtlose Übertragung von Daten aus Anwendungen, APIs und Datenbanken zu den gewünschten Speicherorten. Die Konfiguration der Datenladungs- und Synchronisationsaufgaben erfolgt einfach über eine webbasierte Oberfläche. Airbyte nutzt zudem containerbasierte Technologien, wobei jeder Verbindungstyp seinen eigenen Container erhält.

Mehr Informationen lassen sich auf der offiziellen Webseite oder dem Github-Repo finden.

Mit Airbyte Self-Managed Community (die Open Source Version) kann man eine der folgenden Optionen für die Infrastruktur nutzen:

In diesem Beitrag zeige ich, wie das Setup in einer VM in der Azure Cloud gemacht werden kann. Falls du noch nicht soviel Erfahrung mit der Azure Cloud hast, empfehle ich dir folgenden Artikel, welchen ich geschrieben habe: Erste Schritte mit der Azure Cloud.

Disclaimer: Es versteht sich wohl von selbst, dass bei einem professionellen Einsatz dieses Setups zusätzliche Massnahmen für die Härtung des Systems getroffen werden müssen. Auf diese werden hier nicht eingegangen und es obliegt in der Verantwortung der Person, welche das Setup vornimmt.

Erstellen der virtuellen Maschine

Als ersten Schritt erstelle ich eine eigene Ressourcengruppe für Airbyte.

Innerhalb der Ressourcengruppe klicke ich auf “Create”, um eine neue Ressource zu deployen. Ich suche nach “virtual machine” und wähle die entsprechende Ressource aus.

Die anschliessende Konfiguration sieht folgendermassen aus:

Bei der Authentifizierung für den Admin-Account wähle ich die Methode “SSH public key”.

Airbyte schreibt Logfiles und braucht entsprechend Platz auf der SSD. Die vorgegebenen 64 GB könnten ein bisschen knapp werden, darum wähle ich 128 GB. Premium-SSD braucht es nicht, dort wechsle ich auf Standard SSD.

Den Haken bei “Delete Public IP…” setze ich, ebenfalls bei den anderen Tabs. Es macht Sinn, dass bei der Löschung eine VM sämtliche zugehörigen Komponenten ebenfalls gelöscht werden. Ansonsten bleiben viele Ressourcen im Account liegen, wenn man die VM mal wieder löscht.

Die Option “Microsoft Defender for Cloud” deaktiviere ich. Wie bereits erwähnt, geht es hier um einen einfachen Prototypen. Bei einem professionellen Einsatz würde ich unter anderem diese Option aktivieren.

Diagnostics brauche ich nicht, also auch deaktivieren.

Der Tab Advanced kann übersprungen werden und gleich auf “Review & Create” klicken und dann die VM erstellen lassen. Jetzt poppt ein Fenster auf, in welchem man den privaten Schlüssel herunterladen kann. Es ist wichtig, diesen an einem sicheren Ort zu speichern.

Nachdem das Setup fertig ist, sieht man in der Ressourcengruppe diverse neu erstellte Ressourcen, welche zur VM gehören und automatisch erstellt wurden.

VM konfigurieren

In einem ersten Schritt verbinde ich mich mit der VM und benutze dabei den “Connect”-Button.

Es öffnet sich ein Sub-Menü mit demselben Namen “Connect”.

Jetzt erscheint eine Fehlermeldung, weil die Firewall meinen Zugang blockiert. Die Einstellung für das generelle Öffnen von Port 22 habe ich während dem Setup absichtlich übersprungen. Damit ich auf die VM zugreifen kann, muss ich zuerst eine Firewall Regel erstellen. Dazu gehe ich zu den Netzwerkeinstellungen und erstelle eine Regel.

Nebst dem Destination-Port 22 gebe ich auch meine IP-Adresse an. Wenn ich mich das nächste Mal einloggen möchte, muss ich eventuell die IP-Adresse in der Firewall-Regel ändern, da sich meine eigene IP-Adresse ändern kann.

Für die Verbindung wähle ich Native SSH, da ich mich von meinem lokalen Rechner verbinden will.

In dem sich öffnenden Fenster finden sich Anweisungen, wie man sich mit der VM verbinden kann.

Nachfolgend zeige ich die Schritte in meinem lokalen Terminal. Als erstes wechsle ich in das Verzeichnis, in welchem ich den Schlüssel gespeichert habe. Es müssen die Dateirechte angepasst werden. Anschliessend kann ich mich verbinden und bin in der VM eingeloggt. Die Befehle habe ich nachfolgend aufgelistet, sie müssen noch an die eigene Umgebung angepasst werden.

   cd /path/to/private_key/Airbyte
   ls -lah
   chmod 600 <private_key>.pem
   ls -lah
   ssh -i <private_key>.pem <username>@<public-ip>

Als erster Schritt innerhalb der VM müssen sämtliche Updates eingespielt werden:

sudo apt-get update && apt-get upgrade

Jetzt möchte ich noch 2 Pakete installieren: fail2ban und htop.
Fail2Ban ist ein Open-Source-Programm für Linux-Systeme, das entwickelt wurde, um Server vor Brute-Force-Attacken zu schützen. Brute-Force-Attacken sind Angriffe, bei denen ein Angreifer wiederholt versucht, sich mit verschiedenen Kombinationen von Benutzernamen und Passwörtern anzumelden, um Zugang zu einem System zu erhalten.

Fail2Ban überwacht Logdateien auf dem Server, um wiederholte fehlgeschlagene Anmeldeversuche zu erkennen. Sobald eine bestimmte Anzahl von fehlgeschlagenen Versuchen von einer bestimmten IP-Adresse erkannt wird, sperrt Fail2Ban diese IP-Adresse für eine vordefinierte Zeit. Dies hilft, das Risiko von erfolgreichen Angriffen zu verringern, indem potenzielle Angreifer vorübergehend blockiert werden.

Zusätzlich zur Abwehr von Brute-Force-Angriffen kann Fail2Ban auch für andere Sicherheitszwecke konfiguriert werden, wie zum Beispiel das Blockieren von IP-Adressen, die verdächtige oder unerwünschte Aktivitäten auf dem Server zeigen. Insgesamt ist Fail2Ban ein nützliches Werkzeug, um die Sicherheit von Linux-Servern zu verbessern, indem es potenzielle Bedrohungen proaktiv erkennt und darauf reagiert.

htop ist ein interaktives Prozessüberwachungsprogramm für Unix-ähnliche Betriebssysteme wie Linux. Es bietet eine verbesserte Benutzeroberfläche im Vergleich zu älteren Prozessüberwachungswerkzeugen wie top. Mit stop können Benutzer Echtzeitinformationen über die Auslastung von CPU, Speicher, Swap, sowie detaillierte Informationen über laufende Prozesse und deren Eigenschaften anzeigen.

Nachfolgend der Befehl, um diese beiden Tools zu installieren:

apt-get install fail2ban htop

Natürlich sollten noch weitere Optimierung-Schritte getätigt werden, diese richten sich aber nach den individuellen Bedürfnisse des Users. Ich verzichte hier auf weitere Erklärungen.

Airbyte installieren

Für die Installation von Airbyte gibt es eine ausführliche Anleitung auf der folgenden Webseite: https://docs.airbyte.com/deploying-airbyte/on-azure-vm-cloud-shell

Diese habe ich entsprechend nachvollzogen.

Wenn ich sehe, dass die Installation abgeschlossen ist, logge ich mich aus

Ich stoppe nun den Dienst indem ich die Tastenkombination [ctrl]+[c] eintippe.

Ich wechsle ins Verzeichnis von Airbyte und öffne das file .env

cd airbyte/
nano .env

Ich ändere folgende Einträge ab:
– BASIC_AUTH_USERNAME
– BASIC_AUTH_PASSWORD

Mit der Tastenkombination [Ctrl]+[x] werden die Änderung gespeichert.

Jetzt muss Airbyte neu gestartet werden. Dazu wechsle ich ins Verzeichnis airbyte und führe das shellscript aus:

cd airbyte/
./run-ab-platform.sh 

Jetzt wird Airbyte im Vordergrund ausgeführt. Ich sehe dass es funktioniert, aber so kann ich nicht arbeiten. Um es wieder zu stoppen, tippe ich die Tastenkombination [Ctrl]+[c] ein.

Ich kann die Airbyte Anwendung, resp. die Container im Hintergrund (im “detach”-Modus) ausführen, indem ich den folgenden Docker Compose Befehl ausführe:

docker compose up -d 

So wird Airbyte ausgeführt und ich kann trotzdem weiter im Terminal arbeiten.

Login in die GUI

Als zusätzliches Sicherheits-Feature verbinde ich mich nicht direkt mit der VM, sondern erstelle einen SSH-Tunnel. Auf meinem lokalen Terminal tippe ich folgende Befehlszeile ein, um den Tunnel zu erstellen:

ssh -N -L 8000:localhost:8000 -i <private_key>.pem <user>@<ip-address>

Nun den Browser öffnen und folgende Adresse eintippen: localhost:8000

Es öffnet sich eine Login-Maske. In dieser trage ich den Benutzernamen und Passwort ein, welche ich in den vorhergehenden Schritten im .env-File angepasst habe. Wenn ich dann eingeloggt bin, folgen ein paar einfache Schritte, um die Umgebung einzurichten. Diese sind ziemlich selbsterklärend.

Nach ein paar Minuten ist die Umgebung schon bereit, und man kann mit der Erstellung der ersten Pipelines beginnen.

Die Frage ist jetzt, ob die VM 24/7 immer online sein muss. Das würde je nach Grösse und Konfiguration hohe Kosten verursachen. Wenn ich meine Dateningestion nur einmal am Tag, oder in der Nacht laufen lassen will, kann man die VM automatisch starten und dann wieder abstellen. Airbyte startet automatisch von selbst, wenn die VM gestartet wird. Diesen Automatismus kann man z.B. mit einer Logic App erstellen. Oder in meinem Fall zwei Logic Apps, eine zum Starten und eine zum Beenden der VM.

Logic App erstellen

Ich wechsle im Azure Portal in die Ressourcengruppe und erstelle mir eine Logic App.

Ich wähle, den Consumption-Plan, welcher günstiger und völlig ausreichend ist.

Wenn die Logic-App deployt wurde, wechsle ich in den Edit-Mode.

Im Designer starte ich mit dem Trigger “Recurrence”.

Ich will, dass die VM in der Nacht um 01:00 Uhr gestartet wird.

Für den nächsten Task gibt es eine vordefinierte Action “Start virtual machine”.

Die einfachste Art, sich zu verbinden ist mittels “Sign in”. In der Praxis würde man aber nicht einen persönlichen Account verwenden, sondern einen Service Principal oder eine Managed Identity. Der Einfachheit halber verwende ich aber trotzdem die erste Methode.

Die nachfolgenden Schritte sind selbsterklärend.

Die App kann getestet werden, indem man auf “Run Trigger” klickt.

Sämtliche Runs kann man sich auch anzeigen lassen.

Nachdem der terminierte Start funktioniert hat, erstelle ich eine zweite Logic App für das Stoppen der VM. Man muss ich Gedanken machen, wie lange die Pipelines in Airbyte benötigen. Wenn dieses Zeitfenster zu kurz gewählt wird, dann besteht die Gefahr, dass die Daten nicht vollständig geladen werden. Ich entscheide mich für 45 Minuten, was mehr als genug sein sollte für einfache und kleine Datenmengen.

Wiederum dieselben Schritte für das Power Off.

Auch die 2. Logic App teste ich, ob alles wie gewünscht funktioniert. Nun warte ich einen Tag und schaue am nächsten Tag, ob die VM wie gewünscht gestartet und wieder beendet wurde, und ob die Pipelines in Airbyte auch erfolgreich durchliefen..

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert