Cluster pour un serveur d'application  [RESOLU]

Vous avez réalisé ou vous voulez réaliser un truc impensable avec votre Raspberry Pi ? Cet endroit est pour vous...

Modérateur : Francois

Tobin
Messages : 26
Enregistré le : mer. 23 nov. 2016 09:11

Cluster pour un serveur d'application

Message par Tobin » mer. 23 nov. 2016 11:47

Bonjour. je suis récemment tombé sur cet article : http://www.framboise314.fr/8-raspberry- ... rveur-web/... et il m'a beaucoup intéressé. Pour mon travail de fin de cycle, je voudrais construire un cluster similaire, seulement je voudrais l'orienter vers un serveur d'application (comprenez donc un serveur sur lequel seront logées l'application de la compta, celle des ressources humaines et d'autres qui sont utilisées dans ma Fac et qui sont exclusivement conçues en PHP). Alors la question que je me pose est de savoir si une structure (cluster) telle que décrite dans l'article ci-haut cité conviendrait pour un tel usage. Et est-ce que la configuration décrite par Steve Breuning sur son site www.raspberrywebserver.com suffirait pour déployer ces applications ? Si non quels éléments faudrait-il ajouter ? Merci d'avance pour vos commentaires.

Ghislain
Raspinaute
Messages : 315
Enregistré le : jeu. 12 nov. 2015 17:39
Localisation : Bourges (18)

Re: Cluster pour un serveur d'application

Message par Ghislain » jeu. 24 nov. 2016 17:27

Je ne pourrais pas t'aider mais si quelqu'un a plus d'info sur les clusters et comment ca se gere je vais suivre le sujet ;)

Je voudrais essayer moi de faire un cluster pour plex et le transcodage ;)

destroyedlolo
Raspinaute
Messages : 1586
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Cluster pour un serveur d'application

Message par destroyedlolo » jeu. 24 nov. 2016 20:26

Salut,
je me permet de remettre le lien car le forum ajoute les ... a l'URL et donc ca ne marche pas : http://www.framboise314.fr/8-raspberry- ... rveur-web/
Tobin a écrit :comprenez donc un serveur sur lequel seront logées l'application de la compta, celle des ressources humaines et d'autres qui sont utilisées dans ma Fac et qui sont exclusivement conçues en PHP).
En es-tu sur ? Il n'y a pas aussi de base de données ?
Tobin a écrit :Alors la question que je me pose est de savoir si une structure (cluster) telle que décrite dans l'article ci-haut cité conviendrait pour un tel usage.
Bien sur, et c'est un bon exercice pour comprendre le clustering. Mais hormis des questions de dispo et de redondance, c'est largement sur-dimensionné pour un serveur départemental (pour peut etre les applies soient bien faites bien sûr).

Par contre, comme il est dit en commentaire, il aurait été plus efficace d'utiliser aussi des PI pour les load-blancer et dans ce cas, où je met tout le monde dans le meme réseau (pas bien niveau sécurité), soit je met les PI appli sur un vlan histoire de ne pas devoir utiliser 2 ethernet et surtout 2 équipements réseau.
Tobin a écrit :Si non quels éléments faudrait-il ajouter ?
Ben si comme je le pense il y des bdd derrière, il faut rajouter une 3e couches avec des BDD en cluster.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Tobin
Messages : 26
Enregistré le : mer. 23 nov. 2016 09:11

Re: Cluster pour un serveur d'application  [RESOLU]

Message par Tobin » ven. 25 nov. 2016 22:06

Salut, merci pour vos réponses.
destroyedlolo a écrit :En es-tu sur ? Il n'y a pas aussi de base de données ?
Effectivement, j'ai oublié de le préciser, les applications utilisent toutes des bases de données MySQL.
destroyedlolo a écrit :Ben si comme je le pense il y des bdd derrière, il faut rajouter une 3e couches avec des BDD en cluster.
Ça veut dire quoi concrètement ? qu'il faudrait rajouter au cluster autant de Pi qu'il y'a de bases de données ? ou est-ce que celles-ci seront simplement intégrées au serveur Apache déjà déployé sur le cluster?

