Configuration d'un environnement virtualisé haute disponibilité

9

Pour un projet, j'ai la tâche de planifier une configuration à haute disponibilité pour une boutique en ligne et un système CMS. Cependant, bien sûr, le projet est sur un budget serré. Donc, une solution haut de gamme pourrait ne pas être dans le budget.

Il y aura deux machines exécutant le serveur Web (CMS, boutique), une machine exécutant la base de données et une machine pour exécuter un serveur de télécopie nécessaire pour livrer les commandes aux partenaires. Tous les systèmes fonctionnent sous Linux. Tous ces composants doivent être hautement disponibles et doivent prendre en charge le basculement transparent.

Pour réduire les coûts matériels, je pense à un environnement virtualisé. Il y a beaucoup d'informations là-bas, mais je ne sais pas exactement où commencer. Il semble évident qu'au moins des serveurs sont nécessaires en tant qu'hôte pour les machines virtuelles, de sorte qu'il n'y a pas de point de défaillance unique.

Quelle est la meilleure façon de prendre en charge la haute disponibilité?

La première question est de savoir quelle solution de virtualisation est la meilleure dans cette situation. Il doit y avoir une sorte d'interface de gestion. Il doit exister un moyen de déplacer une machine virtuelle en cours d'exécution d'un hôte à un autre afin de pouvoir effectuer la maintenance de l'hôte. Il doit y avoir une sorte de mécanisme, afin que les machines virtuelles soient toujours disponibles en cas de défaillance d'un hôte. Pourriez-vous nous conseiller ici sur une solution valable?

Un stockage de fichiers partagé semble être une condition préalable à une haute disponibilité dans la plupart des cas (attendez-vous à VMware vSphere qui est plutôt cher). Cependant, il serait préférable de mettre plus d'argent dans les hôtes de la machine virtuelle que d'ajouter deux autres serveurs à la configuration pour fournir un magasin de fichiers NFS redondant. Est-il possible de s'entendre uniquement avec les deux hôtes de machine virtuelle? Une solution pourrait être deux utiliser ces deux comme hôtes NFS également. Y a-t-il une grande pénalité de performance pour ce faire?

EDIT: Je vise une disponibilité à 99,9%. Cependant, aucune disponibilité 24h / 24 et 7j / 7 n'est requise car il y a des heures d'ouverture régulières, ce qui donne un peu d'espace de manœuvre. La période de disponibilité qui doit être garantie d'une manière ou d'une autre se situe entre 10h et minuit.

spa
la source
2
Quelle est «haute» la «haute disponibilité»? Tirez-vous pour une disponibilité de 1 à 9 ou 6 à 9, ou quelque part entre les deux? Tant que vous n'avez pas d'exigences concrètes en place, il est impossible de dire si ce que vous voulez faire est réalisable avec un budget donné.
growse
Oui, tu as raison. Je vise une disponibilité à 99,9%.
spa
"99,9%" n'est pas seulement une phrase que nous jetons. Cela équivaut à environ 8,8 heures d'indisponibilité par an . Cela vous fait sortir de la gamme de systèmes qui sont simplement réunis avec un budget serré. Si votre budget est limité, pouvez-vous vous permettre de supporter ce niveau de disponibilité?
Rob Moir
1
@RobMoir - Je dirais que si vous répondez aux critères que j'ai décrits dans ma réponse, il n'y a pas beaucoup de problèmes que vous ne pouvez pas résoudre pendant ces 8 heures (et le budget pourrait toujours être assez petit). Si vous vous assurez que les temps d'arrêt planifiés avec avertissement avancé en dehors des heures de travail ne comptent pas pour votre contrat SLA (pour les logiciels non disponibles 24h / 24 et 7j / 7).
Mark Henderson
@MarkHenderson Je sais que vous avez raison, je dis simplement que le processus nécessite un peu de réflexion et de planification et ne "se produira pas" (vous devez vous assurer que vous pouvez obtenir des pièces de rechange sur place bien dans les 8 heures, pour par exemple, pour ne pas perdre 7 heures de `` fenêtre '' au bureau de poste, ou trouver que votre fournisseur préféré a choisi ce jour-là d'être en rupture de stock sur un câble banal qu'il aurait normalement en stock par milliers) .
Rob Moir

