Passer au contenu du pied de page
UTILISATION DE IRONSECUREDOC

Haproxy Docker Compose (Comment cela fonctionne pour les développeurs)

Un [équilibreur de charge](https://en.wikipedia.org/wiki/Load_balancing_(computing) fait partie intégrante de l'infrastructure informatique moderne et essentielle, conçu pour répartir efficacement le trafic réseau entre plusieurs serveurs ou ressources. Cela améliore l'évolutivité et les performances du système en empêchant la surcharge d'un serveur en particulier. L'équilibreur de charge, qui se situe entre les clients et les serveurs du système dorsal, minimise le temps de réponse tout en utilisant les ressources disponibles.

Les équilibreurs de charge effectuent ces tâches de base, notamment la tolérance aux pannes, la distribution du trafic et la persistance des sessions. Un équilibreur de charge peut être un logiciel principal, un produit physique ou un service cloud fourni par AWS ou Azure. Parmi les algorithmes les plus couramment utilisés pour la répartition du trafic, on trouve Round Robin, Least Connections et IP Hash.

Qu'est-ce que HAProxy Docker ?

HAProxy Docker fait référence au placement de l'équilibreur de charge HAProxy dans un conteneur Docker. La puissance des fonctionnalités de gestion du trafic d'HAProxy peut désormais être combinée à la flexibilité et à la portabilité de Docker. HAProxy est un équilibreur de charge open source populaire et largement utilisé pour les applications web et les environnements de microservices, offrant une haute disponibilité et un proxy inverse. Les avantages de l'exécution de HAProxy dans un hôte de conteneurs Docker incluent la facilité de déploiement, l'isolation, l'évolutivité et l'indépendance de la plateforme. HAProxy Docker peut répartir efficacement le trafic entre plusieurs services backend, surveiller l'état des conteneurs et ajuster dynamiquement le routage en fonction de la disponibilité des conteneurs.

Il prend en charge des fonctionnalités telles que la terminaison SSL/TLS, la persistance de session et plusieurs algorithmes d'équilibrage de charge, notamment Round Robin et Least Connections. Cela fait de HAProxy Docker un excellent moyen de gérer le trafic conteneurisé, car il peut même s'intégrer parfaitement avec des outils d'orchestration comme Kubernetes ou Docker Swarm pour fournir une mise à l'échelle dynamique et une découverte automatisée des services. Cela garantit aux applications modernes une gestion du trafic robuste, performante et sécurisée, sans aucun problème de fichiers.

Fonctionnalités de HAProxy Docker

Équilibrage de charge

HAProxy excelle dans la répartition de la charge du trafic réseau sur de nombreux serveurs backend. Ses nombreux algorithmes d'équilibrage de charge incluent Round Robin, Least Connections et IP Hash, permettant ainsi aux clients d'adapter le flux de trafic aux besoins spécifiques de leurs applications. Cela permet à HAProxy d'accepter le trafic sur les architectures prises en charge à la fois par la couche 4 (TCP) et la couche 7 (HTTP/HTTPS), ce qui le place dans une gamme de hautes performances allant des applications de routage TCP simples à l'équilibrage de charge complexe de la couche application.

Haute disponibilité

La caractéristique principale, la haute disponibilité, consiste à maintenir le service opérationnel en permanence. HAProxy redirige le trafic vers des serveurs non fonctionnels ou défaillants en raison de l'état de santé des serveurs backend. Le basculement permet d'éviter une interruption de service trop longue lorsqu'un serveur est hors service ou tombe en panne de manière inattendue.

Prise en charge SSL/TLS

HAProxy prend entièrement en charge SSL/TLS, garantissant une communication sécurisée entre le client et les serveurs. De plus, HAProxy peut mettre fin aux connexions SSL/TLS afin de décharger les serveurs backend des tâches de chiffrement et de déchiffrement, améliorant ainsi les performances de ces derniers. Si un chiffrement de bout en bout est requis, HAProxy peut acheminer le trafic chiffré vers les services situés derrière lui.

Proxy inverse

HAProxy est l'un des meilleurs proxys inverses pour acheminer le trafic des requêtes client vers les services backend correspondants. Il prend en charge des fonctionnalités telles que la modification des en-têtes, les redirections d'URL, et même un routage personnalisé basé sur des conditions utilisateur spécifiques, configurables selon des règles précises. Ainsi, HAProxy peut également être considéré comme l'un des candidats viables pour une architecture multiservices, au même titre que les microservices.

Amélioration de la sécurité

HAProxy regorge de fonctionnalités de sécurité telles que la limitation du débit, la protection contre les attaques DDoS et les listes de contrôle d'accès (ACL). Tous ces éléments servent à filtrer le trafic entrant, ce qui signifie que les requêtes malveillantes qui pourraient autrement atteindre vos serveurs back-end seront bloquées, assurant ainsi la stabilité de vos applications.

Scalabilité

HAProxy est hautement évolutif. Il peut facilement prendre en charge des millions de connexions simultanées sans que l'utilisation ne génère de latence et évoluer sans problème de latence. Cet environnement prend en charge les environnements d'orchestration de conteneurs tels que Kubernetes et Docker Swarm, dont les charges de travail conteneurisées offrent les avantages d'une mise à l'échelle dynamique et d'une découverte de services.

Journalisation et surveillance

HAProxy possède un système de journalisation précis qui permet de comprendre les flux, de résoudre les problèmes et d'analyser les performances. Il interagit de manière transparente avec l'outil de surveillance Prometheus, Grafana et Datadog, entre autres, en fournissant des données en temps réel sur l'état de santé des serveurs, le flux du trafic réseau et l'utilisation des ressources.

HAProxy offre une grande flexibilité de configuration

HAProxy offre une capacité de configuration très flexible et puissante. Grâce à cette fonctionnalité, les utilisateurs peuvent définir des règles de routage assez sophistiquées, comme le routage conditionnel sur les en-têtes ou les cookies. La réécriture d'URL ainsi que la persistance de session sont prises en charge, même la multi-location, où une instance de HAProxy peut desservir plusieurs domaines ou applications.

Installation de HAProxy avec Docker

L'installation et l'exécution de HAProxy à l'aide de Docker sont un processus relativement simple. Vous trouverez ci-dessous les étapes à suivre, une à la fois.

Installation de Docker

Assurez-vous que Docker est installé sur votre système. Pour vérifier l'installation, vous pouvez exécuter la commande ci-dessous :

docker --version
docker --version
SHELL

Si Docker n'est pas installé sur votre système, veuillez consulter le lien Docker ici pour le télécharger et l'installer depuis le site officiel.

Extraire l'image Docker HAProxy

Récupérez l'image officielle HAProxy depuis Docker Hub. La commande ci-dessous permettra de télécharger la version stable la plus récente :

docker pull haproxy:latest
docker pull haproxy:latest
SHELL

Créer un fichier de configuration HAProxy

HAProxy a besoin d'un fichier de configuration qui définit son comportement. Créez un fichier nommé haproxy.cfg avec le contenu suivant :

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

Cette configuration HAProxy définit :

  • Interface utilisateur : Écoute sur le port 80 et achemine le trafic vers le serveur.
  • Backend : Pointe vers app1 hébergé sur host.docker.internal:32769 .

Exécuter un conteneur Docker HAProxy

Exécutez le conteneur Docker HAProxy, en montant le fichier de configuration et en exposant les ports nécessaires :

docker run -d --network haproxy --name haproxy-container -p 80:80 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
docker run -d --network haproxy --name haproxy-container -p 80:80 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
SHELL

-d : Exécute le conteneur en mode détaché. --name haproxy-container : Nomme le conteneur.

  • -p 80:80 : Associe le port 80 de l'hôte au port 80 du conteneur.
  • -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro : Monte le fichier de configuration local dans le conteneur.

Accéder à HAProxy

Ouvrez un navigateur web et accédez à http://localhost:80 ou à l'adresse IP de votre serveur pour tester le routage du trafic.

Qu'est-ce qu'IronSecureDoc ?

IronSecureDoc est un utilitaire de gestion et de sécurité des documents qui repose sur un chiffrement robuste, une manipulation avancée des PDF et la signature numérique. Elle assure la confidentialité et l'intégrité des documents aux entreprises et aux développeurs grâce à un accès fluide, facilitant ainsi le traitement des documents PDF sans dépendances directes ou indirectes.

De plus, IronPDF est une API PDF qui facilite la création d'un PDF à partir de n'importe quelles données d'entrée et l'ajout ou la modification de contenu à l'aide de paramètres tels que du texte, des images et des métadonnées. Cela inclut des fonctionnalités telles que la fusion de plusieurs fichiers PDF, la division de documents et l'ajout de commentaires, de surlignages ou de filigranes pour les annotations.

Il offre une protection par mot de passe, un chiffrement AES et des contrôles d'accès basés sur des certificats pour verrouiller toutes vos informations et données sensibles. De plus, elle permet la signature numérique pour authentifier vos documents et garantir leur non-répudiation, une caractéristique très importante dans les secteurs financier, médical et juridique. Sa fonctionnalité de piste d'audit permet de surveiller toutes les activités effectuées sur les documents à des fins de conformité et de responsabilisation.

Installez et exécutez IronSecureDoc

Récupérez l'image Docker d'IronSecureDoc à l'aide de la commande suivante dans l'invite de commandes ou dans une fenêtre de terminal ouverte :

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
SHELL

Exécutez le conteneur IronSecureDoc :

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
SHELL

Cette commande lance une instance de conteneur IronSecureDoc. Vous pouvez désormais accéder à IronSecureDoc sur le port http://localhost:8080/swagger/index.html .

Intégrer IronSecureDoc avec HAProxy

Préparez un fichier haproxy.cfg pour définir vos configurations frontend et backend. Voici un exemple de configuration simple :

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/ }
backend ironsecuredoc
    balance roundrobin
    http-request set-path /swagger/index.html
    server ironsecuredoc_server host.docker.internal:8080 check
