A ce qu'il semble... votre client ne comprend pas les exigences de Ceph.
Combien d'hôtes de machines virtuelles ont-ils ?
Réponse courte :
Oui, vous pouvez, mais ce n'est pas recommandé.
Longue réponse :
Oui, cela fonctionnera. Mais les performances pourraient être affectées négativement. Et quand je dis négativement, je veux dire potentiellement vraiment négativement.
Veuillez lire le Recommandations sur le matériel .
Détails :
Ceph s'attend réellement à écrire ses données sur des disques dédiés contrôlés par des nœuds de stockage (OSD's). L'ajout d'une autre couche de virtualisation par-dessus cela pourrait vraiment affecter les performances. Surtout lorsqu'il faut partager ce disque avec d'autres machines virtuelles. Mais si c'est pour des tests entre quelques membres de l'équipe, pourquoi pas ?
Mais pour la production. S'IL VOUS PLAÎT, NE LE FAITES PAS.
En plus des OSD, vous avez besoin d'un minimum de 3 moniteurs. Idéalement, ils doivent fonctionner sur des machines complètement séparées. Parce que si ce n'est pas le cas, ils ne sont pas résistants à une panne d'alimentation de l'hôte, n'est-ce pas ? Et si cela arrive, vous perdrez l'accès au cluster Ceph.
Une autre raison est que Ceph est gourmand en E/S lors des lectures/écritures sur les OSD. Plus vous avez d'OSD sur le même hôte physique, plus l'interface réseau de cet hôte sera encombrée. C'est pourquoi vous devez répartir votre charge entre plusieurs OSD et plusieurs serveurs.
Cela dit, j'ai déjà virtualisé les moniteurs et les serveurs de métadonnées sur Xen. Mais l'hôte de la machine virtuelle que j'avais était une bête et j'ai donné beaucoup de ressources à Ceph. J'avais également une grande bande passante réseau disponible sur tous ces hôtes. En fait, il s'agissait de 56Gbit FDR Infiniband. Je ne peux donc pas vraiment dire ce que cela allait donner de l'exécuter sous contrainte, je ne l'ai pas remarqué de cette manière.
Je l'ai également installé sur Amazon EC2. Mais encore une fois, j'ai utilisé une configuration plus sophistiquée pour les tests. Il a fonctionné correctement sur cette configuration, mais nous avons pu constater que la virtualisation lui faisait du tort. Ce premier test avait pour but de voir si nous pouvions obtenir des performances plus rapides que les IOPS provisionnés d'Amazon pour un coût moindre. Nous ne l'avons pas fait, mais c'était un test intéressant.
En ce qui concerne les pilotes paravirtuels, etc. Oui, ils aident mais SR-IOV est une meilleure option à mon avis.
Résumé :
- Ce n'est pas recommandé, même si ça marche.
- Les OSD ne devraient pas vraiment être virtualisés.
Il sera intéressant de voir si Sage Weil commente ici. Si je ne me trompe pas, il a déjà fait cela auparavant.
2 votes
Veuillez fournir les raisons des votes négatifs - je peux peut-être mieux formuler la question.
1 votes
Parce que tout est basé sur l'opinion. Mais je vais essayer d'y répondre car j'ai déjà fait beaucoup de choses avec Ceph.
2 votes
@Matt - pardonnez mon ignorance - est-ce que l'opinion est basée sur le fait que l'exécution de Ceph (ou d'un produit similaire) dans une VM affecterait ses performances ? Il me semble que c'est quelque chose qui pourrait être quantifié.
0 votes
C'est quelque chose qui pourrait être quantifié avec des données, comme c'est la nature intrinsèque de la quantification. Jusque là, vous faites des hypothèses sauvages. Le fait que cela fonctionne dépend de votre hyperviseur, de votre configuration réseau, de votre configuration matérielle et de votre charge de travail externe. La chose à faire serait de tester cette solution dans un environnement d'essai pour voir si elle fonctionnera pour vous. En général, il n'y a rien d'intrinsèquement mauvais à virtualiser cette charge de travail, mais cela dépend de ce que vous voulez en tirer et de la façon dont vous allez l'utiliser dans votre infrastructure. Pour prendre ces décisions, vous avez besoin de données que nous n'avons pas.
0 votes
@SmallLoanOf1M Merci. On ne peut donc plus dire (comme on le disait il y a 15 ans) que mettre un système à forte intensité d'E/S dans une VM, au-dessus d'un hyperviseur, tue ses performances (en général.) ?
1 votes
Les E/S des hyperviseurs ont beaucoup évolué depuis. Utilisez des disques / contrôleurs paravirtualisés chaque fois que vous le pouvez, car les contrôleurs émulés sont généralement lents. Réfléchissez également à la raison pour laquelle vous virtualisez cette charge de travail et aux avantages que vous essayez d'en tirer. La migration en direct ne se fera probablement pas de manière raisonnable, car vous stockerez des données avec cette VM. Cependant, si elle était virtualisée, elle serait beaucoup plus facile à déployer rapidement et automatiquement. Vous devrez évaluer les avantages en fonction des données que vous obtiendrez lors des tests.