Ich hatte mich bereits for Einsatz von Traefik im Heimlabor für die Möglichkeit interessiert, mehrere virtualisierte Container den gleichen Dienst auf dem gleichen Port anbieten zu lassen und eine Art Applikationsrouter über den Namen, den der Client zum Verbindungsaufbau nutzt die Verbindung zur jeweiligen Instanz "routen" zu lassen...
Tatsächlich war die Idee, von der alles ihren Ausgenag nahm folgende: Man stelle mehrere Datenbank-Instanzen als Docker-Container bereit. Die unterschiedlichen Entwicklungsteams bekommen je eine Instanz zugeteilt. In einem normalen Dockerumfeld ohne zusätzliche Maßnahmen würden die Datenbank-Server alle den Standardport anbieten und Docker würde jede Instanz auf einen anderen Port mappen.
Jedes Team oder abstrakter: jeder Client müsste sich dann zum selben Host (dem Dockerhost), aber auf einen anderen Port verbinden. Nun weiß ich auch, dass man die Datenbank-Instanzen auch zu einem High-Availability-Cluster mit Replikation zusammenschalten und jedem Client sein eigenes Schema geben könnte - aber ich möchte hier verdeutlichen, wie die Idee antstand - und außerdem könnte es ja sein, dass die einzelnen Clients spezifische Versionen der Datenbanklösung benötigen. Dieses Szenario wäre mit einem HA-Cluster nicht mehr abzubilden.
Nachdem wir diese Idee einige Zeit besprochen und durchdacht hatten, kam ein Kollege mit der Inspiration Traefik. Leider stellte sich schnell heraus, dass Traefik zwar ideal für genau dieses Szenario war - aber nur wenn die Protokolle HTTP oder HTTPS zur Kommunikation zum Einsatz kamen.
Die neue Version 2.0 von Traefik änderte das - die Werbung versprach nun auch jedwede TCP-Kommunikation routen zu können. In den Zeiten der Quarantäne spare ich viel Zeit, die sonst mit Pendeln draufgeht, vor einiger Zeit hatte ich die Migration zu Traefik 2.2 bereits vollzogen und so hatte ich Muße, die alte Idee nochmals im Kontext von Traefik 2.x zu durchdenken.
Leider kam ich damit auch nicht weiter - denn die Voraussetzung für TCP-Routing in Traefik 2.0 heißt Transport Layer Security: Es wurde ein neues Konzept eingeführt, das SNI heißt: beim Aufbau verschlüsselter Verbindungen ist es mit Server Name Indication - dafür steht SNI nämlich - möglich, dass der Client, die Information darüber, mit welchem Host er eine Verbindung wünscht, unverschlüsselt überträgt.
Das heißt, dass der Server eine TLS-Schnittstelle anbieten muss, die der Client zur Verbindung benutzt und gleichzeitig muss der Client SNI unterstützen. Es lassen sich im Netz diverse Darstellungen finden, dass andere bereits das hier geschilderte Datenbank-Szenario probiert haben und an der fehlenden Unterstützung an der einen oder anderen Stelle gescheitert sind...
Ich habe hier trotz allem nochmals einige Links zusammengefasst, die mir bei der Recherche geholfen haben...
11.06.2021
Ich berichtete neulich über die Installation und erste Tests von Keycloak. Nun bin ich tiefer eingetaucht und habe die diversen Möglichkeiten untersucht, die Authentifizierung mittels zweiten Faktors sicherer zu machen.
11.06.2021
Ich habe nun endlich alle Docker-Container auf HTTPS ungestellt...
13.09.2020
Ich habe zur Vervollständigung meines Docker-Zoos nach einem Dokumenten-Management-System gesucht, das dem Katalog meiner Anforderungen entsprach
29.08.2020
Eine weitere Ergänzung meines Docker-Zoos wurde eingeleitet durch den Tip eines Kollegen.
18.07.2020
Auch heute soll es wieder um eine Erweiterung für meinen Docker-Zoo gehen.
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
Weiterlesen...Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.