Stockage objet SeaweedFS (seaweedfs)
Stockage objet compatible S3 de la plateforme, installé par défaut : documents, médias, fichiers de modèles, exports, sauvegardes et archive d'audit WORM, et le stockage prévu pour les skills et les serveurs MCP. Maîtres, serveurs de volumes, filers et passerelle S3, en nœud unique ou distribué avec volumes répliqués.
Généré depuis catalog/services/seaweedfs.yaml : ne pas modifier à la main.
Résumé
| Version | 4.51 |
| Usage | installer et configurer |
| Couche | infrastructure (présentée à part) |
| Catégorie | Stockage |
| Méthodes d'installation | binary, podman |
| Connexion externe | s3 |
| Réservé au bac à sable | non |
| Service socle | oui, sélectionné par défaut par l'assistant d'installation |
Licence
| Identifiant SPDX | Apache-2.0 |
| Politique de licence | licence socle (MIT ou Apache-2.0) |
| Exception de licence | - |
| Composant de la plateforme | seaweedfs |
Paquets et artefacts
Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.
| Type | Paquet | Version | Licence | Détails |
|---|---|---|---|---|
| image de conteneur | docker.io/chrislusf/seaweedfs | 4.51 | Apache-2.0 | clé d'image weed, utilisée par master, volume, filer, s3, admin, condensé sha256:f7a49e3f3972ebed5be2ed4befa4a0c68eb7bdddba6e692d42729ceb545134b8 |
| archive binaire | seaweedfs-4.51-linux_amd64.tar.gz | 4.51 | Apache-2.0 | https://github.com/seaweedfs/seaweedfs/releases/download/4.51/linux_amd64.tar.gz, x86_64 |
Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.
Systèmes et architectures pris en charge
| Méthode | Systèmes d'exploitation | Architectures |
|---|---|---|
binary | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64 (architecture des artefacts du descripteur) |
podman | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64, aarch64 (non restreintes par le descripteur) |
Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.
Prérequis
Hôte
- au moins 1024 Mo de mémoire (bloquant,
memory). - au moins 10240 Mo libres pour
/var/lib/navin(avertissement,disk).
Réseau et ports
| Composant | Nom du port | Port | Ouvert dans le pare-feu de l'hôte |
|---|---|---|---|
master | http | 9333/tcp | oui |
master | grpc | 19333/tcp | oui |
master | metrics | 9324/tcp | oui |
volume | http | 8180/tcp | oui |
volume | grpc | 18180/tcp | oui |
volume | metrics | 9325/tcp | oui |
filer | http | 8888/tcp | oui |
filer | grpc | 18888/tcp | oui |
filer | metrics | 9326/tcp | oui |
s3 | s3 | 8333/tcp | oui |
s3 | metrics | 9327/tcp | oui |
admin | admin | 12535/tcp | oui |
Services et connexions nécessaires
Ce service n'a aucune dépendance.
Méthodes et modes d'installation
| Méthode | Défaut | Ce que la méthode utilise |
|---|---|---|
binary | oui | les archives binaires du descripteur, décompressées dans le répertoire du service |
podman | - | les images de conteneur du descripteur, exécutées par Podman sous systemd |
Composants
| Composant | Type | Méthodes d'installation | Ports |
|---|---|---|---|
Maître (master) | maître | binary, podman | 9333/tcp, 19333/tcp, 9324/tcp |
Serveur de volumes (volume) | travailleur | binary, podman | 8180/tcp, 18180/tcp, 9325/tcp |
Filer (filer) | maître | binary, podman | 8888/tcp, 18888/tcp, 9326/tcp |
Passerelle S3 (s3) | travailleur | binary, podman | 8333/tcp, 9327/tcp |
Console d'administration (admin) | maître | binary, podman | 12535/tcp |
Nœud unique (single) (par défaut)
Un maître, un serveur de volumes, un filer, une passerelle S3 et la console d'administration.
Ce que le mode déploie :
| Composant | Placement |
|---|---|
master | min 1, max 1 |
volume | min 1, max 1 |
filer | min 1, max 1 |
s3 | min 1, max 1 |
admin | min 1, max 1 |
Distribué (distributed)
Maîtres Raft (nombre impair), serveurs de volumes répliqués, plusieurs filers et passerelles S3 derrière le répartiteur de charge.
Ce que le mode déploie :
| Composant | Placement |
|---|---|
master | min 3, nombre impair, recommandé 3 |
volume | min 3, recommandé 3 |
filer | min 2, recommandé 2 |
s3 | min 2, recommandé 2 |
admin | min 1, max 1 |
Installer ce service
L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.
-
Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.
-
Choisissez le service. À l'étape Service, sélectionnez Stockage objet SeaweedFS. La carte affiche la licence
Apache-2.0. Choisissez la Méthode parmibinary,podman(par défautbinary). Pour enregistrer à la place un services3existant de votre organisation, activez Utiliser un service externe existant. Service socle, il est déjà sélectionné quand le cluster ne l'a pas encore. -
Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode :
single(par défaut),distributed. Chaque mode déploie les composants listés dans Méthodes et modes d'installation. Avec plusieurs composants, placez chacun sur ses hôtes dans Répartition des composants (Proposer un placement propose un placement qui respecte les cardinalités). -
Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.
-
Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.
-
Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.
-
Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services. Ouvrez le service et choisissez Lancer le test fonctionnel dans la carte Contrôles : Crée un compartiment, dépose un objet et le relit par l'API S3 (signature V4), puis supprime les deux.
Haute disponibilité
| Cluster | natif (native) |
| Haute disponibilité | natif (native) |
| Bascule | répartiteur (load-balancer) |
| Réplication | natif (native) |
| Quorum | Raft (raft) |
| Découverte | statique (static) |
| Point d'entrée | répartiteur (load-balancer) |
| Documentation officielle | https://github.com/seaweedfs/seaweedfs/blob/master/note/slides/seaweedfs-production-setup.md |
| Références | https://github.com/seaweedfs/seaweedfs/wiki/Production-Setup |
| Paramètre TLS entre pairs | tls_enabled |
| Commande d'état du cluster | volume_list |
Topologie par mode
| Modes | Niveau le plus haut du catalogue | Répartition | Composant du quorum | Domaines de panne | Description |
|---|---|---|---|---|---|
single | autonome (standalone) | unique (single) | - | 1 | Un master, un serveur de volumes, un filer et une passerelle S3. |
distributed | cluster (cluster) | actif-actif (active-active) | master | 3 | Masters Raft, serveurs de volumes répliqués, plusieurs filers et passerelles S3 derrière le répartiteur. |
Remarques
- Facultatif si la banque a déjà un stockage objet hautement disponible : y lier les services.
- Chaque filer garde ses métadonnées dans un stockage leveldb2 local synchronisé avec ses pairs ; un stockage de métadonnées partagé est l'option la plus robuste de la documentation officielle.
Paramètres de configuration
Réseau
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Port des maîtres (master_port) | port | 9333 | - | non | non | non | Port HTTP des maîtres ; le gRPC utilise ce port plus 10000. |
Port des volumes (volume_port) | port | 8180 | - | non | non | non | Port HTTP des serveurs de volumes ; le gRPC utilise ce port plus 10000. |
Port des filers (filer_port) | port | 8888 | - | non | non | non | Port HTTP des filers ; le gRPC utilise ce port plus 10000. |
Port de l'API S3 (s3_port) | port | 8333 | - | non | non | non | Port de la passerelle S3. |
Port des métriques des maîtres (master_metrics_port) | port | 9324 | - | non | non | non | Port Prometheus des maîtres (distinct par processus : un hôte peut porter tous les composants). |
Port des métriques des serveurs de volumes (volume_metrics_port) | port | 9325 | - | non | non | non | Port Prometheus des serveurs de volumes (distinct par processus : un hôte peut porter tous les composants). |
Port des métriques des filers (filer_metrics_port) | port | 9326 | - | non | non | non | Port Prometheus des filers (distinct par processus : un hôte peut porter tous les composants). |
Port des métriques des passerelles S3 (s3_metrics_port) | port | 9327 | - | non | non | non | Port Prometheus des passerelles S3 (distinct par processus : un hôte peut porter tous les composants). |
Port de la console d'administration (admin_ui_port) | port | 12535 | - | non | non | non | Port HTTP de la console web weed admin ; le gRPC des workers utilise ce port plus 10000. |
Stockage
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Région (region) | string | eu-west-3 | - | non | non | non | Région S3 annoncée aux clients (portée de la signature V4). |
Réplication (replication) | enum | 000 | 000, 001, 010, 100, 002 | non | non | non | Placement des répliques par défaut (xyz : autres centres de données, autres baies, autres serveurs). (recommandé '000' if len(topology.volume) < 2 else ('001' if len(topology.volume) < 3 else '002')) |
Taille maximale d'un volume (volume_size_mb) | int | 1024 | min 64, max 30000, MB | non | non | non | Taille à laquelle un volume passe en lecture seule et un nouveau est créé. |
Volumes par serveur (max_volumes) | int | 100 | min 1, max 10000 | non | non | non | Nombre maximal de volumes d'un serveur de volumes. |
Sécurité
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|---|---|---|---|---|---|---|
Clé d'accès d'administration (admin_access_key) | string | navin-admin | ^[A-Za-z0-9_-]{3,64}$ | non | non | non | Clé d'accès de l'identité S3 d'administration. |
Clé secrète d'administration (admin_secret_key) | password | généré | - | non | oui | non | Clé secrète de l'administrateur S3 (commandes d'exploitation et test fonctionnel seulement). |
Utilisateur de la console d'administration (admin_ui_user) | string | admin | ^[A-Za-z0-9_.-]{3,64}$ | non | non | non | Identifiant de la console web weed admin (WEED_ADMIN_USER). |
Mot de passe de la console d'administration (admin_ui_password) | password | généré | - | non | oui | non | Mot de passe de la console web weed admin (WEED_ADMIN_PASSWORD), généré à chaque installation et conservé dans le coffre du Manager ; sans lui la console fonctionnerait sans authentification. |
TLS (tls_enabled) | bool | false | - | non | non | oui | TLS mutuel sur le gRPC de chaque composant (security.toml) et HTTPS sur chaque port HTTP (API S3, filers, serveurs de volumes, maîtres, console d'administration) avec les certificats émis par l'autorité de la console. |
Points d'accès
| Point d'accès | Schéma | Composant | Port | Chemin | Paramètre TLS | Paramètres de liaison | Secrets de liaison | Commande de provisionnement |
|---|---|---|---|---|---|---|---|---|
s3 | http | s3 | 8333 (s3_port) | - | tls_enabled | region, bucket, access_key, path_style | secret_key | provision_consumer |
filer | http | filer | 8888 (filer_port) | - | tls_enabled | - | - | - |
Fichiers de configuration client
Fichiers rendus pour le téléchargement de la configuration client :
seaweedfs.env(client.env.j2)
Commandes
| Commande | Composant | Cible | Description |
|---|---|---|---|
Provisionner le compartiment d'un consommateur (provision_consumer) | s3 | premier hôte | Crée le compartiment et une identité S3 limitée à ce compartiment pour un consommateur (idempotent). |
Liste des volumes (volume_list) | s3 | premier hôte | Exécute volume.list dans weed shell (serveurs, volumes, répliques). |
Paramètres des commandes
| Commande | Paramètre | Type | Défaut | Obligatoire | Description |
|---|---|---|---|---|---|
provision_consumer | Compartiment (bucket) | string | - | oui | Compartiment du consommateur. |
provision_consumer | Clé d'accès (access_key) | string | - | oui | Identité du consommateur. |
provision_consumer | Clé secrète (secret_key) | password | - | oui | Clé secrète de l'identité (dérivée par consommateur). |
Contrôles de santé
Vivacité (par instance)
| Composant | Contrôle | Détails |
|---|---|---|
master | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.master_port }}/cluster/status | Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s |
volume | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.volume_port }}/status | Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s |
filer | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.filer_port }}/healthz | Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s |
s3 | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.s3_port }}/healthz | Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s |
admin | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.admin_ui_port }}/health | Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s |
Disponibilité (contrôle du service)
| Contrôle | Détails |
|---|---|
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.master_port }}/cluster/healthz | Attendu 200 |
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.s3_port }}/healthz | Attendu 200 |
Test fonctionnel
Crée un compartiment, dépose un objet et le relit par l'API S3 (signature V4), puis supprime les deux. (s3: put, get, cleanup)
Contrôles préalables
| Contrôle | Type | Signification | Sévérité | Composants |
|---|---|---|---|---|
memory | memory_mb {"min": 1024} | au moins 1024 Mo de mémoire | bloquant | tous les composants |
disk | disk_free_mb {"path": "/var/lib/navin", "min": 10240} | au moins 10240 Mo libres pour /var/lib/navin | avertissement | volume |
s3_port_free | port_free {"param": "s3_port"} | port 8333 libre sur l'hôte | bloquant | s3 |
master_port_free | port_free {"param": "master_port"} | port 9333 libre sur l'hôte | bloquant | master |
Désinstallation
Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.
Liens rapides
- Console d'administration :
{{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.admin_ui_port }}/ - Maître SeaweedFS :
{{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.master_port }}/
Documentation amont
- Site : https://seaweedfs.com
- Sources : https://github.com/seaweedfs/seaweedfs
- Haute disponibilité : https://github.com/seaweedfs/seaweedfs/blob/master/note/slides/seaweedfs-production-setup.md
- Haute disponibilité : https://github.com/seaweedfs/seaweedfs/wiki/Production-Setup