Aller au contenu

Construire une OctaPi

Tuto Raspberry pi 4 ovh
Publié dans Tutoriels · 14 Juillet 2019
Tags: octapiserveur
Construire une OctaPi

Dans cette ressource, vous ferez un système informatique distribué à l'aide:

  • Huit Raspberry Pi 3 ordinateurs faisant office de serveurs
  • Une autre Raspberry Pi 3 agissant en tant que client qui contrôle les serveurs

système OctaPi

Ce système est connu comme un ordinateur de cluster , une sorte de nuage ordinateur. La puissance des huit unités centrales de serveurs (32 cœurs) vous permettra d'exécuter des calculs à partir de la CPU client beaucoup plus rapidement que le client peut les exécuter lui - même. Une fois que vous avez terminé ce projet, vous serez en mesure de développer des applications en Python 3 sur le client et les exécuter sur votre cluster.

Il y a, vous aurez besoin de trois étapes à suivre pour faire une OctaPi:

  • Créer un réseau Wi-Fi pour le cluster en utilisant un routeur dédié
  • Créer une machine client
  • Créer huit serveurs

REMARQUE: Vous ne fait pas besoin de huit serveurs, comme le cluster travaillera encollaboration avec un certain nombre de serveurs jusqu'à des limites déterminées par les performances de votre routeur WiFi. Si vous n'avez pas assez Raspberry Pi disponible pour faire un OctaPi, pourquoi ne pas faire un HexaPi (6) ou un TetraPi (4)?

Si vous voulez faire de votre groupe soit jolie, vous pouvez adapter Pimoroni Unicorn HAT 8x8 tableaux LED pour chaque serveur. Un script de contrôle de bash sur la machine cliente peut être utilisée pour modifier les motifs sur la licorne HATS.

Construire une OctaPi par GCHQ et la Fondation Raspberry Pi est distribué sous licence Creative Commons Attribution 4.0 License internationale.
Sur la base d' un travail à https://github.com/raspberrypilearning/rpi-python-build-an-octapi

Ce dont tu auras besoin
Matériel
  • 9 x Raspberry Pi 3
  • 8 x Unicorn HAT (facultatif)
  • 8 x courts câbles micro USB
  • Routeur sans fil
  • Power Hub Universal 10 port professional USB 120w charging hub. 2.4amps
  • Ethernet cable

Vous avez besoin de neuf Raspberry Pi 3 ordinateurs au total, parce que huit d'entre eux formeront le groupe de OctaPi. Seul le dernier aura besoin des périphériques habituels d'agir comme la machine cliente.

Vous pouvez monter votre cluster de OctaPi sur une planche de plexiglas avec écarteurs comme indiqué sur les photos.

Nous ne recommandons pas d'utiliser un routeur qui est réaffecté à partir d'un fournisseur de services à large bande. Tout en utilisant un tel routeur pourrait fonctionner, les fonctions peuvent être verrouillés dans le routeur, soit à des conditions non définies par défaut pour répondre aux exigences du fournisseur de services. Cela pourrait affecter son utilisation avec le OctaPi.

Logiciel

Le OctaPi utilisera des logiciels suivants. Détails sur la façon de les installer sont fournis dans la ressource.

  • Python 3 dispy
  • Python 3 nmap
  • Python 3 psutil
  • Python 3 unicornhat
Configurez le routeur sans fil

Les processeurs de votre cluster de OctaPi communiqueront via un réseau local WiFi dédié créé par un routeur sans fil. Le routeur ne pas besoin d'être connecté à Internet pour le fonctionnement du cluster, ni besoin d'être en ligne pour mise en place.