Réponses:

13

De manière générale, pour atteindre la haute disponibilité, vous avez besoin de:

  1. Plusieurs serveurs
  2. Plusieurs copies cohérentes des données
  3. Données cohérentes accessibles entre plusieurs serveurs
  4. Un moyen de démarrer automatiquement une 2e instance sur le serveur de secours

Le numéro 1 est aussi simple qu'il y paraît - achetez deux serveurs identiques.

Le numéro 2 peut être atteint par un SAN de réplication (coûteux, très rapide, très fiable) ou un système de fichiers répliqué sur chacun des serveurs (bon marché, la vitesse et la fiabilité peuvent dépendre de votre connaissance de la technologie choisie).

Le numéro 3 peut être atteint par un SAN (un LUN de stockage, accessible par deux serveurs), ou un système de fichiers répliqué (deux zones de stockage séparées, chaque serveur ne peut voir que le sien).

Le numéro 4 peut être atteint par une application de battement de coeur.

Pour ce faire avec un petit budget, disons VMWare vSphere, vous pouvez utiliser un SAN ou VMWare propose désormais une appliance de stockage à réplication automatique qui propose deux magasins de données distincts sur deux serveurs pouvant être utilisés pour une haute disponibilité. vSphere propose également des pulsations intégrées et des configurations à haute disponibilité.

Pour ce faire sans budget, vous pouvez suivre le chemin Xen et utiliser DRBD pour répliquer le stockage entre les deux nœuds. Ensuite, vous configurez Heartbeat pour basculer le nœud de stockage DRBD actif et l'instance Xen pour démarrer les machines virtuelles sur le 2e hôte lorsque le premier tombe en panne.

Vous n'obtiendrez pas de disponibilité de 5-neuf (99,999%) en utilisant ces recommandations de base, mais vous pourriez facilement obtenir 3-neuf (99,9%) en utilisant les méthodes les moins chères si vous savez ce que vous faites.

Mark Henderson
la source
9

Vous parlez de «dépenses» en termes de «combien d'argent cela coûtera-t-il pour acheter» lorsque vous discutez du stockage partagé. C'est un point tout à fait valable bien sûr, l'argent est serré partout .

Mais si vous parlez de haute disponibilité, vous devez également vous demander " pourquoi voulons-nous une haute disponibilité?" et si la réponse est, par exemple, "parce que l'entreprise génère plus de 2000 $ par heure de ventes en ligne, donc si nous sommes partis pendant une heure, nous avons perdu 2000 $", alors la question des dépenses et de l'abordabilité peut devenir "Pouvons-nous avez- vous les moyens de ne pas acheter quelque chose qui permet ou améliore considérablement notre déploiement de haute disponibilité? "

C'est un détail important et cela joue avec votre commentaire sur le budget - la «queue» informatique ne doit pas remuer le «chien» de l'entreprise en insistant sur une solution trop complexe et coûteuse à un petit problème, mais en même temps si l'entreprise a certaines exigences de son infrastructure informatique, il doit alors être prêt à les budgétiser correctement ou à ajuster ses exigences.

Je pense que la virtualisation a beaucoup de potentiel pour améliorer la disponibilité des systèmes, mais ce n'est pas une baguette magique. Le côté matériel des choses, bien qu'important, est très secondaire par rapport aux exigences logicielles - il est inutile d'avoir un cluster de base de données SQL qui tombe sans problème en cas de panne de l'un des serveurs SQL si l'application frontale qui parle à la base de données s'étouffe car il ne peut pas gérer le basculement.

