Multi-serveur
Gérez et déployez sur plusieurs serveurs depuis un seul tableau de bord sh0 en utilisant des tunnels SSH sécurisés.
Vue d'ensemble
sh0 prend en charge un modèle BYOS (Bring Your Own Server) où vous pouvez connecter plusieurs serveurs distants (nœuds) à votre instance sh0 principale. Le serveur principal agit comme le plan de contrôle, gérant les déploiements et le routage sur tous les nœuds connectés.
Cette architecture vous permet de :
- Distribuer les charges de travail sur plusieurs serveurs pour de meilleures performances
- Placer les applications plus près des utilisateurs dans différentes régions géographiques
- Isoler les charges de travail (par ex., bases de données sur du matériel dédié)
- Évoluer au-delà des ressources d'un seul serveur
Ajout de nœuds distants
Pour ajouter un serveur distant comme nœud :
- Accédez à Paramètres → Nœuds dans le tableau de bord.
- Cliquez sur Ajouter un nœud.
- Saisissez les détails du nœud : nom d'hôte ou IP, port SSH et utilisateur SSH.
- Fournissez la clé privée SSH ou sélectionnez une clé existante de votre gestionnaire de clés.
- Cliquez sur Connecter. sh0 vérifiera la connexion et enregistrera le nœud.
Via l'API :
curl -X POST https://your-server:9000/api/nodes \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "eu-node-1",
"hostname": "10.0.1.50",
"ssh_port": 22,
"ssh_user": "deploy",
"ssh_key_id": "key_abc123"
}'docker ou configurez sudo sans mot de passe pour Docker.Configuration du tunnel SSH
sh0 communique avec les nœuds distants via des tunnels SSH. Le tunnel transmet les requêtes de l'API Docker du serveur principal vers le socket Docker du nœud distant, gardant tout le trafic chiffré.
Le tunnel est établi automatiquement lorsque vous ajoutez un nœud. sh0 utilise le TOFU SSH (Trust On First Use) pour la vérification de la clé hôte -- l'empreinte du serveur vous sera montrée lors de la première connexion et vous devrez la confirmer.
Primary Server (sh0)
|
|-- SSH Tunnel (encrypted) --> Remote Node 1
| |-- Docker Socket
| |-- Container A
| |-- Container B
|
|-- SSH Tunnel (encrypted) --> Remote Node 2
|-- Docker Socket
|-- Container CSurveillance de la santé des nœuds
sh0 surveille en continu la santé de tous les nœuds connectés. La surveillance inclut :
- Connectivité SSH : Vérifie que le tunnel est actif et réactif.
- Statut Docker : Vérifie que le démon Docker fonctionne sur le nœud distant.
- Utilisation des ressources : Suit l'utilisation du CPU, de la mémoire et du disque sur chaque nœud.
- Santé des conteneurs : Surveille tous les conteneurs en cours d'exécution sur le nœud.
Lorsqu'un nœud devient défaillant, sh0 envoie des alertes via vos canaux de notification configurés (e-mail, Slack, Discord ou webhooks). Vous pouvez configurer les seuils d'alerte par nœud dans les paramètres du nœud.
Déploiement sur des nœuds spécifiques
Lors de la création ou de la configuration d'une application, vous pouvez spécifier sur quel nœud elle doit s'exécuter. Cela se configure dans les paramètres de déploiement de l'application.
Options :
- Principal (par défaut) : Déployer sur le serveur sh0 principal.
- Nœud spécifique : Fixer l'application à un nœud distant nommé.
- N'importe quel nœud : Laissez sh0 choisir le nœud avec le plus de ressources disponibles.
curl -X PUT https://your-server:9000/api/apps/my-app \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"node_id": "node_eu1"}'Routage intelligent par nœud
Le reverse proxy Caddy du serveur principal gère le routage vers les conteneurs sur tous les nœuds. Lorsqu'une requête arrive pour un domaine, Caddy la dirige vers le bon nœud et conteneur, quel que soit l'emplacement d'exécution du conteneur.
Pour les applications avec des réplicas répartis sur plusieurs nœuds, Caddy équilibre la charge entre tous les réplicas sains sur tous les nœuds. La latence entre le proxy principal et les nœuds distants doit être prise en compte lors de la planification de votre architecture.
Gestion de plusieurs serveurs
Le panneau Nœuds dans le tableau de bord fournit une vue centralisée de tous les serveurs de votre flotte :
Depuis ce panneau, vous pouvez :
- Voir les métriques du nœud : CPU, mémoire, disque et utilisation réseau pour chaque nœud.
- Lister les conteneurs : Voir tous les conteneurs en cours d'exécution sur un nœud spécifique.
- Drainer un nœud : Déplacer gracieusement tous les conteneurs d'un nœud avant une maintenance.
- Supprimer un nœud : Déconnecter un nœud distant (les conteneurs doivent être migrés ou arrêtés d'abord).
- Accès terminal : Ouvrir un terminal SSH vers n'importe quel nœud directement depuis le tableau de bord.