VERWENDUNG VON IRONSECUREDOC

Haproxy Docker Compose (Wie es für Entwickler funktioniert)

Veröffentlicht 14. Januar 2025
Teilen Sie:

Einführung

ALastverteilerist Teil der entscheidenden modernen IT-Infrastruktur, die darauf ausgelegt ist, den Netzwerkverkehr effizient auf mehrere Server oder Ressourcen zu verteilen. Dies verbessert die Skalierbarkeit und Leistung des Systems, indem verhindert wird, dass ein einzelner Server überlastet wird. Der Load Balancer, der sich zwischen den Clients und den Servern auf der Rückseite befindet, minimiert die Reaktionszeit bei Nutzung der verfügbaren Ressourcen.

Load Balancer führen diese grundlegenden Aufgaben aus, die Fehlertoleranz, Verkehrsverteilung und Sitzungsbeständigkeit umfassen. Ein Load Balancer kann ein primäres Softwareprogramm, ein physisches Produkt oder ein cloudbasierter Dienst sein, der von AWS oder Azure bereitgestellt wird. Einige der am häufigsten verwendeten Algorithmen für die Verkehrsverteilung sind Round Robin, Least Connections und IP Hash.

Was ist HAProxy Docker?

HAProxy Dockerbezieht sich auf das Platzieren des HAProxy-Load-Balancers in einem Docker-Container. Die Leistungsfähigkeit der Verkehrsmanagement-Funktionen von HAProxy kann nun mit der Flexibilität und Portabilität von Docker kombiniert werden. HAProxy ist ein beliebter, weit verbreiteter, quelloffener Load Balancer für Webanwendungen und Mikroservice-Umgebungen, der hohe Verfügbarkeit und Reverse-Proxying bietet. Die Vorteile der Ausführung von HAProxy in einem Docker-Container-Host umfassen einfache Bereitstellung, Isolation, Skalierbarkeit und Plattformunabhängigkeit. HAProxy Docker kann den Datenverkehr effizient über mehrere Backend-Dienste verteilen, die Gesundheit von Containern überwachen und die Weiterleitung dynamisch basierend auf der Verfügbarkeit von Containern anpassen.

Defektes Bild Von Pixabay hinzufügen, aus Ihren Dateien auswählen oder ein Bild hierher ziehen.

Es unterstützt Funktionen wie SSL/TLS-Beendigung, Sitzungspersistenz und mehrere Lastverteilungsalgorithmen, einschließlich Round Robin und Least Connections. Dies macht HAProxy Docker zu einer hervorragenden Möglichkeit, containerisierten Datenverkehr zu verwalten, da es sich gut mit Orchestrierungstools wie Kubernetes oder Docker Swarm integrieren kann, um dynamische Skalierung und automatische Serviceerkennung bereitzustellen. Dies stellt sicher, dass moderne Anwendungen ein robustes, leistungsstarkes und sicheres Verkehrsmanagement ohne Dateiprobleme haben.

Funktionen von HAProxy Docker

Lastausgleich

HAProxy glänzt darin, die Last des Netzwerkverkehrs auf viele Backend-Server zu verteilen. Seine zahlreichen Lastverteilungsalgorithmen umfassen Round Robin, Least Connections und IP Hash, sodass Kunden den Datenverkehr entsprechend den besonderen Anforderungen ihrer Anwendungen anpassen können. Dadurch kann HAProxy Datenverkehr sowohl auf Ebene 4 akzeptieren(TCP)und Layer 7(HTTP/HTTPS)unterstützte Architekturen, die es im Hochleistungsbereich von einfachen TCP-Routing-Anwendungen bis hin zur komplexen Anwendungs-Ebenen-Lastverteilung platzieren.

Hohe Verfügbarkeit

Die zentrale Funktion, hohe Verfügbarkeit, bedeutet, den Dienst stets in Betrieb zu halten. HAProxy leitet den Verkehr von Servern weg, die aufgrund des Gesundheitszustands der Backend-Server als ungesund oder ausgefallen erwiesen sind. Failover verhindert zu viel Ausfallzeit in Fällen, in denen ein Server nicht aktiv ist oder unerwartet ausfällt.

SSL/TLS-Unterstützung