Nous supposons que vous utilisez un routeur flambant neuf ou avez réinitialiser votre routeur à ses paramètres par défaut.

  • Allumez votre routeur sans fil.

  • Connectez un ordinateur au routeur à l'aide d'un câble Ethernet. Vous pouvez utiliser tout système informatique doté d'un navigateur Web, y compris un travail Raspberry Pi 3.

  • Suivez les instructions d'installation fournies avec le routeur. Cela implique normalement l'ouverture d'un navigateur Web et la navigation sur la page « admin » de votre routeur pour commencer à changer les paramètres du routeur. Les informations de connexion « admin » auront été fournies par le fabricant de votre routeur WiFi.

  • Cherchez une page qui vous permet de définir le nom du réseau WiFi (aussi appelé SSID) et le changer pour « OctaPi ». Par exemple, la page peut ressembler à ceci:

    Réglez le SSID

    Remarque: Raspberry Pi 3 ordinateurs fonctionnent uniquement avec 2,4 GHz WiFi, de sorte que vous pouvez ignorer les paramètres 5GHz ou désactiver 5GHz WiFi dans votre routeur.

  • Maintenant , recherchez les paramètres IP du réseau local, qui peuvent être dans les paramètres du « réseau local ». Modifier l'adresse IP de votre routeur 192.168.1.1- encore une fois, l'interface administrateur de chaque routeur sera différent, mais voici un exemple de ce que vous pourriez voir:

    Définissez l'adresse IP du routeur

    Vous devrez peut-être redémarrer votre routeur et vous en tant que « admin » après cette étape.

  • Définir le mot de passe réseau WiFi, qui peut être sous la rubrique « Sécurité sans fil » ou similaire.

    Important: Assurez - vous que vous écrivez le mot de passe afin que vous puissiez l' utiliser pour vous connecter à votre réseau dédié « OctaPi ».

  • Recherchez les paramètres DHCP. DHCP est un protocole utilisé pour l' émission des adresses IP automatiquement. Le client et les serveurs utiliseront cette fonctionnalité pour déterminer leurs adresses IP. Les paramètres de DHCP peuvent être sous « LAN ». Assurez - vous que DHCP est activé et réglé la plage d'adresses DHCP à quelque chose qui offre une gamme d'adresses utiles; nous avons choisi 192.168.1.2de 192.168.1.254. L' utilisation de cette gamme particulière n'est pas critique mais en utilisant un différent ici signifie les adresses IP que vous voyez diffèrent de ceux indiqués dans ce guide. Changer seulement si vous savez ce que vous faites.

    Définissez la plage DHCP

  • S'il y a un paramètre pour la durée du bail IP, que ce chiffre soit aussi grand que possible.

    La durée du bail est la durée de temps avant que les adresses IP DHCP réaffecte - vous avez besoin d'être longue pour éviter d'interrompre la connexion entre le client et les serveurs.

  • Redémarrez votre routeur WiFi afin que tous les changements entrent en vigueur.

Mettre en place le client OctaPi

