De faire fonctionner plusieurs machines virtuelles sur un hôte unique
J'ai besoin d'exécuter un nombre relativement important de machines virtuelles sur un relativement petit nombre de serveurs physiques. Chaque machine virtuelle n'est pas fait pour beaucoup - chacun a besoin pour fonctionner essentiellement d'un réseau de base de service de penser SMTP ou similaires. En outre, la charge sur chaque va être extrêmement léger.
Malheureusement, les chiffres sont quelque chose comme 100 machines virtuelles sur 5 serveurs physiques. Chaque hôte est assez décent - core 2 avec 2 gigas de ram et un disque de 1 to. Cependant, je sais juste de prendre une image vmware de ubuntu et de les jeter sur cette machine l'habitude de m'obtenir n'importe où près de 100 cas et serait quelque chose de plus proche de 20.
Affirmative, est-il de l'espoir pour ce rapport des images à des hôtes? Aussi, la mise en œuvre de la machine virtuelle serait mieux adapté à cet effet - ie a efficacité globale de l'utilisation des ressources? Nous utilisons principalement vmware ici, mais si il y a un important avantage en termes de performance qui pourraient être obtenus par commutation de Xen ou similaires, je suis sûr que nous considérons que c'est.
Merci d'avance pour vos idées 🙂
Remarque: Nous avons fini par utiliser OpenVZ et ça fonctionnait plutôt bien. Les paramètres par défaut pour une ubuntu modèle courons à propos de 40 cas par machine.
OriginalL'auteur Voltaire | 2008-09-30
Vous devez vous connecter pour publier un commentaire.
il existe trois principaux fronts pour faire ces ajustement:
moindre frais généraux. OpenVZ, Vserver, chroot, l'idéal serait, le cas échéant. si vous avez vraiment besoin de chaque instance d'être une véritable machine virtuelle avec son propre noyau, essayez KVM Xen au lieu de VMWare. peut-être moins mature, mais vous aurez beaucoup plus de flexibilité.
plus petits. essayer Ubuntu JeOS, ou à rouler avec busybox
partager autant que possible entre les invités. essayez de partager un seul R/O de l'image avec tous les OS, et de monter un petit R/W de l'image pour chaque invité sur /var, /home, /etc, etc
vrai, Linux containers (et BSD/solaris variantes) sont aussi bas-coûts indirects de chroot; mais Docker ajoute un système de fichiers de superposition qui je ne sais pas combien cela peut-il affecter les e / s de disque.
J'ai juste dit que c'est les nouvelles tendances. Il est plus développeur sympathique. Et il réduit les difficultés dans le déploiement d'une application. Les grandes entreprises comme Google,Canonical(Ubuntu société),Redhat, etc. y songent. Je ne comprends peut-être affecter IO, mais la question était sur la machine virtuelle. Le dossier d'un linux basé sur le conteneur (au moins un peu le concept et le code), donc je pense qu'il est aussi une réponse. En particulier, Redhat va avec le Projet Atomique et Canonique avec Snappy Ubuntu, et j'ai entendu parler de google est également intéressé à elle.
OriginalL'auteur Javier
Un couple de problèmes avec ça...
Bonne chance
OriginalL'auteur Brian
Avez-vous vraiment besoin de 100 à plein fonctionnelle des systèmes d'exploitation?
Pourquoi ne pas prendre une approche serveurs web utilisent déjà? Je veux dire des serveurs web virtuels/hosts.
Par exemple, Apache HTTPD installés sur un seul serveur physique hébergeant de nombreux serveurs virtuels en utilisant un seul fichier de configuration. De Plus, vous aurez besoin de DNS est configuré et/ou de plusieurs interfaces de réseau virtuel (eth0:0, eth0:1, ... ,eth0:n) avec des adresses IP différentes.
Cela devrait fonctionner si vous avez vraiment besoin de seulement plusieurs services exposé au monde et la charge n'est pas élevé.
OriginalL'auteur Yurii Soldak
Une autre possibilité est d'utiliser un léger distribution Linux que vous pouvez exécuter dans de très petites quantités de mémoire. Quelque chose comme DamnSmallLinux ou d'une variation sur le DDWRT. Ils peuvent courir en aussi peu que 16 mo de mémoire, vous permettant de courir 20 ou plus sur une seule machine.
OriginalL'auteur Barry Brown
Vous seriez mieux de tourner VMware ESX/ESXi, car ils ont une fantaisie de mémoire fonctionnalité de regroupement. Il prend les pages de la mémoire, qui sont identiques et les utilise, entre plusieurs clients, donc si vous êtes en cours d'exécution beaucoup de identique clients, vous serez en mesure d'obtenir beaucoup plus de votre hôte qu'avec d'autres machines virtuelles.
Vérifier le bit sur "Transparent Page Sharing" dans cette entrée de blog, et un commentaire à ce sujet ici trop.
Toute évidence, vous êtes encore en le poussant avec 20 invités par l'hôte et seulement 2 go de RAM sur chaque, mais si vous supprimez tous extérieurs, de services et d'applications, et de construire 1 invité image et le clone avant d'installer l'application dédiée sur chacun d'eux, vous pourriez juste sortir avec elle, d'autant que le VMware lien montre une de 4 go hôte exécutant 40 invités!
OriginalL'auteur gbjbaanb
j'ai un quadcore machine tourne à plein bureau et 9 machines virtuelles. puisque c'est une machine d'essai j'utilise toutes sortes de clients. le meilleur sur l'utilisation de la ram semble être de debian kfreebsd, et tiny core linux. tiny core linux utilise 10M de ram ne rien faire. ajouter un couple de services et il pourrait être 32M, afin que je puisse exécuter 32 vm au sein de 1 GO de ram! vous disposez de 2 GO donc permet de dire que vous pourriez exécuter 48 machines, y compris un hyperviseur et les frais généraux(je suis en utilisant kvm.) donc, avec 5 machines nous serions jusqu'à 240 machines 😀
je pense que je vais essayer dans un moment 😀
btw. vous avez dit que la vm devrait avoir un peu de charge, donc je n'ai pas compter sur cpuload ou diskload. et ces chiffres ont exactement 0 redondance.
OriginalL'auteur isama
Si vous pouvez mincir l'invité suffisant, vous pourriez probablement faire, pas de X, un minimum de services, etc. Regardez slackware ou ubuntu server.
Xen semble populaire parmi les sociétés d'hébergement web, donc peut-être intéressant de regarder.
L'utilisation de l'UC varient selon les applications, mais vous voudrez peut-être acheter un peu plus de ram!
Oh, pour être en mesure de voter commentaires
OriginalL'auteur Martin Beckett
Est-il une raison pourquoi chaque réseau instance de service doit être cloisonnée dans leurs propres machines virtuelles? Si vous n'avez pas besoin d'isoler les utilisateurs les uns des autres, mais ont besoin d'isoler les processus et de trafic, alors vous seriez probablement mieux d'utiliser simplement les cinq serveurs-est et le lancement des procédures distinctes pour chaque instance. Chaque instance serait lié à une interface virtuelle.
Par exemple, de configurer une interface virtuelle et de lui attribuer une adresse IP. Créer un httpd.fichier conf et/ou sendmail.cf fichier pour l'instance que vous souhaitez créer. Dans le fichier de configuration, spécifiez que le démon doit être lié à l'interface virtuelle (et uniquement celle-là). Lancer le démon.
Répétez l'opération pour chacune des instances. Vous aurez un grand nombre de processus en cours d'exécution (des centaines, si pas des milliers), la somme totale d'entre eux utilisent moins de mémoire que des dizaines de machines virtuelles. De Plus, votre système d'exploitation sera en mesure de swap de ceux qui sont inutiles sur le disque.
Malheureusement, je pense que nous avons une bonne raison d'avoir une véritable OS. Toutefois, nous ne pourrions pas besoin de 100 d'entre eux, peut-être seulement 40, et alors nous pouvons utiliser cette astuce pour le reste. C'est certainement quelque chose à envisager.
Vous pouvez également essayer quelque chose avec des environnements "chroot" si vous avez besoin de plus de compartimentation. Vous pouvez ainsi créer de mini-systèmes de fichiers pour chaque processus isolé, puis de lancer le processus dans une prison chroot.
OriginalL'auteur Barry Brown
Si vous faites le calcul, vous obtenez en moyenne de 100 MO de ram pour chaque machine. Ce n'est pas beaucoup. La surcharge d'une VM est assez grand, d'avoir à exécuter un système complet dans chaque instance.
Soit vous utilisez une très petite empreinte os (http://www.damnsmalllinux.org/?) et passer du temps à démonter encore plus, ou que vous avez les plus grandes machines.
Machines que pas cher, j'avais tendance à mettre à niveau vers un système d'exploitation 64 bits avec beaucoup de ram.
OriginalL'auteur Oli
VMWare a un cool option où vous pouvez "pool" d'un groupe de machines physiques, et il sera automatiquement déplacer les machines virtuelles quel que soit le matériel est moins utilisé, sans interrompre le fonctionnement de la machine virtuelle.
Plutôt advertisey lien.
OriginalL'auteur JosephStyons
Êtes-vous limité à vmware? Avez-vous envisagé de Système d'exploitation de la virtualisation? Vous aurez plus de machines virtuelles avec moins de frais généraux, étant donné que chaque machine virtuelle peut exécuter le même noyau.
En fait - je ne suis pas sûr. Nous pourrions avoir des os des exigences spécifiques pour chaque image qui nous empêchent de faire quelque chose comme de l'exécution d'un tas de FreeBSD prisons.
Eh bien, si vous pouviez configurer un seul noyau Linux pris en charge tous vos différentes applications, puis Virtuozo et OpenVZ pourrait emballer beaucoup plus de machines virtuelles sur un seul serveur physique. Bonne chance!
OriginalL'auteur Kevin Little
Plusieurs pensées ...
1 - Comme souligné par d'autres, la mémoire de l'arithmétique ne fonctionne pas, vous aurez besoin de plus de RAM.
2 - Selon le service, vous trouverez peut-être pré-configuré machines virtuelles. Par exemple, Astaro a une VM configuration pour gratuit logiciel de pare-feu. Vous pouvez également être en mesure de trouver une très petite distribution linux que vous pouvez vous adapter.
3 - Peut-être que je manque quelque chose, mais il semble que Ubuntu est assez proche ... déjà 20 cas par machine sur 5 machines à obtenir les 100 instances que vous avez besoin. Il n'y a pas beaucoup de marge pour la croissance future, cependant ...
Prenez soin de vous, bonne chance.
OriginalL'auteur tomjedrz
Je ne sais pas si c'est possible, mais comment au sujet de l'exécution de chaque service dans un environnement chroot? Vous pourriez probablement gagner de l'espace disque dur reliant la bibliothèque nécessaire fichiers pour créer chaque chroot système de fichiers.
OriginalL'auteur Barry Brown
Un autre problème avec l'exécution de chaque service dans son propre machine virtuelle, c'est qu'ils ont tous besoin de leur propre adresse IP. 100 IPs ne peut pas être un problème sur un réseau interne (comme un 172/8 ou 10/8 l'installation), mais si ils font partie de votre Classe A (en supposant que vous avez que beaucoup de public), vous allez courir vite.
Et, comme d'autres l'ont demandé, pourquoi est-ce que chaque service doit-il être son propre machine virtuelle? Beaucoup d'entre eux doivent être facilement capable de fonctionner sur le même hôte.
OriginalL'auteur warren
Si c'est quelque chose qui peut être fait au niveau de l'application - j'irais sans aucun virtualizatoin. Vous pouvez exécuter plusieurs instances de votre application sur des numéros de port différents, même des IPs différentes avec l'IP aliasing facilement. De cette façon, vous pouvez facilement exécuter plus de 20 exemplaires sur chacune de vos boîtes. Heck, vous pourriez être capable de tout faire avec la moitié de votre matériel.
La virtualisation n'est pas la solution pour tout. 🙂
Mon 2c.
OriginalL'auteur Lester Cheung
Cloud Foundry. Je ne sais rien à propos de VMs par rapport à quelqu'un d'autre qui ont présenté une réponse, mais d'après ce que je comprends, si vous disposez d'un hôte, une machine virtuelle sur l'hôte, et puis Nuage de Fonderie sur cette machine virtuelle, vous pouvez facilement créer une base Secondaire de la VM et de répliquer facilement et de configurer l'ensemble de vos services au Secondaire VM ensemble, tout en gardant l'utilisation de votre matériel faible. Je ne sais pas si cela fonctionnera pour vous, mais ce que je comprends que serait l'un des plus minimes approches et c'est une coque approche qui permettrait de réduire les risques d'endommagement de la machine hôte.
OriginalL'auteur Jared Lourie