HAProxy unterstützt SSL/TLS vollständig und gewährleistet so eine sichere Kommunikation vom Client zu den Servern. Zusätzlich kann HAProxy SSL/TLS-Verbindungen beenden, um Verschlüsselungs- und Entschlüsselungsaufgaben von den Backend-Servern auszulagern und die Leistungsfähigkeit der Backend-Server zu verbessern. Wenn eine Ende-zu-Ende-Verschlüsselung erforderlich ist, kann HAProxy den verschlüsselten Datenverkehr an die dahinterliegenden Dienste weiterleiten.

Reverse-Proxying

HAProxy ist einer der besten Reverse-Proxies, um den gesamten eingehenden Datenverkehr von Client-Anfragen an die entsprechenden Dienste auf der Backend-Seite weiterzuleiten. Es unterstützt Funktionen wie das Ändern von Headern, Weiterleitungen von URLs oder sogar einige spezialisierte Routings, die auf bestimmten Benutzerbedingungen basieren, die nach bestimmten Regeln festgelegt werden können. Daher kann HAProxy neben Microservices auch als einer der geeigneten Kandidaten für eine Multi-Service-Architektur angesehen werden.

Sicherheitsverbesserung

HAProxy ist voll von Sicherheitsfunktionen wie Ratenbegrenzung, DDoS-Schutz und ACLs. All diese werden verwendet, um eingehenden Datenverkehr zu filtern, was bedeutet, dass unangenehme Anfragen, die sonst Ihre Backend-Server erreichen könnten, Ihre Anwendungen stabil halten.

Skalierbarkeit

HAProxy ist hoch skalierbar. Es kann problemlos Millionen gleichzeitiger Verbindungen unterstützen, ohne dass eine Verzögerung mit der Nutzung verbunden ist, und ohne bei der Skalierung Latenzprobleme zu haben. Diese Umgebung unterstützt Container-Orchestrierungsumgebungen wie Kubernetes und Docker Swarm, wobei ihre containerisierten Workloads die Vorteile von dynamischem Skalieren und Dienstentdeckung bieten.

Protokollierung und Überwachung

HAProxy verfügt über eine fein granulierte Protokollierung, die dabei helfen kann, Abläufe zu verstehen, Probleme zu beheben und die Leistung zu analysieren. Es arbeitet nahtlos mit dem Überwachungstool Prometheus, Grafana und Datadog zusammen, um unter anderem Echtzeitdaten über die Gesundheit der Server, den Netzwerkverkehrsfluss und die Ressourcennutzung darzustellen.

HAProxy unterstützt einfache Flexibilität in der Konfiguration

HAProxy bietet eine sehr flexible und leistungsstarke Konfigurationsmöglichkeit. Damit können Benutzer recht komplexe Routingregeln definieren, beispielsweise bedingtes Routing basierend auf Headern oder Cookies. URL-Umschreibung sowie Sitzungsbeständigkeit werden unterstützt, sogar Multi-Tenancy, wobei eine Instanz von HAProxy mehrere Domains oder Anwendungen bedienen kann.

Installieren von HAProxy mit Docker

Die Installation und Ausführung von HAProxy mit Docker ist ein relativ einfacher Prozess. Im Folgenden sind die Schritte nacheinander aufgeführt.

Docker-Installation

Stellen Sie sicher, dass Docker auf Ihrem System installiert ist. Um die Installation zu überprüfen, können Sie den folgenden Befehl ausführen:

docker --version
docker --version
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker --version
VB   C#

Haproxy Docker Compose(Wie es für Entwickler funktioniert): Abbildung 2 - Überprüfen der Docker-Installation

Wenn Docker nicht auf dem System installiert ist, besuchen Sie dieDocker-Linkhier herunterladen und von der offiziellen Website installieren.

Ziehen Sie das HAProxy Docker-Image.

Ziehen Sie das offizielle HAProxy-Image von Docker Hub. Die neueste Version von HAProxy wird die aktuellste stabile Version herunterladen:

docker pull haproxy:latest
docker pull haproxy:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull haproxy:latest
VB   C#

Haproxy Docker Compose(Wie es für Entwickler funktioniert): Abbildung 3 - HAProxy Docker-Image abrufen

Erstellen Sie eine HAProxy-Konfigurationsdatei

HAProxy benötigt eine Konfigurationsdatei, die sein Verhalten definiert. Nach dem Herunterladen der jeweiligen Dockerfile-Links für Docker und HAProxy erstellen Sie eine Datei namens haproxy.cfg mit folgendem Beispielinhalt:

