Aller au contenu principal

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é​

Version4.51
Usageinstaller et configurer
Coucheinfrastructure (présentée à part)
CatégorieStockage
Méthodes d'installationbinary, podman
Connexion externes3
Réservé au bac à sablenon
Service socleoui, sélectionné par défaut par l'assistant d'installation

Licence​

Identifiant SPDXApache-2.0
Politique de licencelicence socle (MIT ou Apache-2.0)
Exception de licence-
Composant de la plateformeseaweedfs

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.

TypePaquetVersionLicenceDétails
image de conteneurdocker.io/chrislusf/seaweedfs4.51Apache-2.0clé d'image weed, utilisée par master, volume, filer, s3, admin, condensé sha256:f7a49e3f3972ebed5be2ed4befa4a0c68eb7bdddba6e692d42729ceb545134b8
archive binaireseaweedfs-4.51-linux_amd64.tar.gz4.51Apache-2.0https://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éthodeSystèmes d'exploitationArchitectures
binaryfamille RHEL (dnf), famille Debian (apt), Arch Linux (pacman)x86_64 (architecture des artefacts du descripteur)
podmanfamille 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​

ComposantNom du portPortOuvert dans le pare-feu de l'hôte
masterhttp9333/tcpoui
mastergrpc19333/tcpoui
mastermetrics9324/tcpoui
volumehttp8180/tcpoui
volumegrpc18180/tcpoui
volumemetrics9325/tcpoui
filerhttp8888/tcpoui
filergrpc18888/tcpoui
filermetrics9326/tcpoui
s3s38333/tcpoui
s3metrics9327/tcpoui
adminadmin12535/tcpoui

Services et connexions nécessaires​

Ce service n'a aucune dépendance.

Méthodes et modes d'installation​

MéthodeDéfautCe que la méthode utilise
binaryouiles 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​

ComposantTypeMéthodes d'installationPorts
Maître (master)maîtrebinary, podman9333/tcp, 19333/tcp, 9324/tcp
Serveur de volumes (volume)travailleurbinary, podman8180/tcp, 18180/tcp, 9325/tcp
Filer (filer)maîtrebinary, podman8888/tcp, 18888/tcp, 9326/tcp
Passerelle S3 (s3)travailleurbinary, podman8333/tcp, 9327/tcp
Console d'administration (admin)maîtrebinary, podman12535/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 :

ComposantPlacement
mastermin 1, max 1
volumemin 1, max 1
filermin 1, max 1
s3min 1, max 1
adminmin 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 :

ComposantPlacement
mastermin 3, nombre impair, recommandé 3
volumemin 3, recommandé 3
filermin 2, recommandé 2
s3min 2, recommandé 2
adminmin 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.

  1. 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.

  2. Choisissez le service. À l'étape Service, sélectionnez Stockage objet SeaweedFS. La carte affiche la licence Apache-2.0. Choisissez la Méthode parmi binary, podman (par défaut binary). Pour enregistrer à la place un service s3 existant 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.

  3. 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).

  4. Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.

  5. 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.

  6. 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.

  7. 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é​

Clusternatif (native)
Haute disponibiliténatif (native)
Basculerépartiteur (load-balancer)
Réplicationnatif (native)
QuorumRaft (raft)
Découvertestatique (static)
Point d'entréerépartiteur (load-balancer)
Documentation officiellehttps://github.com/seaweedfs/seaweedfs/blob/master/note/slides/seaweedfs-production-setup.md
Référenceshttps://github.com/seaweedfs/seaweedfs/wiki/Production-Setup
Paramètre TLS entre pairstls_enabled
Commande d'état du clustervolume_list

Topologie par mode​

