Existe-t-il des alternatives majeures pour le basculement automatique sous Linux en dehors des combinaisons typiques Heartbeat/Pacemaker/CoroSync? En particulier, je configure le basculement sur les instances EC2, qui ne prend en charge que la monodiffusion - pas de multidiffusion ni de diffusion. J'essaie spécifiquement de gérer les quelques logiciels que nous avons qui ne disposent pas déjà d'un basculement automatique et ne prennent pas en charge les environnements multi-maîtres. Cela inclut des outils comme HAProxy et Solr.
J'ai Heartbeat + Pacemaker qui fonctionne, mais je n'en suis pas ravi. Voici certains de mes problèmes:
Le stimulateur cardiaque fonctionne très bien, bien que sa puissance le rend difficile à configurer. Le vrai problème avec Pacemaker est qu'il n'y a pas de moyen facile d'automatiser la configuration. Je veux vraiment lancer une instance EC2, installer Chef/Puppet et faire lancer le cluster entier sans mon intervention.
Je préfère utiliser keepalived pour la haute disponibilité. Je trouve plus simple à installer (un démon et une configuration) que Heartbeat et Company. Le seul inconvénient que je rencontre, c'est que keepalived n'a pas d'option unicast par défaut, et utilise uniquement VRRP pour la communication (L'auteur de HAProxy a écrit un patch unicast pour keepalived cependant)
Je travaille actuellement sur quelque chose de très similaire à ce que vous avez décrit (un cluster de basculement sur EC2), et après avoir essayé Heartbeat, je me suis installé sur Corosync comme couche de messagerie. Corosync fonctionnera sur plusieurs serveurs et prend en charge Unicast (UDPU) à partir de la version 1.3.0 (à partir de novembre 2010). J'ai installé et testé Corosync sur le cloud EC2 d'Amazon (en utilisant l'AMI Linux d'Amazon) et je peux confirmer que cela fonctionne sans problème.
Un exemple de fichier udpu est installé dans/etc/corosync.
Ajoutez un bloc membre à la section d'interface pour chaque nœud et spécifiez le transport en tant que mise à jour. (J'ai utilisé le même port que Heartbeat dans l'exemple ci-dessous, mais vous pouvez le modifier à votre guise).
par exemple.:
totem {
version: 2
secauth: off
interface {
member {
memberaddr: 10.xxx.xxx.xxx
}
member {
memberaddr: 10.xxx.xxx.xxx
}
ringnumber: 0
bindnetaddr: 10.xxx.xxx.xxx
mcastport: 694
}
transport: udpu
}
(Heartbeat est censé prendre en charge plus de 3 clusters de nœuds dans les versions 1.2.3+, bien que je ne l'ai jamais essayé personnellement et je ne sais pas si cela fonctionnerait avec Unicast).
Désolé, mais la partie sur Pacemaker n'est pas vraie. Les tests de régression et de libération de Pacemaker utilisent largement l'automatisation.
Pour configurer sans cluster actif, préfixez toutes les commandes avec CIB_file=/var/lib/heartbeat/crm/cib.xml
ou placez-le dans votre environnement. Assurez-vous simplement de supprimer le fichier .sig avant de démarrer le cluster.
Pour les clusters sans quorum, la plupart des outils, sinon tous, doivent prendre en charge -f
ou --force
qui demandera au cluster d'accepter le changement de toute façon. Si vous trouvez un outil qui ne fonctionne pas - veuillez signaler un bogue.
Dans le monde open source, il y a RedHat Cluster Suite . Cela fait plusieurs années que j'ai implémenté RHCS, je n'ai donc pas beaucoup de choses pertinentes à dire à ce sujet aujourd'hui.
Commercialement, il y a Veritas Cluster Server . Aucune expérience avec.
Un outil HA beaucoup plus simple et open source est UCARP . UCARP ne fournit pas à peu près le même type d '"infrastructure" que Heartbeat/Pacemaker/CoroSync, mais vous pouvez créer des solutions HA autour de lui.
Vous pouvez également créer une infrastructure hautement disponible avec des technologies de virtualisation, mais ces solutions ont tendance à se concentrer sur la disponibilité au niveau de l'hôte plutôt que sur la disponibilité au niveau de l'application.
Il existe Oracle Clusterware pour Oracle Unbreakable Linux, mais je ne l'ai pas utilisé.
Veritas Cluster est génial (par rapport à Linux-Heartbeat, AIX-hacmp, HP-Serviceguard et Sun cluster), mais il coûte beaucoup d'argent. La dernière fois que je l'ai regardé, son prix était basé sur les cpu-cores du cluster. Fournisseur actuel ist Symantec ...
Si vous utilisez déjà EC2, pourquoi ne pas utiliser Elastic Load Balancing ? Il vous permettra d'atteindre la disponibilité au niveau de l'application sans avoir à configurer le basculement vous-même.
opensvc ( https://www.opensvc.com ) prend en charge plusieurs pilotes de pulsation:
et ont également des mécanismes de quorum en cas de cerveau divisé.
J'ai réussi à configurer automatiquement un cluster à 4 nœuds composé de 2 instances Google Cloud + 2 instances Amazon avec terraform + ansible.
J'ai écrit un gestionnaire de cluster de basculement dans Posix Shell: https://github.com/nackstein/back-to-work
jetez-y un œil, je cherche quelqu'un qui veut l'essayer et aider au développement.