Déployer Flower sur Plusieurs Machines avec Docker Compose¶
Ce guide vous aidera à mettre en place un projet Flower sur plusieurs machines à l’aide de Docker Compose.
Vous apprendrez comment exécuter les composants client et serveur de Flower sur deux machines séparées, avec Flower configuré pour utiliser l’encryption TLS et persister l’état SuperLink à la réinitialisation. Un serveur se compose d’un SuperLink et d’un ServerApp. Pour plus de détails sur l’architecture Flower, consultez la page expliquant Flower Architecture (architecture de Flower).
Ce guide suppose que vous avez terminé le Démarrer rapidement avec Docker Compose tutoriel. Il est fortement recommandé que vous suiviez et compreniez les contenus de ce tutoriel avant de poursuivre avec ce guide.
Prérequis¶
Avant de commencer, assurez-vous que vous avez les pré-requis suivants :
Le
flwrCLI est installed localement.Le daemon Docker est en cours d’exécution sur votre machine locale et la machine distante.
Docker Compose V2 est installé à la fois sur votre machine locale et la machine distante.
Vous pouvez vous connecter à la machine distante depuis votre machine locale.
Les ports
9091et9093sont accessibles sur la machine distante.
Note
Le guide utilise l”examples/quickstart-sklearn exemple comme projet d’exemple.
Si votre projet a un nom ou une localisation différents, veuillez vous rappeler de modifier les commandes/chemins en conséquence.
Étape 1 : Configuration¶
Cloner le référentiel Flower et changer dans le répertoire
distributed:$ git clone --depth=1 --branch v1.31.0 https://github.com/flwrlabs/flower.git $ cd flower/framework/docker/distributed
Obtenir l’adresse IP de la machine distante et la sauvegarder pour plus tard.
Utilisez le fichier Compose
certs.ymlpour générer vos propres certificats signés par vous-même. Si vous avez des certificats, vous pouvez continuer avec l’étape 2.Important
Utilisez ces certificats uniquement à des fins de développement.
Pour les environnements de production, vous devrez peut-être utiliser des services dédiés pour obtenir vos certificats.
Tout d’abord, définissez la variable d’environnement
SUPERLINK_IPavec l’adresse IP de la machine distante. Par exemple, si l’IP est192.168.2.33, exécutez :$ export SUPERLINK_IP=192.168.2.33
Générez ensuite les certificats auto-signés :
$ docker compose -f certs.yml -f ../complete/certs.yml run --rm --build gen-certs
Étape 2 : Copiez les fichiers Compose du Serveur¶
Utilisez la méthode qui vous convient le mieux pour copier le répertoire server, les certificats et le fichier pyproject.toml de votre projet Flower sur la machine distante.
Par exemple, vous pouvez utiliser scp pour copier les répertoires :
$ scp -r ./server \
./superlink-certificates \
../../../examples/quickstart-sklearn/pyproject.toml remote:~/distributed
Étape 3 : Démarrer les composants de serveur Flower¶
Se connecter à la machine distante en utilisant ssh et exécuter la commande suivante pour démarrer les services SuperLink et ServerApp:
1 $ ssh <your-remote-machine>
2 # In your remote machine
3 $ cd <path-to-``distributed``-directory>
4 $ export PROJECT_DIR=../
5 $ docker compose -f server/compose.yml up --build -d
Note
Le chemin vers le conteneur PROJECT_DIR contenant le fichier pyproject.toml doit être relatif par rapport à l’emplacement du fichier serveur compose.yml.
Note
Lorsque vous travaillez avec Compose sur Linux, il peut être nécessaire de créer d’abord le répertoire state et de changer sa propriété pour s’assurer d’un accès et des permissions corrects. Après avoir exporté la variable PROJECT_DIR (après ligne 4), exécutez les commandes suivantes :
$ mkdir server/state
$ sudo chown -R 49999:49999 server/state
Pour plus d’informations, consultez la page suivante : Conservation de l’État du SuperLink.
Retournez à votre terminal sur votre machine locale.
Étape 4 : Démarrer les composants client Flower¶
Sur votre machine locale, exécutez la commande suivante pour démarrer les composants clients :
# In the `docker/distributed` directory
$ export PROJECT_DIR=../../../../examples/quickstart-sklearn
$ docker compose -f client/compose.yml up --build -d
Note
La voie vers le répertoire contenant le fichier PROJECT_DIR doit être relative à l’emplacement du fichier client pyproject.toml.
Étape 5 : Exécuter votre projet Flower¶
Spécifiez les adresses IP distantes et la voie vers le certificat racine dans un nouveau Flower de connexion dans votre fichier de configuration flwr config list. La façon la plus simple pour localiser ce fichier est par le biais de __PH4__:
$ flwr config list
Flower Config file: /path/to/.flwr/config.toml
SuperLink connections:
supergrid
local (default)
Avec le fichier situé dans votre système, éditez-le et ajoutez une nouvelle connexion nommée remote-deployment:
[superlink.remote-deployment]
address = "192.168.2.33:9093"
root-certificates = "/absolute/path/to/superlink-certificates/ca.crt"
Exécutez le projet et suivez les ServerApp journaux :
$ cd flower/examples/quickstart-sklearn
$ flwr run ../../../examples/quickstart-sklearn remote-deployment --stream
C’est tout ! Avec ces étapes, vous avez mis en place Flower sur deux machines séparées et êtes prêt à commencer à l’utiliser.
Étape 6 : Nettoyage¶
Arrêtez les composants client Flower :
# In the `docker/distributed` directory
$ docker compose -f client/compose.yml down
Arrêtez les composants de serveur Flower et supprimez l’état SuperLink :
$ ssh <your-remote-machine>
$ cd <path-to-``distributed``-directory>
$ docker compose -f server/compose.yml down -v