Serveur sur Cluster Mpich / OpenMPI

Aang23

= 157
16 Mai 2017
176
20
75
20
Voila, je pense que la question est assez atypique, mais voilà :
Je possède un cluster de 24 PC sous linux donnant une puissance de 1,2Tflops.
Je possède déjà un poweredge, mais malheureusement dédié à une autre projet actuellement.
J'ai un petit projet temporaire visant à utiliser minecraft comme simulateur, mais je me retrouve devant le problème de la puissance de calcul, je me demande donc si il serai possible de faire tourner un serveur minecraft ( pas sous forme parallèle, mais bien comme un seul processus ) sur l'ensemble de ce cluster.
 

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
Bonjour !

A moins de réussir à lier toutes les ressources entre-elles, je ne pense pas que cela soit possible. Minecraft n'est de base pas Multi-threadé (au niveau des processeurs), alors le mettre sur un cluster entier, je ne pense vraiment pas que cela soit possible. Les plus gros serveurs minecraft ont des machines de malade mais ils utilisent plusieurs machines bien évidemment, Hypixel par exemple x) ils ont une infra de malade avec plusieurs milliers d'euros à payer chaque mois. Cela étant, je suppose que tu ne souhaite pas faire tourner un seul serveur sur toutes tes machines (autrement dit 1 fichier en .jar pour tes 24 machines), au quel cas tu crée un BungeeCord ou l'équivalent et tu fais la chose suivante :

Machine 1 : Un serveur minecraft + BungeeCord (imaginons ce serveur est le lobby)
Machine 2 : Un autre serveur minecraft (un mini-jeux par exemple)
Machine 3 : encore un autre serveur etc....

Et à la fin, dans le fichier de BungeeCord, tu relies toutes tes machines et tous les serveurs par leur adresse IP (IP de ton réseau local, pas IP public).

Imaginons ta machine 1 a pour IP 172.20.1.20 et ta machine 2 --> 172.20.1.23 par exemple, dans le fichier de BungeeCord tu rentre tous simplement ces adresses et BungeeCord fera le lien automatiquement à partir du moment où les serveurs MC sont lancés.

Autre et dernière option que je propose : tu met plusieurs serveur minecraft sur la même machine, tu leur attribut des ports différents bien entendus, et ensuite tu rentre dans le fichier de config les serveurs minecraft de chaque serveur physique en précisant les ports :

Machine 1 :
Serveur 1 : 172.20.1.20:25565 (Lobby par exemple)
Serveur 2 : 172.20.1.20:25566 (Le BungeeCord par exemple)
Serveur 3 : 172.20.1.20:25567 (Un serveur mini-jeux par exemple)

Machine 2 :
Serveur 1 : 172.20.1.23:25565 (Un serveur mini-jeux par exemple)
Serveur 2 : 172.20.1.23:25566 (Un serveur mini-jeux par exemple)
Serveur 3 : 172.20.1.23:25567 (Un serveur mini-jeux par exemple)

Tu rentre tout ca dans le fichier de config de ton BungeeCord et bam ! Te voilà avec un big réseau de serveur minecraft, tous reliés entre eux. C'est assez simple comme ça, tu as juste à remplir des lignes dans le fichier de config de BungeeCord.

PS : Si tu ne connais pas, BungeeCord est un proxy qui sers simplement à relier plusieurs serveur minecraft ensemble, ce qui permet de séparer les tchat, les inventaires et qui évite de devoir redémarrer tous le réseau lorsque un serveur plante, tune redémarre que celui qui a planté alors que tous les autres serveurs sont encore actifs. Pas mal non ? :p

Si tu as des questions (mais ça m'étonnerai ^^) n'hésites pas ;)

AlexFatta
 

Aang23

= 157
16 Mai 2017
176
20
75
20
Merci, c'est d'ailleurs la configuration que j'utilise sur mon serveur moddé ;).
Je me demandait si il était possible de faire avec mpijava la meme chose que avec les programmes gcc... Soit les multi-threader automatiquement. Justement, je voulais un seul .jar sur les 24.

Après les plus gros serveurs ont parfois des octoprocesseurs, ( ce qui rend ceci possible ) mais vu le prix...

Je voulais le faire sur cluster justement car une tel config n'est possible dans ce projet.
 

Brokeos

Développeur Java/Web indépendant
12 Mars 2012
402
42
135
26
In my bedroom
brokeos.fr
Pas possible (à ma connaissance) d’exécuter un même programme Java sur plusieurs coeurs. Après rien ne t'empêche de trouver un très bon dev (mais je pense que tu dois avoir des contacts pour avoir une puissance de calcul comme celle-ci..) et recoder un "ému" de serveur qui utiliserais la ram pour communiquer, et donc créer 24 jar différents et faire en sorte que leurs taches soient bien reparties ?
Je sais pas si j'arrive à me faire comprendre.. x)