backend ironsecuredoc_encrypt
    balance roundrobin
    http-request set-path /v1/document-services/pdfs/encrypt
    server ironsecuredoc_server host.docker.internal:8080 check
backend ironsecuredoc_ping
    balance roundrobin
    http-request set-path /v1/document-services/ping
    server ironsecuredoc_server host.docker.internal:8080 check

Cette configuration HAProxy gère le trafic HTTP pour plusieurs services IronSecureDoc. Il définit la sortie globale des journaux bruts et configure le mode HTTP par défaut avec une journalisation détaillée. L'interface utilisateur écoute sur le port 4500 et achemine les requêtes en fonction du chemin. L' acl body_has_data vérifie la présence de données et convertit les requêtes GET en requêtes POST si nécessaire. Le système utilise l'algorithme Round Robin pour l'équilibrage de charge, garantissant ainsi que les requêtes sont acheminées correctement grâce à des contrôles d'intégrité assurant la disponibilité du serveur.

Pour envoyer une simple requête de chiffrement à l'aide de cURL :

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'
SHELL

Cette requête à l' API IronSecureDoc applique le chiffrement du mot de passe utilisateur à un document PDF, et le fichier de sortie est envoyé et téléchargé en toute sécurité.

Conclusion

L'intégration de HAProxy avec le logiciel IronSecureDoc garantit une solution fiable et évolutive pour la gestion des services de sécurité des documents grâce à un routage du trafic optimisé et un équilibrage de charge. HAProxy répartit efficacement le trafic entre plusieurs instances d'IronSecureDoc, garantissant une haute disponibilité grâce à des contrôles d'intégrité et des règles de routage personnalisées.

