Gérer plusieurs serveurs HFSQL C/S en Docker avec Traefik

, , ,
traefik docker hfsql

Introduction

Lorsque vous travaillez avec PC Soft et ses outils de développement (Windev, Webdev, WinDev Mobile), il est fréquent d’avoir besoin de plusieurs instances HFSQL Client/serveur pour différents projets ou environnements (développement, test, production, version 2024, version 2025).
Dans un contexte Docker, il est possible de déployer plusieurs instances HFSQL C/S sur un même serveur Linux tout en les gérant efficacement avec Traefik.

Dans cet article, nous allons voir comment configurer Docker, Traefik, et HFSQL C/S pour une gestion centralisée et flexible.

1. Pré-requis

Avant de commencer, assurez-vous d’avoir :

  • Un serveur Linux (Ubuntu/Debian ou autre) avec Docker et Docker Compose installés.
  • Une configuration réseau correcte pour gérer les ports HFSQL.
  • Une compréhension de Traefik en tant que reverse proxy.
  • Les binaires HFSQL Server compatibles Docker.

2. Structure de l’architecture

Nous allons créer une infrastructure permettant de :

  • Lancer plusieurs instances HFSQL dans des containers Docker distincts.
  • Accéder à chaque instance via des noms de domaine spécifiques (ex : hfsql-dev.mondomaine.com, hfsql-prod.mondomaine.com).
  • Gérer la connexion sécurisée et le routage intelligent via Traefik.

3. Configuration de Docker Compose

Nous allons commencer par créer un fichier docker-compose.yml qui définit :

  • Traefik comme reverse proxy.
  • Plusieurs instances HFSQL exposées sur des ports distincts.

Fichier docker-compose.yml

version: '3.8'

services:
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.hfsql.address=:4900"
    ports:
      - "80:80"
      - "8080:8080"  # Interface de Traefik
      - "4900-4910:4900-4910" # Plage de ports pour HFSQL
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    networks:
      - hfsql_network

  hfsql_dev:
    image: hfsql-server:latest
    container_name: hfsql_dev
    restart: always
    labels:
      - "traefik.enable=true"
      - "traefik.tcp.routers.hfsql-dev.rule=HostSNI(`*`)"
      - "traefik.tcp.routers.hfsql-dev.entrypoints=hfsql"
      - "traefik.tcp.services.hfsql-dev.loadbalancer.server.port=4901"
    networks:
      - hfsql_network
    expose:
      - "4901"

  hfsql_prod:
    image: hfsql-server:latest
    container_name: hfsql_prod
    restart: always
    labels:
      - "traefik.enable=true"
      - "traefik.tcp.routers.hfsql-prod.rule=HostSNI(`*`)"
      - "traefik.tcp.routers.hfsql-prod.entrypoints=hfsql"
      - "traefik.tcp.services.hfsql-prod.loadbalancer.server.port=4902"
    networks:
      - hfsql_network
    expose:
      - "4902"

networks:
  hfsql_network:
    driver: bridge

4. Explication de la configuration

  1. Traefik
    • Il écoute sur le port 80 pour le routage HTTP et 4900-4910 pour les connexions TCP HFSQL.
    • Il utilise Docker comme provider pour détecter automatiquement les services.
    • Il expose une interface de gestion sur port 8080.
  2. HFSQL Dev & Prod
    • Deux instances HFSQL sont créées, chacune exposant un port distinct (4901 et 4902).
    • Chaque instance est déclarée avec des labels Traefik afin que le proxy puisse les router correctement.

5. Démarrage des services

Lancez le tout avec :

bash
docker-compose up -d

Pour voir les logs :

bash
docker-compose logs -f

Vérification

  • Interface Traefik : http://votre-serveur:8080
  • Connexion aux bases HFSQL via un client HFSQL :
    • Serveur 1 (dev) : votre-serveur:4901
    • Serveur 2 (prod) : votre-serveur:4902

6. Conclusion

Grâce à Docker et Traefik, il est possible de :

Lancer plusieurs instances HFSQL sur un même serveur
Gérer le routage des connexions avec Traefik
Facilement scaler et ajouter de nouvelles instances
Sécuriser l’accès avec SSL
Superviser les instances avec Portainer

Cette approche est flexible et modulaire, idéale pour des environnements multi-projets et multi-clients.

7. Liens externes

Laisser un commentaire