Un jar pour les gouverner tous !
 

Aang23

= 157
16 Mai 2017
176
20
75
20
Au pire je pensait recoder un serveur capable de gèrer ça par défaut...
J'ai 2-3 contact mais sinon c'est surtout la décheterie et des amis.
Je me doutait d'une réponse de ce genre, mais sait - on jamais ?
 

Aang23

= 157
16 Mai 2017
176
20
75
20
Ou juste modifier le jar officiel pour que certaines fonctions normalement exécuté en local soit exécuté sur un PC distant puis renvoyé, exemple :
Le PC central gère les connexions entrantes des joueurs et transmet le reste au autre.
Le 2 eme gère les entités, soit fait les calculs et renvoie les résultats au central.
Un 3 eme s'occupe de la redstone de la même manière.
Et un 4eme fait ce qui est relatif au blocks.
Par exemple, ce qui est normalement assez "simple" à faire en deportant chaque sous - fonction sur un PC autre, nécessitant bien sûr un .jar par PC...
J'essayerai sûrement de le faire, et dans ce cas je le mettrais sur github ( toujours utile :p ).

En oubliant le problème du cryptage ( en considérant le réseau comme sécurisé ), de simple requête réseau suffirait en débit je pense...
 

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
Je pense en tout cas que c'est un excellent projet. J'aimerai que tu nous tienne au courant parce que perso ca m'intéresse pas mal ce que tu propose là :p Mais après faut-il réussir à re-encoder le jeu pour qu'il soit multi-threadé et surtout que le serveur soit géré par plusieurs machines. Mais je pense que dans tous les cas, tu vas devoir passer par un programme de gestion de réseau de serveur (un style de BungeeCord mais qui ferai ce que tu souhaite faire dans ton projet.) Je pense que si on remplace les lignes qui gèrent les serveurs par des lignes spécifiques, ca devrait pouvoir le faire. Du style tu renseigne au lieu de 172.20.1.20 pour le lobby, tu met cette IP pour la redstone par exemple etc.... Mais franchement y'a moyen de creuser ce que tu dit là n'est pas bête du tout.

Maintenant, faut voir pour faire ET un système de BungeeCord (multi-serveur pour rappel ^^) et en même temps un système qui gère les différentes fonctionnalités du jeu (redstone, command block, entités etc...) Si tu fais un combiné des deux, tu obtient un nouveau type de serveur, exclusif aux personnes possédant plusieurs machines et qui possède une nom de Zeus de puissance ! Franchement, j'adore l'idée. Enfin bref, tu n'y es pas encore mais si ça aboutis un jour, GG :p

AlexFatta
 

Aang23

= 157
16 Mai 2017
176
20
75
20
La Chine a un superordinateur de 1BetaFlops
1000Tflops ( c'est immense ). Il se base sur ce principe.

Je vous tiendraient au courant ici. En fait, je pensait plutôt récrire une partie du jar, exemple :
en considérant la fonction redstonerepeteater ( value ); comme le fonctionne gèrant les répéteurs, il suffit de modifier la fonction pour qu'elle ne fasse qu'envoyer la valeur à un autre jar via le réseau et qui lui envoie le résultat, comme ça le serveur normal voit exactement le même résultat, mais sans utiliser les ressources locales.
BugeeCore ne gère que les serveurs complet malheureusement ( c'est un proxy ).

En théorie c'est pas trop dur, juste long de modifier chaque fonction... Mais niveau puissance n'importe qui pourrait battre hypixel sans rien acheter ;).

En ajoutant ça avec un routeur, l'ensemble serait un sous réseau soit comme un serveur normal, donc 100% compatible avec les proxy et autres.
Apres si le projet aboutit et est vraiment utilisé, je me demande ce que ça donnerais avec forge, ou en version pour client ( exécuter les fonctionne de calcul graphique sur des ordinateur extérieurs ), ce que j'ai déjà fait pour du calcul de PI :p.

C'est sur que ce serai sûrement un gros avantages pour ceux qui hébergent leurs propre serveur et veulent le faire à bas coût...

D'ailleurs, si 2 PC gère par exemple la redstone, si l'un crash, seul ce module cracherais et le 2 eme pourrais prendre le relais, mais ce n'est pas le plus pressé.
 
  • J'aime
Reactions: Alex Fatta