Cette configuration permet une gestion flexible des flux de travail complexes tels que le chiffrement et la surveillance de l'état de santé. HAProxy et IronSecureDoc se complètent dans un environnement conteneurisé, améliorant ainsi la résilience et les performances du déploiement.

Grâce à l'API REST d'IronSecureDoc, les développeurs peuvent intégrer de manière transparente la gestion sécurisée des documents et la gestion efficace des PDF dans leurs applications web, mobiles et d'entreprise. Pour plus d'informations sur les licences IronSecureDoc, consultez la page des licences . Pour en savoir plus sur les produits d'Iron Software, consultez la page de la suite de bibliothèques .

Questions Fréquemment Posées

Comment puis-je déployer HAProxy en utilisant Docker Compose ?

Pour déployer HAProxy en utilisant Docker Compose, vous devez créer un fichier docker-compose.yml qui spécifie le service HAProxy avec la configuration nécessaire. Cette configuration vous permet de gérer HAProxy aux côtés d'autres services, assurant une gestion du trafic fluide et une haute disponibilité.

Quels sont les avantages de l'utilisation de HAProxy avec Docker pour les microservices ?

Lorsque vous utilisez HAProxy avec Docker pour les microservices, vous bénéficiez d'une mise à l'échelle dynamique, de la découverte automatique de service et d'une distribution efficace du trafic. Le support de HAProxy pour la terminaison SSL/TLS et divers algorithmes de répartition de charge améliore la sécurité et les performances dans une architecture de microservices.