global
    log stdout format raw local0
defaults
    log     global
    mode    http
    timeout connect 5s
    timeout client  50s
    timeout server  50s
frontend http_front
    bind *:80
    default_backend http_back
backend http_back
    server app1 host.docker.internal:32769 check
global
    log stdout format raw local0
defaults
    log     global
    mode    http
    timeout connect 5s
    timeout client  50s
    timeout server  50s
frontend http_front
    bind *:80
    default_backend http_back
backend http_back
    server app1 host.docker.internal:32769 check
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'global log stdout format raw local0 defaults log global mode http timeout connect 5s timeout client 50s timeout server 50s frontend http_front bind *:80 default_backend http_back backend http_back server app1 host.docker.internal:32769 check
VB   C#

Diese HAProxy-Konfiguration definiert:

Frontend: Auf Port 4500 horchen und den Datenverkehr an das Backend weiterleiten

Backend: Verteilt den Datenverkehr zwischen zwei Servern, nämlich app1

Docker-Container mit HAProxy ausführen

Führen Sie den HAProxy Docker-Container aus, indem Sie die Konfigurationsdatei einbinden und die erforderlichen Ports freigeben:

docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
VB   C#
  • -d: Der Abtrennungsmodus läuft für den Container.

    • --name haproxy-container: gibt den Namen für den Container an.

    -p 4500:4500: Ordnet Port 4500 auf dem Host dem Port 4500 im Container zu.

  • -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro Montiert die lokale Konfigurationsdatei in den Container.

Zugriff auf HAProxy

Haproxy Docker Compose(wie es für Entwickler funktioniert): Abbildung 4 - HAProxy-Ausgabe

Öffnen Sie einen Webbrowser und navigieren Sie zu http://localhost:4500 oder zur IP-Adresse Ihres Servers, um das Traffic-Routing zu testen.

Um die HAProxy-Statistiken zu überprüfen, führen Sie den folgenden Befehl aus:

Haproxy Docker Compose(Wie es für Entwickler funktioniert): Abbildung 5 - HAProxy-Statistiken

Was ist IronSecureDoc?

IronSecureDocist ein Dienstprogramm für Dokumentenverwaltung und -sicherheit, das auf starke Verschlüsselung, fortschrittliche PDF-Bearbeitung und digitale Signatur setzt. Es bietet Unternehmen und Entwicklern Dokumentenvertraulichkeit und -integrität mit einem reibungslosen Zugriff und erleichtert somit die Verarbeitung von PDF-Dokumenten ohne direkte oder indirekte Abhängigkeiten. Dies kann auch als Aggressive PDF API bezeichnet werden, wenn seine Funktionen es Entwicklern ermöglichen, PDF-Dateien und Dokumente programmatisch zu erstellen, hochzuladen, zu manipulieren und zu sichern.

Haproxy Docker Compose(Funktionsweise für Entwickler): Abbildung 6 - IronSecureDoc: Der PDF-Sicherheits- und Konformitätsserver

Darüber hinaus ist IronPDF eine PDF-API, die die Erstellung eines PDF aus beliebigen Dateneingaben erleichtert und das Hinzufügen oder Bearbeiten von Inhalten mithilfe von Parametern wie Text, Bildern und Metadaten ermöglicht. Dies umfasst Funktionen wie das Zusammenführen mehrerer PDFs, um zusammengesetzte Dateien zu erstellen, das Aufteilen von Dokumenten und sogar Kommentare, Hervorhebungen oder Wasserzeichen für Anmerkungen.

Es bietet Passwortschutz, AES-Verschlüsselung und zertifikatbasierte Zugriffskontrollen, die alle Ihre sensiblen Informationen und Daten schützen. Abgesehen davon ermöglicht es die digitale Signatur, um Ihre Dokumente zu authentifizieren und die Nichtabstreitbarkeit zu gewährleisten - ein sehr wichtiges Merkmal in den Finanz-, Medizin- und Rechtsbranchen. Die Audit-Trail-Funktionalität ermöglicht die Überwachung aller auf den Dokumenten ausgeführten Aktivitäten für mehr Compliance und Verantwortlichkeit.

Installieren und Ausführen von IronSecureDoc

Ziehen Sie das Docker-Image von IronSecureDoc mit dem Befehl in der Eingabeaufforderung oder einem offenen Terminalfenster gemäß dem folgenden Repository.

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull ironsoftwareofficial/ironsecuredoc
VB   C#

Haproxy Docker Compose(So funktioniert es für Entwickler): Abbildung 7 - IronSecureDoc Docker-Image ziehen

ironSecureDoc, ein Betrieb-Container. IronSecureDoc, ein Betrieb-Container.

docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
VB   C#

Der oben genannte Docker-Run-Befehl startet eine Containerinstanz von IronSecureDoc. Jetzt greifen Sie über den Port http://localhost:8080/swagger/index.html auf das IronSecureDoc zu, wie auf der unten stehenden Seite.

Haproxy Docker Compose(Wie es für Entwickler funktioniert): Abbildung 8 - REST API

Integrieren Sie IronSecureDoc mit HAProxy

Bereiten Sie eine haproxy.cfg-Datei vor, um Ihre Frontend- und Backend-Konfigurationen zu definieren. Unten sehen Sie ein einfaches Beispielkonfiguration:

explain below haproxy.cfg file 
global
    log stdout format raw local0
defaults
    log     global
    mode    http
    option  httplog
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
frontend http_front
    bind *:4500
    acl body_has_data req.hdr_val(Content-Length) gt 0
    http-request set-method POST if METH_GET body_has_data
    use_backend ironsecuredoc if { path /ironsecuredoc } 
 { path_beg /ironsecuredoc/ }
    use_backend ironsecuredoc_ping if { path /ping } 
 { path_beg /ping/ }
    use_backend ironsecuredoc_encrypt if { path /encrypt } 
 { path_beg /encrypt/ }
    #default_backend ironsecuredoc
backend ironsecuredoc
    balance roundrobin
    http-request set-path /swagger/index.html
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_encrypt
    balance roundrobin
    http-request set-path /v1/document-services/pdfs/encrypt
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_ping
    balance roundrobin
    http-request set-path /v1/document-services/ping
    server ironsecuredoc_server3 host.docker.internal:8080 check
explain below haproxy.cfg file 
global
    log stdout format raw local0
defaults
    log     global
    mode    http
    option  httplog
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
frontend http_front
    bind *:4500
    acl body_has_data req.hdr_val(Content-Length) gt 0
    http-request set-method POST if METH_GET body_has_data
    use_backend ironsecuredoc if { path /ironsecuredoc } 
 { path_beg /ironsecuredoc/ }
    use_backend ironsecuredoc_ping if { path /ping } 
 { path_beg /ping/ }
    use_backend ironsecuredoc_encrypt if { path /encrypt } 
 { path_beg /encrypt/ }
    #default_backend ironsecuredoc
backend ironsecuredoc
    balance roundrobin
    http-request set-path /swagger/index.html
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_encrypt
    balance roundrobin
    http-request set-path /v1/document-services/pdfs/encrypt
    server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_ping
    balance roundrobin
    http-request set-path /v1/document-services/ping
    server ironsecuredoc_server3 host.docker.internal:8080 check
explain below haproxy.cfg file global log stdout format raw local0 defaults log global mode http [option] httplog timeout connect 5000Ds timeout client 50000Ds timeout server 50000Ds frontend http_front bind *:4500 acl Function req_hdr_val(Content- ByVal Length As ) As body_has_data Implements req.hdr_val
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	path /ironsecuredoc }
' {
'	 path_beg /ironsecuredoc/
' }
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' use_backend ironsecuredoc_ping if
' {
'	 path /ping }
' {
'	 path_beg /ping/
' }
' use_backend ironsecuredoc_encrypt if
' {
'	 path /encrypt }
' {
'	#default_backend ironsecuredoc
'	 path_beg /encrypt/
' }
''INSTANT VB TODO TASK: The following line uses invalid syntax:
'' backend ironsecuredoc balance roundrobin http-request @set-path /swagger/index.html server ironsecuredoc_server3 host.docker.internal:8080 check backend ironsecuredoc_encrypt balance roundrobin http-request @set-path /v1/document-services/pdfs/encrypt server ironsecuredoc_server3 host.docker.internal:8080 check backend ironsecuredoc_ping balance roundrobin http-request @set-path /v1/document-services/ping server ironsecuredoc_server3 host.docker.internal:8080 check
VB   C#