Puis une autre question : lorsqu'Apache est ainsi déployé sur le cluster, forme-t-il une entité logique (rendant donc les Pi transparents) de sorte qu'on puisse y loger des applications comme si c'était un seul serveur? ou est-ce qu'il faudra plutôt adapter les applications à de la programmation parallèle pour que ça marche ?
destroyedlolo a écrit : Par contre, comme il est dit en commentaire, il aurait été plus efficace d'utiliser aussi des PI pour les load-blancer et dans ce cas, où je met tout le monde dans le meme réseau (pas bien niveau sécurité), soit je met les PI appli sur un vlan histoire de ne pas devoir utiliser 2 ethernet et surtout 2 équipements réseau.
J'y ai pensé et l'idée d'appliquer des vlan est très intéressante. Cependant dans la configuration de Steve Breuning, j'ai vu qu'il a placé tous les Pi dans le même réseau, c'est qui ( apparemment) permet au load-balancer de répartir facilement la charge entre les Pi. Alors dans le cas où deux vlan serait présents (pour séparer par exemple les profs des étudiants), une idée de comment le load-balancer va les gérer?
destroyedlolo a écrit :Bien sur, et c'est un bon exercice pour comprendre le clustering. Mais hormis des questions de dispo et de redondance, c'est largement sur-dimensionné pour un serveur départemental (pour peut etre les applies soient bien faites bien sûr).
Alors il n'y a pas que des applications départementales, il est prévu que le cluster accueil un serveur NAS, un serveur de SMS, le site même de l'institution sera hébergé dessus. Faudra donc que le cluster soit en mesure de supporter plus de 500 connexions simultanées !

destroyedlolo
Raspinaute
Messages : 1586
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Cluster pour un serveur d'application

Message par destroyedlolo » ven. 25 nov. 2016 23:47

Tobin a écrit :
destroyedlolo a écrit :Ben si comme je le pense il y des bdd derrière, il faut rajouter une 3e couches avec des BDD en cluster.
Ça veut dire quoi concrètement ? qu'il faudrait rajouter au cluster autant de Pi qu'il y'a de bases de données ? ou est-ce que celles-ci seront simplement intégrées au serveur Apache déjà déployé sur le cluster?
Pas forcément, c'est une 3e couche logiciel (application 3 tiers) : si les serveurs le permettent questions perfs, rien n’empêche de tout mettre sur la même machine (hormis si on veut aussi prendre en compte les problématiques de sécurité ... voir les vlan plus loins).
Tobin a écrit :Puis une autre question : lorsqu'Apache est ainsi déployé sur le cluster, forme-t-il une entité logique (rendant donc les Pi transparents) de sorte qu'on puisse y loger des applications comme si c'était un seul serveur? ou est-ce qu'il faudra plutôt adapter les applications à de la programmation parallèle pour que ça marche ?
Ben réponse de normand (que je ne suis pas) ca dépendra de l'application :
  • S'il s'agit de "simples" applies web où chaque page se suffit à elle-même, pas besoin de changer quoi que ce soit : S'il y a besoin de conserver un contexte,c'est pris en charge par les proxy/loadbalancer en frontal
  • si les traitements sont plus complexes (typiquement, des BPM), il faut adapter. Les serveurs d'applications tel que webLogic et consort font ça en natif ... mais a mon avis, les PI sont largement sous dimensionner pour ce genre d'usage (Java :evil: ). Mais on peut très bien le faire en passant par des bus de données comme par exemple du MQTT et en découpant le traitement en de petites unités de traitement fait avec des langages plus léger (c'est typiquement ce que j'ai fait pour ma domotique). Mais c'est le genre d'archi qu'il faut penser avant de développer les applies mais qui apporte d'énormes avantages en therme de robustess et de scalabilité
En me relisant, je me rend compte que je ne suis pas forcement super clair : c'est mon taf, et a force de baigner dedans on fini par prendre des racourcies. Si c'est imbitable, je te donnerais des exemples précis des 2 cas de figures.
Tobin a écrit :
destroyedlolo a écrit : Par contre, comme il est dit en commentaire, il aurait été plus efficace d'utiliser aussi des PI pour les load-blancer et dans ce cas, où je met tout le monde dans le meme réseau (pas bien niveau sécurité), soit je met les PI appli sur un vlan histoire de ne pas devoir utiliser 2 ethernet et surtout 2 équipements réseau.
J'y ai pensé et l'idée d'appliquer des vlan est très intéressante. Cependant dans la configuration de Steve Breuning, j'ai vu qu'il a placé tous les Pi dans le même réseau, c'est qui ( apparemment) permet au load-balancer de répartir facilement la charge entre les Pi. Alors dans le cas où deux vlan serait présents (pour séparer par exemple les profs des étudiants), une idée de comment le load-balancer va les gérer?
Non, c'est pas du tout ce que je voulais dire : dans ce genre d'architecture, pour assurer la sécurité, le réseau externe (tes clients donc profs et étudiants confondus) ne sont pas sur le même réseau que tes applies. Ce qui fait qu'un poste client ne peut pas accéder directement aux serveurs d'applies sans passer par ton frontal.
Sauf que les PI ont par défaut qu"une seule prise réseau : la solution est d'en "simuler" une seconde par un VLan qui ne contiendra que cette seconde prise et tes serveurs d'applies.
Tobin a écrit :Alors il n'y a pas que des applications départementales, il est prévu que le cluster accueil un serveur NAS, un serveur de SMS, le site même de l'institution sera hébergé dessus. Faudra donc que le cluster soit en mesure de supporter plus de 500 connexions simultanées !
Mouai, les raspberry ne sont pas forcement adapté alors : leurs IO sont pathétiques car passant par un unique hub USB interne. Tous l'USB (donc d'éventuel disques) et l'ethernet passent par ce goulo d'étrangement. Un SBC a base d'Allwinner seraient sans BEAUCOUP plus performant (OLinuXino, BananaPI, ...).

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Tobin
Messages : 26
Enregistré le : mer. 23 nov. 2016 09:11

Re: Cluster pour un serveur d'application

Message par Tobin » mar. 29 nov. 2016 10:13

[quote="destroyedlolo"] En me relisant, je me rend compte que je ne suis pas forcement super clair : c'est mon taf, et a force de baigner dedans on fini par prendre des racourcies. Si c'est imbitable, je te donnerais des exemples précis des 2 cas de figures. [/quote]

Dans mon cas les applications sont plutôt simples, donc comme vous le dites, une seule machine conviendrait bien. Mais je crois que des exemples ne feraient pas de mal.

[quote="destroyedlolo"] Non, c'est pas du tout ce que je voulais dire : dans ce genre d'architecture, pour assurer la sécurité, le réseau externe (tes clients donc profs et étudiants confondus) ne sont pas sur le même réseau que tes applies. Ce qui fait qu'un poste client ne peut pas accéder directement aux serveurs d'applies sans passer par ton frontal.
Sauf que les PI ont par défaut qu"une seule prise réseau : la solution est d'en "simuler" une seconde par un VLan qui ne contiendra que cette seconde prise et tes serveurs d'applies. [/quote]

Dans ce cas comment je pourrais procéder pour filtrer le trafic, en autorisant par exemple l'accès aux applications uniquement aux profs? Ne serait-il pas plus simple et pratique de tout (applis et clients) laisser dans le même réseau et de laisser reposer la sécurité sur les accès par authentification?

[quote="destroyedlolo"] Mouai, les raspberry ne sont pas forcement adapté alors : leurs IO sont pathétiques car passant par un unique hub USB interne. Tous l'USB (donc d'éventuel disques) et l'ethernet passent par ce goulo d'étrangement. Un SBC a base d'Allwinner seraient sans BEAUCOUP plus performant (OLinuXino, BananaPI, ...). [/quote]

En effet, un tableau comparatif sur http://raspbian-france.fr/banana-pi/ nomme la BananaPI gagnante pour des besoins en puissance de calcul et gros débits internet. Mais pour revenir à mon cahier de charge, me recommandez-vous donc de virer les framboises pour construire un cluster uniquement à base de bananes ou plutôt de coupler les deux?

En même temps je me demandais s'il était possible de coupler un véritable serveur NAS comme ceux présentés ici http://www.ldlc.com/informatique/reseau ... nas/c4314/, avec un Raspberry. Et est-ce que cela ne résoudrait pas le problème du goulet d'étranglement? Ou alors est-ce que vous connaissez une autre solution qui serait adaptée au cluster et permettrai le partage de fichiers à plus de 100 personnes?
Modifié en dernier par Tobin le sam. 3 déc. 2016 10:21, modifié 1 fois.

destroyedlolo
Raspinaute
Messages : 1586
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Cluster pour un serveur d'application

Message par destroyedlolo » mar. 29 nov. 2016 12:55

Salut,
Tobin a écrit :Dans mon cas les applications sont plutôt simples, donc comme vous le dites, une seule machine conviendrait bien. Mais je crois que des exemples ne feraient pas de mal.
Ben en gros, sur ce genre d'archi, tu as 2 types d'applications :
  • Les simples applies web synchrone : typiquement, t’appelle une URL a qui tu peux fournir des paramètres et qui te retourne d'autres informations.
    Ca peut être des simples pages web comme sur un site classique, mais ca peut etre aussi des web service. Ce qui caractérise ce genre d'applies, c'est que le traitement n'a lieu qu'entre le moment où le serveur reçoit ta requête et où il te renvoie la réponse. Ce traitement doit être très rapide (quelques secondes sinon, tu te prend du time-out).
  • les applies plus complexes, asynchrones (typiquement, des BPM). Elles se déclenchent sur évènements (arrivée de fichier, tiggers, webservice, timer, ...) et enchainent une ou plusieurs taches qui se transmettent des informations et qui peuvent se trouver sur différentes machines ou unité d'exécution. Dans ce cas, tu n'es pas liée à une session quelconque et les traitements n'ont pas de limite de durée. Typiquement, certains échanges B2B que je gérais dans ma vie précédente pouvait attendre plusieurs jours la réponse d'un client ou fournisseur. Certains traitements faisaient des calculs de plusieurs heures.
    A noter aussi que certains site web basé sur des Application serveur comme JBoss, webLogic, etc ... utilisent aussi en interne ce genre d'archi même si ca ne ce voit pas de l’extérieur.
Bref, pour en revenir a ton projet :
  • dans le premier cas, tu n'as pas besoin d'adapter ton code vu qu'une fois qu'un traitement est lancée, il reste dans la même entités.
  • dans le second cas, un contexte doit être passée entre chaque tâche unitaire. Dans le cas le plus simple, c'est fait en mémoire, mais dans les archies distribuées comme dans ton projet, soit ca passe par bus de message (voir par exemple un outil nommé UniversalMessaging), soit par des caches (Terracotta).
    Il faut bien entendu que le code en tienne compte, mais les applications servers comme webLogic ou webMethods font le travail pour toi
Tobin a écrit :Dans ce cas comment je pourrais procéder pour filtrer le trafic, en autorisant par exemple l'accès aux applications uniquement aux profs? Ne serait-il pas plus simple et pratique de tout (applis et clients) laisser dans le même réseau et de laisser reposer la sécurité sur les accès par authentification?
Oui, c'est clair : commence par faire simple et tu pourras séparer les réseaux par la suite.
Tobin a écrit :En effet, un tableau comparatif sur http://raspbian-france.fr/banana-pi/ nomme la BananaPI gagnante pour des besoins en puissance de calcul et gros débits internet.
Leur comparaison est un peu datée car les accélérations graphiques sont supportées maintenant sur le bPI.
Tobin a écrit :Mais pour revenir à mon cahier de charge, me recommandez-vous donc de virer les framboises pour construire un cluster uniquement à base de bananes ou plutôt de coupler les deux?
Niveau perfs pures, c'est sur que le BananaPI arrache (je n'utilise que ca a la maison et j'en suis très satisfait). Mais le bleme est que c'est vraiment à la mode "débrouille toi tout seul" : le support est totalement inexistant, donc franchement pas adapté aux débutants alors qu'ils trouveront toute l'aide nécessaire sur une framboise.
C'est peut etre mieux avec les concurrents (BeagleBone, CubieBoard, ...) mais je ne suis pas trop leur communautés :(
Tobin a écrit :En même temps je me demandais s'il était possible de coupler un véritable serveur NAS comme ceux présentés ici http://www.ldlc.com/informatique/reseau ... nas/c4314/, avec un Raspberry. Et est-ce que cela ne résoudrait pas le problème du goulet d'étranglement? Ou alors est-ce que vous connaissez une autre solution qui serait adaptée au cluster et permettrai le partage de fichiers à plus de 100 personnes?
Ben déjà, un *PI quelconque ne peut pas être comparé avec un véritable NAS car il n'y a ni RAID, ni tests de parité sur sa mémoire (même si tout le monde le fait, moi je premier :lol: )
De plus, il est difficile de te dire si ca convient ou pas car ca dépend pas mal du type de document (texte, video, musiques, ...) et de ce qu'en font les gens.

Pour mes projets perso je commence toujours par faire simple et ensuite je rajoute des services s'ils restent des ressources.
Dans un projet pro, quand les requierements sont un peu vague, je commence par faire une maquette (un PoC) histoire de voire si ca tient le coup avec des tests de charges et de robustesses.

Sinon, le risque est de voir trop grand et de se faire déborder par les utilisateurs :)
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Tobin
Messages : 26
Enregistré le : mer. 23 nov. 2016 09:11

Re: Cluster pour un serveur d'application

Message par Tobin » jeu. 1 déc. 2016 14:03

Salut,
[quote="destroyedlolo"]
[quote="Tobin"]Mais pour revenir à mon cahier de charge, me recommandez-vous donc de virer les framboises pour construire un cluster uniquement à base de bananes ou plutôt de coupler les deux?[/quote]

Niveau perfs pures, c'est sur que le BananaPI arrache (je n'utilise que ca a la maison et j'en suis très satisfait). Mais le bleme est que c'est vraiment à la mode "débrouille toi tout seul" : le support est totalement inexistant, donc franchement pas adapté aux débutants alors qu'ils trouveront toute l'aide nécessaire sur une framboise.
C'est peut etre mieux avec les concurrents (BeagleBone, CubieBoard, ...) mais je ne suis pas trop leur communautés :([/quote]

Ah bein dans ce cas, je vais devoir me limiter au Raspi rien que pour l'avantage qu'il offre en terme de secours dans les différentes communautés. Sinon le BananaPI me paraît vraiment intéressant, dès que j'en ai les moyens je compte bien m'en procurer un pour tenter des trucs dessus.

[quote="destroyedlolo"]
[quote="Tobin"]En même temps je me demandais s'il était possible de coupler un véritable serveur NAS comme ceux présentés ici http://www.ldlc.com/informatique/reseau ... nas/c4314/, avec un Raspberry. Et est-ce que cela ne résoudrait pas le problème du goulet d'étranglement? Ou alors est-ce que vous connaissez une autre solution qui serait adaptée au cluster et permettrai le partage de fichiers à plus de 100 personnes?[/quote]

Ben déjà, un *PI quelconque ne peut pas être comparé avec un véritable NAS car il n'y a ni RAID, ni tests de parité sur sa mémoire (même si tout le monde le fait, moi je premier :lol: )
De plus, il est difficile de te dire si ca convient ou pas car ca dépend pas mal du type de document (texte, video, musiques, ...) et de ce qu'en font les gens.

Pour mes projets perso je commence toujours par faire simple et ensuite je rajoute des services s'ils restent des ressources.
Dans un projet pro, quand les requierements sont un peu vague, je commence par faire une maquette (un PoC) histoire de voire si ca tient le coup avec des tests de charges et de robustesses.

Sinon, le risque est de voir trop grand et de se faire déborder par les utilisateurs :)[/quote]

Merci pour l'astuce (PoC) je vais travailler dessus le plus tôt possible. Mais je sens que ça va être un véritable défi car déjà il faudra tenir compte de l'évolutivité du réseau. Pour ce qui est du type des documents en revanche, dans un premier temps ce sera du texte uniquement pour simplifier les choses. Pour les vidéos et musiques, j'ai pensé monter un média center séparé du Cluster.

Un dernier souci cependant (pour l'instant du moins) c'est que je n'ai aucune idées des scripts dont il est question ici http://raspberrywebserver.com/raspberry ... uster.html
[quote]Finally, I copied some scripts onto each SD card which allow each Pi to synchronize its contents with the development Pi. In a larger cluster it would be worth creating an SD card image with all of these modifications made in advance.[/quote]

Une idée des scripts qu'il faut pour synchroniser les pi? ou des liens vers une documentation sur le sujet?
A+
Modifié en dernier par Tobin le ven. 2 déc. 2016 21:00, modifié 1 fois.

destroyedlolo
Raspinaute
Messages : 1586
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Cluster pour un serveur d'application

Message par destroyedlolo » jeu. 1 déc. 2016 15:04

Salut,
Tobin a écrit :Un dernier souci cependant (pour l'instant du moins) c'est que je n'ai aucune idées des scripts dont il est question ici http://raspberrywebserver.com/raspberry ... uster.html
Finally, I copied some scripts onto each SD card which allow each Pi to synchronize its contents with the development Pi. In a larger cluster it would be worth creating an SD card image with all of these modifications made in advance.
Une idée des scripts qu'il faut pour synchroniser les pi? ou des liens vers une documentation sur le sujet?
Ben dans ce genre de truc, il faut s'assurer que tous les noeuds sont alignés niveau soft.

Généralement, pour ce genre de chose :
  1. je crée une image systeme identique chargée sur chacun des noeuds (la fameuse SD card image dont il parle ;) )
  2. les infos système spécifiques à chaque noeuds (IP, hostname, ...) sont chargés si possible depuis le DHCP
  3. les applies et data sont chargés et mise à jours par rsync.
  4. les infos spécifques aux applis sont établis soit par les scripts de déploiement, soit en appelant des webservices centraux, paramétré par le hostname récupéré du DHCP
Le but est que l'installation d'un nouveau noeud se résume a lui mettre la SD systeme et à le booter. Tous le reste est chargés automatiquement au boot initiale donc il n'y a pas besoin d'intervenir.

Si les applies et les frontaux sont correctement fait, il devient alors possible d'ajouter / supprimer les noeuds sans aucune intervention humaine hormis les mettre sous/hors tension.

(C'est un peu plus touchy lorsqu'il s'agit de faire des mise à jour)

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Tobin
Messages : 26
Enregistré le : mer. 23 nov. 2016 09:11

Re: Cluster pour un serveur d'application

Message par Tobin » ven. 2 déc. 2016 20:57

destroyedlolo a écrit : les infos système spécifiques à chaque noeuds (IP, hostname, ...) sont chargés si possible depuis le DHCP
C'est le même principe pour des noeuds configurés en statique ?

Autre question: vous avez deux applis web, l'une conçue en PHP et l'autre en java, comment feriez-vous pour les héberger sur le même serveur ? Je la pose parce que j'ai lu quelque part qu'il était impossible (du moins très compliqué) d'héberger une appli java sur un serveur apache sans Tomcat (à cause des "servlets").

Répondre

Retourner vers « Utilisateurs avancés »