Comment HAProxy peut-il être configuré pour la terminaison SSL/TLS dans Docker ?

HAProxy peut être configuré pour la terminaison SSL/TLS en configurant les frontend et backend appropriés dans le fichier de configuration HAProxy. Cela décharge les tâches de chiffrement de vos serveurs backend, optimisant les performances et la sécurité.

Quel rôle joue HAProxy dans l'amélioration de la sécurité dans un environnement conteneurisé ?

HAProxy améliore la sécurité dans un environnement conteneurisé grâce à des fonctionnalités telles que la protection DDoS, la limitation des taux et les listes de contrôle d'accès (ACL). Ces mesures de sécurité empêchent le trafic malveillant d'atteindre vos services backend, assurant un déploiement applicatif sécurisé.

Comment les développeurs peuvent-ils intégrer les fonctionnalités de sécurité des documents dans leurs applications en utilisant IronSecureDoc ?

Les développeurs peuvent intégrer des fonctionnalités de sécurité des documents en utilisant IronSecureDoc en exploitant son API REST. Cela permet une mise en œuvre sans faille du chiffrement de documents, de la manipulation PDF et de la signature numérique au sein des applications, améliorant la gestion et la sécurité des documents.

Comment HAProxy facilite-t-il l'intégration avec des outils d'orchestration comme Kubernetes ?

HAProxy facilite l'intégration avec des outils d'orchestration comme Kubernetes en supportant la mise à l'échelle dynamique et la découverte automatique de services. Cela assure une gestion efficace du trafic et une haute disponibilité dans un déploiement conteneurisé, optimisant l'utilisation des ressources et la résilience du système.

Quelles sont les caractéristiques clés de HAProxy qui supportent la haute disponibilité ?

HAProxy prend en charge la haute disponibilité grâce à des fonctionnalités telles que les vérifications de l'état, les mécanismes de basculement et la persistance des sessions. Ces capacités garantissent que le trafic est redirigé loin des serveurs défaillants, minimisant le temps d'arrêt et maintenant un fonctionnement continu du service.

Quel est le processus d'intégration de HAProxy avec IronSecureDoc pour la gestion documentaire ?

Intégrer HAProxy avec IronSecureDoc pour la gestion documentaire implique de configurer HAProxy pour acheminer efficacement le trafic vers les services IronSecureDoc. Cette configuration améliore la sécurité des documents en exploitant un routage traffic optimisé et un équilibrage de charge dans un environnement conteneurisé.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite