Proxmox Cluser

Bernie87

Lt. Junior Grade
Registriert
Apr. 2011
Beiträge
350
Hallo zusammen,

im Moment liegt die Überlegung an eine unserer Proxmox Maschinen zu clustern.

Die generelle Frage ist jetzt, ob es möglich ist nur bestimmte VM´s zu clustern und andere auszuschließen?

Da ich mich mit Proxmox ganz gut auskenne aber mit dem Cluster weniger würde ich mich hier gerne durchlesen!
Kann mir einer sagen, wo am besten meine Infos holen kann?

Gruß


Bernie
 
Bei mir ist es genau umgekehrt, ich habe zwar schon Proxmox verwendet, mag es aber aufgrund der manchmal Begrenzten Möglichkeiten nicht so sehr. Jedoch kenne ich mich mit Cluster gut aus.

Ich nutze stattdessen libvirt als Interface für kvm und qemu und virt-manager um die VM's zu verwalten.

Ich habe aktuell einen 2 Node Cluster mit VM's. Jedoch wird dieser Hauptsächlich mit nginx, php5 und mysql betrieben.

Ich weiß, dass es für Corosync ein Stonith Plugin gibt, dass über libvirt auch einzelne VM's failovern könnte. Denke ich.
Wenn du nur einzelne VM's failovern willst, wenn ein Dienst darin kaputt geht, dann brauchst du für jede VM, bzw. für jedes Paar eine Failover-IP. Bzw, solltest du private IP's verwenden und z.B: eine HTTP Loadbalancing Software wie z.B. haproxy, brauchst du keine Failover IP's, aber deine VM's sind dann auch nicht direkt aus dem Internet erreichbar.

Dann kannst du auf VM-Ebene einen Cluster anlegen. Dafür würde ich dir jedoch wirklich stark empfehlen auf den Hypervisiorn ein DRBD laufen zu lassen. (Bitte testen, wie das mit der Synchronisation der virtuellen Festplatten ist!)
Oder eben alles vom DRBD auf dem Hypervisor per NFS in die VM's mounten.

Dann kannst du z.B. wenn du 6 VM's hast verteilt auf 2 Hypervisior z.B. so etwas machen:

VM1 = Hypervisor 1
VM2 = Hypervisor 1
VM3 = Hypervisor 1

VM4 = Hypervisor 2
VM5 = Hypervisor 2
VM6 = Hypervisor 2

VM1 = nginx und mysql [MASTER]
VM4 = [SLAVE] für VM1

VM2 = DNS-Server, MAIL-Server
VM5 = [SLAVE] für VM2

VM3 = Irgendwas
VM6 = [SLAVE] für VM3


Szenario 1:
Der nginx stirbt auf VM1 -> Corosync initiert einen Failover, stellt die Failover-IP um und startet alle Dienste auf VM4.
Packetloss von Hypervisor zu VM1 -> Corosync initiert einen Failover, stellt die Failover-IP um und startet alle Dienste auf VM4.
Packetloss vom Internet zu Hypervisor 1 -> Corosync macht auf dem Hypervisor einen Failover und migriert alle Dienste von VM1-VM3 auf Hypervisor 2
Hypervisor 1 hat einen Hardware Defekt -> Corosync macht auf dem Hypervisor einen Failover und migriert alle Dienste von VM1-VM3 auf Hypervisor 2

usw..


Auf VM Ebene selbst geht das, je nach OS, bei dir schon Problemlos.
Wie Corosync oder Proxmox selbst das Failovern bzw Clustering in Verbindung mit Proxmox unterstützen weiß ich nicht.

Das könnte dir eventuell mal einen möglichen Ansatz geben.
http://clusterlabs.org/doc/en-US/Pa...maker_Remote/_configure_pacemaker_remote.html
 
Zuletzt bearbeitet:
Die Frage ist was du Clustern möchtest?

Die beiden Host sollen einen Cluster bilden, bei denen einige VMs sich frei zwischen den Nodes bewegen können. Die VM ist der Hochverfübare Service.
Du willst einen Service (z.B. Webserver) hochverfübar zwischen zwei VMs auf zwei unabhänigen Host Clusern.

Wenn der VM der Service ist, brauchst du dafür einen Shared Storage. Alle anderen VMs können dann nicht ohne weites auf den zweiten Node.
 
Ja, man kann einzelne VMs aus dem HA ausschließen.

Synchronisierung kann live mittels DRBD zwischen beiden Nodes erfolgen, ist aber nicht zu empfehlen. Auch nicht, wenn beide nodes direkt über eine 2. NIC mit einander verbunden sind. Ein kurzer hänger oder wackler und du hast einen Split Brain bei der Master/Master Replikation. Cleverer wäre es im Backend einen redundanten Storage zu nutzen welche dann über NFS oder iSCSI auf den beiden Proxmox Nodes eingebunden werden.

Failoverindikator kann man beispielsweise mit "fencing" umsetzen.
 
Zurück
Oben