ModesNiveau le plus haut du catalogueRépartitionComposant du quorumDomaines de panneDescription
singleautonome (standalone)unique (single)-1Un master, un serveur de volumes, un filer et une passerelle S3.
distributedcluster (cluster)actif-actif (active-active)master3Masters 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ètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Port des maîtres (master_port)port9333-nonnonnonPort HTTP des maîtres ; le gRPC utilise ce port plus 10000.
Port des volumes (volume_port)port8180-nonnonnonPort HTTP des serveurs de volumes ; le gRPC utilise ce port plus 10000.
Port des filers (filer_port)port8888-nonnonnonPort HTTP des filers ; le gRPC utilise ce port plus 10000.
Port de l'API S3 (s3_port)port8333-nonnonnonPort de la passerelle S3.
Port des métriques des maîtres (master_metrics_port)port9324-nonnonnonPort 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)port9325-nonnonnonPort 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)port9326-nonnonnonPort Prometheus des filers (distinct par processus : un hôte peut porter tous les composants).
Port des métriques des passerelles S3 (s3_metrics_port)port9327-nonnonnonPort Prometheus des passerelles S3 (distinct par processus : un hôte peut porter tous les composants).
Port de la console d'administration (admin_ui_port)port12535-nonnonnonPort HTTP de la console web weed admin ; le gRPC des workers utilise ce port plus 10000.

Stockage​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Région (region)stringeu-west-3-nonnonnonRégion S3 annoncée aux clients (portée de la signature V4).
Réplication (replication)enum000000, 001, 010, 100, 002nonnonnonPlacement 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)int1024min 64, max 30000, MBnonnonnonTaille à laquelle un volume passe en lecture seule et un nouveau est créé.
Volumes par serveur (max_volumes)int100min 1, max 10000nonnonnonNombre maximal de volumes d'un serveur de volumes.

Sécurité​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Clé d'accès d'administration (admin_access_key)stringnavin-admin^[A-Za-z0-9_-]{3,64}$nonnonnonClé d'accès de l'identité S3 d'administration.
Clé secrète d'administration (admin_secret_key)passwordgénéré-nonouinonClé secrète de l'administrateur S3 (commandes d'exploitation et test fonctionnel seulement).
Utilisateur de la console d'administration (admin_ui_user)stringadmin^[A-Za-z0-9_.-]{3,64}$nonnonnonIdentifiant de la console web weed admin (WEED_ADMIN_USER).
Mot de passe de la console d'administration (admin_ui_password)passwordgénéré-nonouinonMot 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)boolfalse-nonnonouiTLS 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èsSchémaComposantPortCheminParamètre TLSParamètres de liaisonSecrets de liaisonCommande de provisionnement
s3https38333 (s3_port)-tls_enabledregion, bucket, access_key, path_stylesecret_keyprovision_consumer
filerhttpfiler8888 (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​

CommandeComposantCibleDescription
Provisionner le compartiment d'un consommateur (provision_consumer)s3premier hôteCrée le compartiment et une identité S3 limitée à ce compartiment pour un consommateur (idempotent).
Liste des volumes (volume_list)s3premier hôteExécute volume.list dans weed shell (serveurs, volumes, répliques).

Paramètres des commandes​

CommandeParamètreTypeDéfautObligatoireDescription
provision_consumerCompartiment (bucket)string-ouiCompartiment du consommateur.
provision_consumerClé d'accès (access_key)string-ouiIdentité du consommateur.
provision_consumerClé secrète (secret_key)password-ouiClé secrète de l'identité (dérivée par consommateur).

Contrôles de santé​

Vivacité (par instance)​

ComposantContrôleDétails
masterHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.master_port }}/cluster/statusAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s
volumeHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.volume_port }}/statusAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s
filerHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.filer_port }}/healthzAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s
s3HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.s3_port }}/healthzAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s
adminHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.admin_ui_port }}/healthAttendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s

Disponibilité (contrôle du service)​

ContrôleDétails
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.master_port }}/cluster/healthzAttendu 200
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.s3_port }}/healthzAttendu 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ôleTypeSignificationSévéritéComposants
memorymemory_mb {"min": 1024}au moins 1024 Mo de mémoirebloquanttous les composants
diskdisk_free_mb {"path": "/var/lib/navin", "min": 10240}au moins 10240 Mo libres pour /var/lib/navinavertissementvolume
s3_port_freeport_free {"param": "s3_port"}port 8333 libre sur l'hôtebloquants3
master_port_freeport_free {"param": "master_port"}port 9333 libre sur l'hôtebloquantmaster

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​