Introduction
Je travaille dans une entreprise où nous courons le traitement batch de nombreux millions d'enregistrements de données chaque jour et j'ai pensé récemment à propos de toutes les machines qui sont assis autour de chaque et tous les jours à ne rien faire pendant plusieurs heures. Ce ne serait pas bien si on pouvait utiliser ces machines pour renforcer la puissance de traitement de nos systèmes? Dans cette série d'articles que je vais regarder les avantages potentiels d'employer un bureau de grille en utilisant les environnements virtualisés.
Dans la partie 2 nous avons regardé les emplois d'un serveur sera exécuté, et comment les emplois doivent être configurés afin d'atteindre le plus grand nombre de traitements tout en veillant à ce que chaque tâche est traitée sans échec.
Configuration de votre travail - ou d'un serveur LIMP
La prochaine étape dans le processus est de mettre en place vos travailleurs virtuels. Pour cela, je vais utiliser une installation de CentOS en utilisant VirtualBox. Je vais installer mySQL et PHP sur le serveur, aussi connu comme une boiterie (nux Li, m ySQL, P HP) Servera (j'ai pu faire jusqu'à ce nom).
- Installer VirtualBox sur votre machine Windows (suivre le lien)
- Télécharger et installer CentOS (version actuelle 5.3) dans une machine virtuelle créée
Il est inutile de me passe à ce qu'il ya probablement 1000 's de tutoriels grand là-bas (OK, en voici une: Création et Managing CentOS machine virtuelle sous VirtualBox ). Le point important à noter est que je suppose que j'ai appelé ma machine virtuelle GridMachine.
Quant à mon choix du client de virtualisation et de système d'exploitation va il n'ya aucune raison convaincante pour chaque grande choix. VirtualBox est une chose que j'utilise sur mon ordinateur à domicile et est soutenu par les trois principaux systèmes d'exploitation. J'ai choisi CentOS comme un OS stable, bonne, et je l'utilise sur mon propre serveur Web. Je suis un grand croyant dans les bons outils pour le travail (même si je suis d'appliquer «l'utilisation la plus rapide et plus facile pour vous« la mentalité ici), donc si X système d'exploitation exécute votre code rapidement et plus efficacement utiliser à la place:)
Il est important de s'assurer que votre VM utilise le DHCP, sinon pour chaque nouvelle machine virtuelle aurait besoin d'être configurés séparément, ce qui est quelque chose que nous ne want.By utilisant DHCP nous n'avons pas besoin de configurer les paramètres réseau individuellement pour les machines des travailleurs, DHCP main IP pour vous. Par conséquent, vous pouvez copier votre machine virtuelle sur le bureau sans se soucier de la mise en place de chacun (ce qui améliore l'évolutivité et réduit l'administration travailleur).
Le processus que vous devriez viser à atteindre serait d'obtenir une nouvelle machine physique, installez VirtualBox, puis à peu près le déploiement de l'image virtuelle, sans beaucoup d'autre. Il pourrait être sage d'installer tous vos ouvriers sur un sous-réseau différent de sorte que vous pouvez au moins voir combien de machines sont en marche. Vous aurez également besoin de configurer votre machine sur un bail de longue ou illimitée bail DHCP.
Comment exécuter des tâches sur le travailleur
C'est un domaine intéressant et il ya plusieurs méthodes valables pour le traitement des travaux sur le travailleur. Ici, je vais juste parler des deux plus évidentes:
- Perpétuellement exécution de script: un script, que ce soit un script shell ou un script PHP est exécuté une fois sur le travailleur et s'exécute comme partie d'une boucle infinie. J'ai réduit cette méthode comme un accident du script et potentiellement vos travailleurs cesseront de courir sans une certaine forme d'intervention.
- L'exécution du script Cron base: toutes les X minutes le daemon cron coup d'envoi d'un appel à votre script pour faire avancer les choses. Sans quelques vérifications cela pourrait conduire à de nombreuses copies de votre course script travailleur.
Ma décision était d'aller avec cron qui débutera un script shell toutes minutes. 10 Mon script shell effectue les tâches suivantes:
- Obtenez une liste des processus et grep ce pour 'php'. S'il n'est pas trouvé avant de continuer.
- Appelez votre code de travail, dans mon cas ce serait quelque chose en fonction PHP
- Script travailleur remplit sa course
- Prêt à partir à nouveau sur le prochain appel appropriée
Mon script bash ressemble à quelque chose comme ce qui suit:
#! / Bin / sh
si ps ax | grep-v grep | grep php> / dev / null
puis
echo "l'emploi est en cours de traitement, la sortie"
d'autre
echo "Job ne fonctionne pas, commencer dès maintenant»
php yourJobProcessingScript.php
fi Remarque: le fait écho sont presque complètement inutile, mais peut aider la prochaine personne qui vient le long d'essayer de les modifier.
Cela conclut la mise en place de la machine virtuelle travailleur, rapide, simple et facile à copier à chaque nouveau morceau de matériel qui est reçu. Le «intelligence» du système de grille n'est pas vraiment dans le visualisés OS, son tout à voir avec le code créé pour traiter les tâches, la configuration d'emplois, et à faire en sorte que le travail s'exécute, le cas échéant (c'est à dire lorsque l'hôte est inactif ).
Configuration de Windows pour initialiser les travailleurs
La première tâche est de travailler à la commande nécessaire pour faire fonctionner la machine virtuelle à partir de la ligne de commande Windows. Si vous avez installé VirtualBox dans l'emplacement par défaut et que vous avez appelé votre GridMachine travailleur alors la commande nécessaire pour charger votre travailleur est:
"C: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine
Cependant, pour exécuter le script dans un «décapité» l'état, nous devons utiliser:
"C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe» startvm GridMachine - PRPPH = off
Cela va démarrer la machine virtuelle sans l'interface graphique et lui permettre d'enregistrer l'état de grâce. Le second argument s'éteint RDP afin qu'il n'entre pas en conflit avec Windows RDP, ou vous donner un message à l'écoute sur le port 3389. Le nom de la machine virtuelle est sensible à la casse!
Ensuite, nous aurons besoin de mettre en place des fenêtres pour lancer notre VM travailleur une fois la machine a été ralenti. Pour ce faire (sous Windows XP), vous aurez besoin d'aller sur Démarrer -> Tous les programmes -> Accessoires -> Outils système -> Tâches planifiées comme suit:
Ensuite cliquez sur "Ajouter une tâche planifiée" suivie sur Parcourir pour ajouter un programme personnalisé. Accédez à votre script VBoxManage et cliquez sur OK. Programmez votre tâche pour l'une des options (nous allons changer cela en une minute) et continuer. Après sauter l'écran suivant Windows vous demandera qui vous voulez exécuter cette tâche, je vous suggère soit «Administrator» ou la création d'un nouvel utilisateur privilégié. N'oubliez pas que nous ne voulons pas interférer avec le compte personnel du standard sur la machine à tout moment. Cliquez sur Suivant et cochez la case Afficher les options avancées de cette tâche.
Pour la fin de la zone de texte exécuté ajoutez notre chaîne 'startvm GridMachine »et s'assurer que courir que lorsque vous êtes connecté est laissé décochées. Visitez la tâche prochain horaire et le changement du calendrier déroulant de l'option "en cas d'inactivité", choisissez la quantité de temps vous souhaitez que la machine soit inactif avant de passer à l'onglet suivant.
Enfin décocher l'option qui stipule arrêter la tâche si elle a été exécutée montant X de temps, mais ne cochez l'option pour arrêter la tâche si la machine n'est plus ralenti.
Ça y est alors pour la configuration d'hôte fenêtres!
Résumé
Dans cette partie, nous avons mis en place une machine virtuelle à agir en tant que travailleur, ainsi que la manière dont nous appeler et d'exécuter des scripts de traitement de notre travail (pour moi-même un script PHP). De là, nous regardons comment mettre en place nos copies de Windows pour démarrer la machine virtuelle en mode headless lorsque l'ordinateur est inactif, et enregistrer son état lorsque l'utilisateur reprend l'usage de la machine. Espérons à ce point que vous voyez combien il est simple à mettre en place un tel système et sont impatient de faire quelques expériences vous allez!
Suivant le temps
Dans la partie 4 , nous allons chercher à utiliser les outils pour s'assurer que vous utilisez la dernière version des sources de code et de données afin que les résultats obtenus sont toujours à jour avec les dernières informations d'affaires et de logique.