L' un des ordinateurs Raspberry Pi sera utilisé comme machine cliente donnant accès aux serveurs du cluster OctaPi. Vous aurez besoin de connecter les périphériques habituels (moniteur, clavier, souris) à cette Raspberry Pi afin de l' utiliser pour contrôler la OctaPi.

  • Sur votre carte micro SD, installez la dernière version de Raspbian en suivant les instructions du guide du logiciel .

  • L'utilisation de cette carte micro SD, démarrer le Raspberry Pi 3 avec un clavier, écran et souris connectée.

  • Vérifiez que le Raspberry Pi est également connecté à Internet.

  • Ouvrez une fenêtre de terminal.

    Ouvrez un terminal

  • Installer dispyen tapant cette commande dans le terminal:

     sudo pip3 install dispy==4.7.1 

    Dispy est une implémentation Python distribuée qui vous permettra d'écrire du code sur le client et l' exécuter à travers les serveurs. Remarque : Il est essentiel que vous installez la version 4.7.1 de dispy, comme les versions ultérieures reposent sur une bibliothèque qui est actuellement incompatible avec Raspbian.

    Des informations complémentaires sont disponibles à partir dispy: Calcul distribué et parallèle avec / pour Python .

  • Installer nmapen tapant cette commande dans le terminal:

     sudo apt-get install nmap 

    Nmap est utilisé pour découvrir les adresses IP des serveurs Raspberry Pi formant le cluster OctaPi, afin qu'ils puissent être arrêtés ou redémarrés au besoin.

  • Si vous utilisez HATS en option Unicorn, installez le logiciel pour eux en tapant cette commande dans le terminal:

     curl https://get.pimoroni.com/unicornhat | bash 

    Vous devrez redémarrer votre Pi après l'installation.

  • Assurez - vous que vous êtes dans le /home/pirépertoire, puis télécharger le logiciel client OctaPi en tapant cette commande dans le terminal:

      git clone https://github.com/raspberrypilearning/octapi-setup.git 

    Le logiciel client contient des exemples de code source en Python 3 et un script de contrôle de bash pour redémarrer et arrêter le cluster. Le script de contrôle peut être utilisé avec la licorne HAT ainsi.

  • Déplacer tous les fichiers du clientdossier que vous venez de télécharger dans le /home/pidossier:

     mv /home/pi/octapi-setup/client/* /home/pi 
  • Éteignez votre nouveau client OctaPi pour le moment et mettre de côté le client carte SD dans un endroit sûr.

Mettre en place un serveur OctaPi

Chacun des ordinateurs Raspberry Pi 3 du cluster doit avoir sa propre carte micro SD préparée. Cependant, chaque carte est identique, vous pouvez configurer un seul serveur, vérifier qu'il fonctionne, puis répliquez la carte SD pour les autres serveurs.

  • Sur une nouvelle carte micro SD, installez la dernière version de Raspbian en suivant les instructions du guide du logiciel .

  • Démarrez un Raspberry Pi 3 en utilisant cette carte SD avec un clavier, écran et souris connectée.

  • Vérifiez que le Raspberry Pi est connecté à Internet.

  • Ouvrez un terminal.

    Ouvrez un terminal

  • Comme avec le client, installer dispyen tapant cette commande dans le terminal:

      sudo pip3 install dispy==4.7.1 
  • Installer psutilen tapant cette commande dans le terminal:

      sudo pip3 install psutil 

    dispy utilise psutil pour signaler l' utilisation du processeur des serveurs du cluster.

  • Assurez - vous dans le /home/pi répertoire en tapant cd /home/pi

  • Si vous utilisez la licorne HATs, installez le logiciel pour eux en tapant cette commande dans le terminal:

    curl https://get.pimoroni.com/unicornhat | bash 

    Vous devrez redémarrer votre Pi après.

    Ensuite, ouvrez à nouveau le terminal et assurez - vous que vous êtes dans le /home/pi dossier en tapant cd /home/pi

    Télécharger le start_unicorn.sh script bash pour l' installation sur le serveur en utilisant la commande suivante :

      wget https://raw.githubusercontent.com/raspberrypilearning/octapi-setup/server/start_unicorn.sh 

    Faire le script exécutable en tapant la commande suivante:

      chmod u+x ./start_unicorn.sh 
  • Retour à la fenêtre de terminal et tapez la commande suivante pour commencer à éditer le /etc/rc.local fichier:

      sudo nano /etc/rc.local 
  • Près du bas du fichier, juste avant exit 0, ajoutez les lignes suivantes pour exécuter en dispytant que démon (un processus en cours d' exécution en arrière - plan) chaque fois que le serveur démarre:

      sleep 20
      _IP=$(hostname -I)   /usr/local/bin/dispynode.py -i "" --daemon --client_shutdown

    Remarque: Le sommeil pendant 20 secondes est de laisser du temps pour le serveur de se connecter à votre routeur WiFi et d' obtenir une adresse IP du réseau de celui - ci. Vous avez besoin de l'adresse IP afin que le serveur écoutera correctement pour le client sur le réseau. Vous devrez peut-être régler ce délai en fonction du routeur que vous utilisez.

  • Appuyez sur Ctrl+ o pour enregistrer vos modifications, puis Ctrl+ x pour quitter l'éditeur nano.

  • Vérifiez que la connexion à distance via SSH est activé afin que l' accès en ligne de commande à distance à votre serveur est possible. Dans le Préférences menu, sélectionnez Configuration Raspberry Pi .

    activer SSH

    Cliquez ensuite sur le Interfaces onglet et assurez - vous que SSH est activé.

    activer SSH

Mettre en place le serveur sur le réseau OctaPi

Toujours en utilisant le serveur Raspberry Pi, nous avons besoin de passer du réseau connecté à Internet au réseau OctaPi. Assurez -vous de votre routeur WiFi OctaPi est sous tension et entièrement démarré.

  • Cliquez sur le symbole WiFi en haut du bureau et sélectionnez réseau le « OctaPi »

    Cliquez sur le symbole Wifi

  • Entrez le mot de passe réseau de votre routeur (qui vous avez noté précédemment) pour rejoindre le réseau.

    Entrer le mot de passe

    Après avoir fait cela, le serveur se souviendra des identifiants Wi-Fi et connectez-vous sur votre réseau dédié « OctaPi » à chaque fois qu'il démarre.

  • Nous devons supprimer toute information WiFi précédent pour éviter toute confusion.

    Dans une fenêtre de terminal, tapez la commande suivante pour modifier le wpa_supplicant.conffichier:

    sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 

    Le contenu du fichier se présentent comme suit

       ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1   country=GB    network={       ssid="OctaPi"       psk="mynetworkpassword"       key_mgmt=WPA-PSK   }

    Retirez tout « réseau {} » sections pour les autres réseaux, appuyez sur Ctrl+ opour enregistrer et Ctrl+ xpour quitter.

    Remarque: Si les réseaux WiFi alternatifs ne sont pas supprimés, votre serveur peut se connecter au mauvais réseau et ne pas être à la disposition du client.

  • Lorsque vous avez terminé, arrêtez le serveur Raspberry Pi.

Mettre en place le client sur le réseau OctaPi

  • Connectez un moniteur, le clavier et la souris et la mise sous tension d' un contenant Raspberry Pi le client carte SD vous avez créé précédemment.

  • Répétez les instructions de l'étape précédente sur cet ordinateur, la connexion au réseau « OctaPi » et en supprimant les détails WiFi de rechange de wpa_supplicantfichier.

  • Garder le client sous tension, démarrez un seul serveur Raspberry Pi avec seulement un câble d'alimentation connecté.

  • Ouvrez une fenêtre de terminal sur le client Raspberry Pi.

  • Tapez la commande suivante pour trouver l'adresse IP du client Raspberry Pi:

      hostname -I 
  • Tapez la commande suivante pour trouver l'adresse IP du serveur Raspberry Pi:

      nmap -sP 192.168.1.* 

    Prenez note du serveur adresse IP (vous devriez voir l'adresse du routeur, qui sera 192.168.1.1, et l'adresse du client énumérés, aussi).

    Remarque: Le nmaplogiciel scanne le réseau pour trouver les adresses IP des périphériques qui y sont connectés. Nous devons le faire sur notre réseau local afin que la machine client peut communiquer avec les ordinateurs Raspberry Pi qui forment le groupe OctaPi. Ne pas exécuter nmap sur un réseau qui est connecté à Internet. nmapest un puissant logiciel et l' utiliser pour scanner un réseau que vous ne possédez pas peut être considéré comme le piratage, et dans certains pays peut même être illégale.

  • Sur le client , exécutez ssh-keygendans le terminal pour créer une clé d'authentification du client avec le serveur.

    ssh-keygen 

    Appuyez sur Entrée lorsque demandé où enregistrer la clé, puis appuyez sur Entrée à nouveau deux fois quand on lui demande un mot de passe, laissant vide.

    Cette clé est utilisée pour aider le cluster_action.shscénario (fourni avec le logiciel client) pour fonctionner avec les serveurs.

  • Trouvez où vous avez noté l'adresse IP de la machine serveur et exécuter cette commande dans un terminal sur le client pour copier la clé du serveur (remplacez <remote ip>le du serveur Adresse IP):

    ssh-copy-id -i ~/.ssh/id_rsa.pub <remote ip> 

    On vous demandera si vous voulez continuer à vous connecter. Tapez yes et appuyez sur Entrée . On vous demandera le mot de passe serveur de Pi qui sera le mot de passe par défaut raspberry.

    Ceci termine la préparation du client et le serveur. Nous devons maintenant vérifier que tout est correct et fonctionne correctement avec un seul serveur.

Assurez-vous que cela fonctionne
  • Assurez - vous que votre routeur dédié « OctaPi » est sous tension et entièrement initialisé, le client est démarré avec les périphériques connectés et le serveur est démarré avec seulement un câble d'alimentation ci - joint.

  • Ouvrez un terminal sur le client .

    Terminal

  • Assurez - vous que vous êtes dans le /home/pirépertoire et tapez la commande suivante pour exécuter le compute.pylogiciel exemple fourni avec les exemples de logiciel client que vous avez téléchargé plus tôt:

     sudo python3 compute.py 

    Le compute.pyscript Python exécute 15 emplois sur votre serveur. Ils sont tous les retards aléatoires juste avant le retour. Si le OctaPi fonctionne correctement, les travaux complèteront à environ une minute et un tableau montrant les statistiques de l'application seront affichés dans le terminal. Vous devriez voir un résultat semblable à ceci:

                                 noeud | processeurs | Offres d'emploi | Sec / Travail | Temps Node Sec   ------------------------------------------------------------------------------    192.168.1.3 (Raspberry Pi) | 4 | 16 | 12,841 | 205,460    Durée totale de l'emploi: 205,460 sec, temps de mur: 57,347 sec, speedup: 3,583 

    Si le compute.pyscript ne fonctionne pas, passez en revue vos étapes une par une et vérifier que le client, serveur et routeur sont tous configurés correctement et qu'il fonctionne correctement.

  • Si le test a fonctionné, utilisez le client pour arrêter manuellement le serveur ( en remplacement de <remote_ip>l'adresse IP du serveur que vous avez noté précédemment):

    ssh <remote_ip>
      sudo shutdown -HP now

    Vous devrez peut - être utiliser à nmapnouveau pour trouver l'adresse IP du serveur si elle a changé lorsque le routeur WiFi redémarré.

    À l' avenir, nous allons utiliser le cluster_action.sh script pour le faire.

  • Une fois que le serveur est arrêté, retirer sa carte micro SD.

  • L'utilisation d'une carte SD ou duplicateur un ordinateur qui est capable de lire les cartes SD, créer sept copies identiques de cette carte SD et insérez-les dans les autres serveurs afin que vous avez un total de huit.

Remarque: Il est également possible pour créer vos huit cartes SD en suivant huit fois les instructions de configuration du serveur. Si vous choisissez d'utiliser cette méthode plutôt, vous devez exécuter la ssh-copy-id commande sur le client une fois par serveur pour copier la clé sur chaque serveur séparément. NE PAS utiliser la ssh-keygen commande pour régénérer la clé. Reportez - vous aux instructions de configuration du client pour savoir comment copier la clé du client vers le serveur.


OctaPi installation physique

  • Décidez comment vous allez alimenter votre OctaPi. Vous pouvez simplement alimenter chacun des huit ordinateurs Raspberry Pi séparément en utilisant huit alimentations standard, ou vous trouverez peut-être plus pratique d'utiliser un concentrateur USB ou le chargeur afin de les alimenter de manière centralisée.

    Note: Il est essentiel qu'il y ait une puissance suffisante pour fournir 2.4A à chaque Raspberry Pi 3. Tous les hubs USB / chargeurs peuvent alimenter 2.4A sur tous les ports, alors assurez - vous de vérifier attentivement.

  • Si vous utilisez la licorne HATS, installer un HAT sur le connecteur GPIO de chacun des serveurs.

  • Si vous le souhaitez, vous pouvez monter les huit Raspberry Pi 3 s sur une planche dorsale. Sinon, il y a des cas pour plusieurs Raspberry Pi disponibles à l'achat, ou vous pouvez simplement les laisser disposés - ils travailleront en groupe, même si elles ne sont pas attachés à quoi que ce soit.

    système OctaPi

Utilisation de la OctaPi terminée pour la première fois

  • Assurez-vous que le routeur WiFi dédié, clients et serveurs sont tous OctaPi sous tension. Il est préférable d'alimenter le routeur WiFi à l'avance afin que vous pouvez être sûr qu'il est complètement démarré avant la tentative de client et les serveurs OctaPi pour ouvrir une session en elle.

  • Sur la machine cliente, ouvrez un terminal.

    Ouvrez un terminal

  • Essayez d' exécuter le compute.py softwar exemple à nouveau en tapant la commande suivante:

     sudo python3 compute.py 


Si le OctaPi fonctionne correctement, à la fin de la course tous les serveurs utilisés pour exécuter la tâche sera indiqué dans le tableau. Le résultat devrait ressembler à ceci.
  •                              Node |  CPUs |    Jobs |    Sec/Job | Node Time Sec   ------------------------------------------------------------------------------    192.168.1.49 (raspberrypi)     |     4 |       4 |     16.040 |        64.160    192.168.1.202 (raspberrypi)    |     4 |       2 |     12.031 |        24.062    192.168.1.191 (raspberrypi)    |     4 |       2 |     13.029 |        26.058    192.168.1.223 (raspberrypi)    |     4 |       0 |      0.000 |         0.000    192.168.1.116 (raspberrypi)    |     4 |       2 |     10.025 |        20.050    192.168.1.27 (raspberrypi)     |     4 |       2 |     15.535 |        31.070    192.168.1.167 (raspberrypi)    |     4 |       4 |     14.537 |        58.148    192.168.1.50 (raspberrypi)     |     4 |       0 |      0.000 |         0.000    Total job time: 223.548 sec, wall time: 20.245 sec, speedup: 11.04

Essayez d' exécuter le compute_pi_efficient.py exemple:


sudo python3 compute_pi_efficient.py 1000 100000


Si le OctaPi fonctionne correctement, vous pouvez commencer à faire des calculs utiles,

comme cette estimation de la valeur de pi en utilisant la méthode du jeu de fléchettes.

calcul de Pi sur OctaPi

Contrôle du cluster

Maintenant que vous avez vérifié votre OctaPi est mis en place et fonctionne correctement, vous pouvez utiliser le cluster_action.shscript pour le contrôler.

Le cluster_action.sh script est exécuté sur le client et utilise SSH pour administrer les serveurs (c'est la raison pour laquelle nous avons utilisé ssh-keygen pour authentifier le client avec les serveurs). Elle repose sur les adresses IP correctes des serveurs étant répertoriés dans le ip_list fichier. Il est conseillé de supprimer le ip_list fichier lors du démarrage du cluster pour la première fois afin que la liste se régénére.

  • A partir d' un terminal, tapez la commande suivante pour supprimer le ip_listfichier:

    rm ip_list 
Mise en place du cluster_action script
  • Sur la machine cliente, ouvrez un terminal.

  • Assurez - vous que vous êtes dans le /home/pi répertoire en tapant cd /home/pi

  • Définissez les autorisations pour le script d'action de cluster, de sorte que vous pouvez l'exécuter en tapant la commande suivante:

    chmod u+x ./cluster_action.sh 
Assurez-vous que le client peut reconnaître chaque clé SSH serveur

La première fois que vous utilisez le cluster, vous devrez peut - être connecter à chaque serveur via SSH avec le client afin qu'il reconnaisse la clé SSH de chaque serveur correctement (assurez - vous de remplacer <ip address of server>l'adresse IP du serveur réel).

ssh <ip address of server> 

Le cas échéant, faire cela ne sera nécessaire qu'une fois.

Options pour le cluster_action script

Les paramètres suivants sont acceptés par le script:

reboot - redémarre tous les serveurs (le client et le routeur sont ignorés)

Exemple:

./cluster_action.sh reboot 

shutdown- chaque serveur arrête et met dans un état sûr. Si un serveur est pas fermé correctement, il peut causer la carte micro SD pour être corrompu et conduire au processeur défaillant pour démarrer la prochaine utilisation.

Exemple:

./cluster_action.sh shutdown 

date- distribue la date et l'heure du client (à la minute près) à chaque serveur. Le Raspberry Pi 3 ne possède pas d'horloge en temps réel, donc l'heure devra être mis sur le client d'abord.

Exemple:

sudo date -s "02 Apr 2017 15:58"
./cluster_action.sh date

unicorn- appelle le start_unicorn.sh script sur chaque serveur et il transmet le nom et l'emplacement d'un script Python Pimoroni en tant que paramètre. Pour que cela fonctionne , vous devez avoir start_unicorn.sh dans /home/pi chaque serveur comme décrit précédemment.

Exemple:

./cluster_action.sh unicorn /home/pi/Pimoroni/unicornhat/examples/random_sparkles.py


Dépannage
Lorsque je tente et exécuter le script cluster_action.sh, je reçois « permission refusée ».

Ce fichier est un script bash et nécessite l'autorisation d'exécution. L'erreur se produit probablement parce que l'autorisation d'exécution n'est pas réglé pour une raison quelconque.

  • Assurez - vous que vous êtes dans le /home/pirépertoire en tapant cd /home/pi dans une fenêtre de terminal.

  • Tapez la commande suivante pour rendre le script exécutable (il n'y a pas besoin d'utiliser sudo).

     chmod u+x cluster_action.sh 
Le fichier ip_list ne dispose que les adresses IP du routeur IP et client répertoriés - où sont les serveurs?

Si vous voyez contenu inattendu, ou le contenu manquant, cela est très probablement parce que la machine client n'est pas connecté au réseau OctaPi quand cluster_action.shest exécuté. Cela peut se produire si vous n'avez pas supprimé d' autres réseaux WiFi à partir /etc/wpa_supplicant/wpa_supplicant.conf. Le client se connectera au meilleur réseau WiFi disponible, ce qui ne peut pas être le réseau OctaPi.

  • Pour modifier le wpa_supplicant.conf fichier, utilisez nano comme suit:

      sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 
  • devrait ressembler le contenu du fichier ceci:

     ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1   country=FR    network={       ssid="OctaPi"       psk="itsasecret"       key_mgmt=WPA-PSK   }

Retirez tout « réseau {} » sections pour les autres réseaux, appuyez sur Ctrl+ o pour enregistrer vos modifications puis Ctrl+ x pour quitter nano. Redémarrez le client pour que les modifications prennent effet.

Je reçois des messages disant qu'il n'y a « pas de route vers l'hôte » lors de l'utilisation du script cluster_action.sh.

Cela peut se produire si la connexion réseau est peu fiable et provoque le routeur d'abandonner une adresse IP. Il peut également se produire si vous avez plusieurs serveurs connectés à votre routeur qu'il peut gérer. La fiabilité du réseau est affectée par la proximité du routeur est au reste du système et par combien d'autres réseaux Wi-Fi sont présents. Essayez de déplacer le routeur OctaPi à l'intérieur d'un ou deux mètres du système OctaPi et / ou se éloigner des autres routeurs WiFi.

Je reçois des messages HOST « vérification de la clé a échoué » quand je lance le script cluster_action.sh.

Cela peut se produire la première fois que vous exécutez le script parce que le client n'a pas vu les adresses IP du serveur avant lors de l'exécution d'une connexion SSH. Pour résoudre ce problème, procédez comme suit.

  • Ouvrez un terminal et tapez cette commande pour lister les adresses IP attribuées à vos serveurs:

      cat ip_list 
  • Tapez la commande suivante pour trouver l'adresse IP du client.
      hostname -I 
  • Ignorer « 192.168.1.1 », comme cela est le routeur « OctaPi », et ignorer l'adresse IP du client. De la machine client, se connecter via SSH à l'un des serveurs par un à l' aide des autres adresses IP répertoriées. Lorsque vous êtes invité, dites « oui » pour continuer, puis tapez à exitnouveau.

    ssh <ip_address>
      (say 'yes' to continue)   exit

<ip_address> est l' une des adresses de serveur dans le ip_list fichier. Vous aurez besoin de taper « oui » dans son intégralité. Répétez cette opération pour tous les serveurs.

L'application que je suis en cours d'exécution se bloque après un certain temps.

Si quelque chose va mal sur un serveur, que ce soit avec le système d'exploitation ou avec le code Python démarrés, peut perturber le fonctionnement de l'ensemble du cluster. Cela peut se produire si les travaux en cours d' exécution sont assez grandes ou s'il y a beaucoup de trafic réseau. Essayez de redémarrer le cluster de serveurs avec ./cluster_action.sh reboot avant de définir les petits travaux dans votre code client.

L'application que je suis en cours d'exécution dit « Ignorer réponse invalide pour le travail ... »

Cela peut se produire si le client et un ou plusieurs serveurs ont obtenu désynchronisés, ce qui peut être causée par le code client s'écraser ou être interrompu en appuyant sur Ctrl+ c. Il peut également se produire si l' un des serveurs se bloque pendant le fonctionnement.

Pour résoudre ce problème, essayez de déterminer quel bit de code a l'erreur et corriger la première. Ensuite , redémarrez le cluster avec le cluster_action.shscript.

./cluster_action reboot 

Les serveurs doivent tous redémarrer dans le même état et être prêt à accepter des emplois du client. En fonction de l'état du client suite à un accident, il peut aussi avoir besoin de redémarrer.

Quand je lance mon application sur le client, je reçois un message indiquant un port réseau est déjà utilisé.

Cela peut se produire suite à une erreur dans le code Python client ou une sortie du logiciel dispy sans fermer le cluster. Elle est causée par un procédé dispy restant actif sur le client (qui capture le port TCP utilisé pour les communications avec les serveurs). Pour corriger ce problème, redémarrez le client afin que dispy peut être proprement redémarré.

Comment puis-je déboguer le code Python démarrés sur les serveurs?

Le code que vous utilisez est défini sur le client et distribué aux serveurs au moment de l' exécution. Cependant, une fois que le code se trouve sur les serveurs, les erreurs ne sont pas signalés au client. S'il y a un bogue dans le code une fois qu'il est en cours d' exécution sur le serveur, ce qui peut provoquer l'échec de l' ensemble du cluster. Pour debug, développer tout le code sur le client pour un fonctionnement autonome et de le tester à fond avant d' ajouter le dispycode pour le distribuer aux serveurs.

Comment puis-je installer de nouveaux modules Python sur les serveurs OctaPi?

Si vous avez installé de nouveaux modules Python sur le client qui sont nécessaires pour le code distribué aux serveurs, assurez - vous que vous avez installé le module sur chaque serveur avant d'exécuter votre code. La importdéclaration doit être à l' intérieur de la fonction que vous distribuerez.

Est-ce que le OctaPi travailler avec un routeur WiFi qui a été fourni par mon fournisseur de services à large bande?

Vous devez utiliser un routeur dédié pour éviter tout conflit avec d'autres appareils. Recibler routeur d'un fournisseur de services à large bande peut fonctionner, mais le routeur peut être réglé sur des conditions non par défaut ou ont verrouillé caractéristiques pour répondre aux exigences du fournisseur. Cela pourrait affecter son utilisation avec le OctaPi. Si vous pensez que vous pouvez rencontrer des problèmes de mise en réseau avec un routeur repurposed, essayez de passer à un nouveau routeur Wi-Fi. Nous avons utilisé une variété de routeurs, à partir d'un prix d'environ 25€, sans problème. Le routeur doit être capable de gérer au moins neuf connexions simultanées si vous avez un seul module OctaPi. Le routeur spécifique utilisé pour tester cette ressource était un TP-LINK TL-WR841N.

Je reçois les problèmes de réseau avec des groupes très importants (plus d'un module de OctaPi).

Votre routeur WiFi doit être capable de gérer un grand nombre de connexions simultanées. Dans le cas contraire, vous pouvez commencer à faire l'expérience de connexions interrompues aux serveurs ( « pas de route vers l'hôte »). Dans les cas extrêmes, le routeur peut même geler ou redémarrer de façon inattendue. routeurs modernes pour un usage domestique, même les routeurs de jeu haute performance, ne sont pas conçus pour un grand nombre de connexions simultanées. Cependant, nous avons observé des performances de réseau fiable pour deux modules OctaPi (17 connexions simultanées) avec un routeur dans une fourchette de prix 25€, et jusqu'à quatre à cinq modules OctaPi (max. 41 connexions simultanées) avec un routeur de jeu. Au-delà, les réseaux Wi-Fi devient peu pratique.






Mentions Légales - raspberry-pi.ovh 2022 © Copyright- Raspberry Pi est une marque déposée de la Raspberry Foundation - Les contenus rédigés par raspberry-pi.ovh sont distribués sous license open source.
Retourner au contenu