Diese Konfigurationsdatei von HAProxy erstellt ein System, das in der Lage ist, HTTP-Verkehr für die mehreren IronSecureDoc-Dienste zu verarbeiten. Es wird dann global für die rohe Logausgabe an stdout konfiguriert, und der Standardabschnitt aktiviert HTTP als Modus sowie detailliertes HTTP, zusammen mit der Festlegung der Verbindungstimeouts für die Clients und den Server. Das Frontend ist http_front, das auf Port 4500 definiert ist, einschließlich Regeln zur Verwaltung des Routings basierend auf dem Pfad der HTTP-Anfrage. Zum Beispiel werden Anfragen an /ironsecuredoc an das ironsecuredoc-Backend weitergeleitet. Anfragen an /ping und /encrypt werden an ihre jeweiligen Backends weitergeleitet. Die ACL-Regel identifiziert Anforderungen, die über den Content-Length-Header einen Body haben. Wenn ein Body vorhanden ist, werden GET-Anfragen in POST-Anfragen umgewandelt.

Der Round-Robin-Algorithmus wird verwendet, um den Datenverkehr über Backends zu verteilen. Jeder Backend-Server schreibt den Anforderungspfad um, bevor er ihn an den entsprechenden Server weiterleitet. Zum Beispiel schreibt das ironsecuredoc-Backend Pfade zu /swagger/index.html um. Die Backends ironsecuredoc_encrypt und ironsecuredoc_ping schreiben Pfade nach /v1/document-services/pdfs/encrypt bzw. /v1/document-services/ping um. Alle zeigen auf einen einzigen Server, der unter host.docker.internal:8080 läuft. Gesundheitsprüfungen werden hinzugefügt, um sicherzustellen, dass ein Server verfügbar ist. Somit gewährleistet die Konfiguration ein reibungsloses Verkehrsmanagement für verschiedene Dienste, während sie flexibel in der Manipulation von Anfragen ist.

curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'curl -X 'POST' \ 'http: -H 'accept: */ *' \ -H 'Content-Type: multipart/form-data' \ -F 'pdf_file=@test.pdf;type=application/pdf'
VB   C#

Aber wenn wir auf dieIronSecureDoc API, möchten wir möglicherweise auch nach dem Passwort fragen, um die Anfrage mit dem Passwort eines Benutzers für ein Dokument zu verschlüsseln. Die Ausgabedatei des Dokuments wird automatisch gesendet und heruntergeladen und sicher gespeichert.

Schlussfolgerung

Es wird auch HAProxy mit der IronSecureDoc-Software integrieren, um eine zuverlässige und skalierbare Lösung für die Verwaltung der Dienste zur Dokumentensicherheit mit optimiertem Traffic-Routing und Lastverteilung sicherzustellen. Die hohe Verfügbarkeit wird durch die effiziente Verteilung des Datenverkehrs über mehrere Instanzen von IronSecureDoc sichergestellt, indem Gesundheitsprüfungen zur Handhabung von Failovers implementiert werden, zusammen mit der Bereitstellung benutzerdefinierter Routing-Regeln zu verschiedenen Dienstendpunkten.

Diese Konfiguration unterstützt die flexible Handhabung komplexer Arbeitsabläufe wie Verschlüsselung und Gesundheitsüberwachung, während sie in Zukunft skalierbar bleibt. Egal, ob in einer containerisierten oder traditionellen Umgebung, das leichte und dennoch leistungsstarke Design von HAProxy ist so gestaltet, dass es das Sicherheitsfeature von IronSecureDoc mit zuverlässiger und effizienter Verwaltung für sichere Dokumente ergänzt. Die Funktionen von HAProxy unterstützen Organisationen dabei, die Bereitstellung von IronSecureDoc zu verbessern, um die Leistung und Widerstandsfähigkeit der Anwendungen sicherzustellen.

Mit der IronSecureDoc REST API sind sicheres Drucken und effektive PDF-Formatierung und -Verarbeitung jetzt problemlos in Anwendungen integrierbar, die von Web-, Mobil- und Unternehmenssystementwicklern entwickelt werden. Um mehr über die Lizenz von IronSecureDoc zu erfahren, besuchen Sie die lizenzierungsseite. Für Informationen über die Produkte von Iron Software, folgen Sie demBibliothekssuite-Seite.

< PREVIOUS
immich Docker Compose (Wie es für Entwickler funktioniert)
NÄCHSTES >
Wazuh Docker Compose (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Kostenloser DownloadLizenzen anzeigen >