Passer au contenu principal

Scalabilité d'Immich

Immich est conçu avec des pratiques de déploiement modernes à l'esprit, et son backend est conçu pour pouvoir fonctionner avec plusieurs instances en parallèle. Lors de cette mise en œuvre, la seule condition à respecter est que chaque instance doit être connectée à l'infrastructure partagée. Cela signifie qu'elles doivent toutes avoir accès aux mêmes instances Postgres et Redis, et avoir les mêmes fichiers montés dans les conteneurs.

La scalabilité peut être utile pour diverses raisons. Peut-être avez-vous un PC de gaming que vous souhaitez utiliser pour le transcodage et la génération de vignettes, ou peut-être gérez-vous un cluster Kubernetes réparti sur quelques serveurs puissants que vous voulez exploiter.

info

Si vous ne disposez que d'une seule machine pour exécuter Immich, l'extension à plusieurs conteneurs risque de ne pas apporter d'avantage. Un conteneur Immich exécutera plusieurs tâches en arrière-plan en même temps, et vous pouvez en augmenter le nombre via le panneau d'administration.

Les modalités de scalabilité sur plusieurs machines varient largement selon les environnements et nécessitent certaines connaissances pour être mises en place. Ce guide ne donne donc pas d'instructions spécifiques. Dans certains cas, augmenter le nombre de répliques dans un déploiement Kubernetes peut suffire ; dans d'autres, vous pourriez devoir configurer des tunnels réseau ou des montages NFS. Les détails sont laissés à l'initiative du lecteur ;)

Workers

Par défaut, chaque conteneur immich-server en cours d'exécution est doté de plusieurs workers internes. Si vous augmentez la scalabilité uniquement pour gérer plus de tâches en arrière-plan, vous pouvez choisir de désactiver le worker responsable de l'API. Consultez la section workers pour plus de détails.

Réduction de l'échelle

De la même manière que vous pouvez accroître le nombre de conteneurs, vous pouvez également choisir de réduire leur nombre. Tous les états sont stockés dans Postgres, Redis et le système de fichiers, ce qui élimine tout risque lorsqu'on arrête un conteneur immich-server actif, par exemple si vous voulez utiliser votre GPU pour jouer à des jeux. Tant qu'un worker API fonctionne, vous pourrez continuer à naviguer sur Immich, et les tâches en attente seront traitées dès qu'un worker sera disponible pour elles.