Et deux serveurs "hautement disponibles" assis côte à côte dans un centre de données sont toujours vulnérables aux pannes de courant, au vol, etc. Encore une fois, selon la réponse à " pourquoi faisons-nous cela?", Vous devrez peut-être considérer cet aspect assez soigneusement car cela peut ajouter des dépenses et de la complexité à plusieurs parties de votre projet.

Rob Moir
la source
3
...no good having a SQL database cluster that falls over with no trouble in the event of one of the SQL servers crashing if the front-end application that talks to the database chokes because it can't handle the failover.- Je ne saurais trop insister sur ce point. Nous avions un client qui nous avait fait implémenter un cluster HA SQL Server sur un grand SAN et à la fin de la journée, leur logiciel devait être redémarré en cas de basculement car il ne pouvait pas gérer une interruption des communications. C'était un exercice coûteux qui était inutile quand un miroir SQL et un NLB auraient suffi.
Mark Henderson
On dirait que nous avons tous les deux des cicatrices similaires d'anciens projets
Rob Moir
@MarkHenderson pourquoi la communication s'est-elle interrompue (à savoir laquelle - SAN ou réseau)?
Nils
5

Sans savoir quelle base de données et quel serveur d'applications vous utilisez, je recommanderais:

  • Utilisez XEN> 3.2 en mode PV pour les machines virtuelles (juste mon préféré) - des compartiments ou d'autres solutions de virutalisation lightwight peuvent également convenir (OpenVZ pour n'en nommer qu'un).
  • Construisez quatre machines virtuelles sur chaque nœud physique
  • Utilisez un RAID 5 local avec des disques SAS 3,5 "- autant de disques que possible localement (5 est bon)
  • Utilisez des disques de 15 000 tr / min (vos bases de données en auront besoin)
  • Utilisez DRBD et OCFS2 pour fournir un stockage "partagé" bon marché, utilisez un réseau local rapide, sécurisé et fiable pour cette connexion (la liaison des interconnexions directes est assez rapide et bonne).
  • Faire le HA au niveau de l'application
  • Utilisez l'équilibrage de charge entre les paires de machines, de sorte que 8 machines effectuent des tâches simultanées

HA-Exemples:

  • Serveur d'applications: utilisez Tomcat en mode actif / actif en cluster
  • LVS: utilisez la réplication simultanée esclave et maître des LV
  • Oracle-DB: utilisez RAC (je ne sais pas s'il existe une solution équivalente pour les bases de données OpenSource)

Si vous effectuez une HA sur la couche application, cette couche sait mieux comment répliquer des sessions. Si un nœud tombe en panne (planifié ou non), le nœud survivant prendra le relais, y compris les sessions.

Nils
la source
"Oracle-DB: Use RAC" - Standard Edition n'est pas sous licence ou pris en charge avec OCFS2. A part ça, une réponse très informative.
kubanczyk
@kubanczyk Oracle-RAC est plus que ocfs2. Mais ocfs2 est gratuit. Vous pouvez donc l'utiliser quand vous le souhaitez.
Nils
2

Pourquoi voulez-vous acheter vos propres hôtes? Pourquoi ne trouvez-vous pas un fournisseur Enterprise Cloud / IaaS comme BlueLock ou Terremark qui fournira l'infrastructure dont vous avez besoin. Ils fourniront des services comme vSphere HA (plus comme des temps d'arrêt réduits que le service HA mais c'est une solution rentable), pare-feu, déchargeur LTM / SSL, SAN (avec des étagères redondantes), surveillance / alerte, etc. Notez que nous ne sommes pas parler de solutions cloud grand public ici alors soyez prêt à payer pour la valeur.

HTTP500
la source
Oui, tu as raison. Cependant, la configuration comprend comme du matériel personnalisé pour la remise des télécopies. Une solution cloud ne fera donc pas de mal.
spa
@spa, vous pouvez toujours provisionner le matériel personnalisé sur leur environnement physique, le reste sur virtuel et relier les VLAN.
HTTP500