Cluster Proxmox chez Online.net (dedibox)

——————–

Nouvelle article avec la version 4 de proxmox et le RPN :

https://blog.waccabac.com/cluster-proxmox-4-chez-online-net-dedibox-avec-le-reseau-rpn/

——————–

Cet article va vous décrire les différentes étapes pour créer un cluster sous Proxmox avec des serveurs dédiés chez Online.net. Il faut savoir que le cluster est créé par défaut pour communiquer en multicast, protocole qui est bloqué chez la plupart des hébergeurs tels qu’Online ou OVH. Nous allons utiliser une alternative en choisissant l’unicast.

Pour faire notre cluster Proxmox, nous allons utiliser 3 serveurs de chez Online, qui ont pour chacun la configuration suivante :

server-poweredge-r410-overview1

– Dell R410
– Processeur : 2x Intel® Xeon® E5620
– Mémoire : 64Go DDR3 ECC
– Disques : 2x2To SAS

Dans le reste de l’article les serveurs seront nommés de cette façon :

sd-xxx est le serveur 1 avec l’ip 195.154.x.x
sd-yyy est le serveur 2 avec l’ip 195.154.y.y
sd-zzz est le serveur 3 avec l’ip 195.154.z.z

1 – Première étape: installation

Nous allons utiliser l’installation fournie par Online et donc nous rendre dans la console d’administration.

proxmox-logo

Sur chaque serveur, cliquez sur Installer, choisissez Distributions virtualisation puis cliquez sur Proxmox. Sélectionnez ensuite la version proxmox ve-3.1 64BITS.

Validez le partitionnement par défaut à savoir :

/boot de 200Mo
/ de 1.82 To
SWAP de 1 Go

Indiquez vos mots de passe pour root et l’utilisateur.

Pour terminer cliquez sur Effacer l’intégralité de mes disques dur et procéder à l’installation !

Cette installation va prendre un peux plus d’1 heure.

 

 2 – Configuration système des machines :

Pour cette étape, je vous conseil d’utiliser la commande cssh, fournie par le paquet clusterssh http://sourceforge.net/apps/mediawiki/clusterssh/. Elle vous permet d’exécuter des commandes sur plusieurs machines en même temps tout en pouvant également n’effectuer qu’une commande sur une machine spécifique. Son utilisation est la suivante :

# cssh root@sd-xxx.dedibox.fr root@sd-yyy.dedibox.fr root@sd-zzz.dedibox.fr

Dans notre cas, 3 shells sont affichés ainsi qu’une fenêtre servant à envoyer nos commandes simultanées.

Connectez vous à vos machines puis vérifiez les mises à jours via les célèbres commandes :

# aptitude update 
# aptitude upgrade

Notre système est maintenant à jour et nous pouvons éditer le fichier /etc/hosts des machines comme ceci (vim n’est pas installé par défaut, un simple aptitude install vim suffit) :

# vim /etc/hosts

127.0.0.1       localhost
195.154.x.x sd-xxx.dedibox.fr sd-xxx
195.154.y.y sd-yyy.dedibox.fr sd-yyy
195.154.z.z sd-zzz.dedibox.fr sd-zzz
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ce fichier doit être identique sur nos 3 serveurs. Une fois enregistré, il faut redémarrer les serveurs avec un simple :

# reboot

3 – Création du cluster

Nous allons utiliser le serveur sd-xxx pour créer notre cluster. Vous devez vous connecter en ssh à ce serveur puis créer le cluster avec la commande pvecm (nous choisissons le nom de cluster « moncluster ») :

# pvecm create moncluster
Restarting pve cluster filesystem: pve-cluster[dcdb] notice: wrote new cluster config '/etc/cluster/cluster.conf'
.
Starting cluster: 
   Checking if cluster has been disabled at boot... [  OK  ]
   Checking Network Manager... [  OK  ]
   Global setup... [  OK  ]
   Loading kernel modules... [  OK  ]
   Mounting configfs... [  OK  ]
   Starting cman... [  OK  ]
   Waiting for quorum... [  OK  ]
   Starting fenced... [  OK  ]
   Starting dlm_controld... [  OK  ]
   Tuning DLM kernel config... [  OK  ]
   Unfencing self... [  OK  ]

 

Le cluster est créé sur la première machine. Nous devons maintenant le configurer pour qu’il utilise l’unicast au lieu du multicast. Pour cela nous allons modifier le fichier de configuration comme ceci :

Copie du fichier de configuration vers un fichier de travail :

# cp /etc/pve/cluster.conf /etc/pve/cluster.conf.new

Puis édition de ce fichier nous remplacer la ligne <cman> par celle-ci :

<cman keyfile="/var/lib/pve-cluster/corosync.authkey" transport="udpu"/>

Pour obtenir ce fichier :

# vim /etc/pve/cluster.conf.new

<?xml version="1.0"?>
<cluster name="moncluster" config_version="1">

  <cman keyfile="/var/lib/pve-cluster/corosync.authkey" transport="udpu"/>

  <clusternodes>
  <clusternode name="sd-xxx" votes="1" nodeid="1"/>
  </clusternodes>

</cluster>

Un dernier test avant d’appliquer la configuration :

# ccs_config_validate -v -f /etc/pve/cluster.conf.new

Creating temporary file: /tmp/tmp.CsFOdvCWgk
Config interface set to:
Configuration stored in temporary file
Updating relaxng schema
Validating..
Configuration validates
Validation complete

Screen-startpage-with-cluster-dropshade-900

Pour appliquer cette configuration, vous devez vous rendre sur l’interface web du serveur à l’adresse : https://sd-xxx.dedibox.fr:8006/. Rendez vous dans Centre de données, puis sur l’onglet HA et cliquez sur le bouton Activer. La configuration est maintenant effective.

4 – Ajout des nodes au cluster.

Notre cluster est maintenant créé et nous pouvons y rajouter nos deux autres nodes. En ssh sur chacune des nodes, nous allons lancer la commande :

# pvecm add sd-xxx
The authenticity of host 'sd-xxx (195.154.x.x)' can't be established.
ECDSA key fingerprint is xx:xxx:xx:xxx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
root@sd-xxx's password: 
copy corosync auth key
stopping pve-cluster service
Stopping pve cluster filesystem: pve-cluster.
backup old database
Starting pve cluster filesystem : pve-cluster.
Starting cluster: 
   Checking if cluster has been disabled at boot... [  OK  ]
   Checking Network Manager... [  OK  ]
   Global setup... [  OK  ]
   Loading kernel modules... [  OK  ]
   Mounting configfs... [  OK  ]
   Starting cman... [  OK  ]
   Waiting for quorum... Timed-out waiting for cluster
[FAILED]

Un petit bug se produit et nous voyons un timeout pour le quorum. La solution que j’ai trouvée est que nous devons redémarrer les services de cluster sur les 3 serveurs en même temps :

# service cman stop
Stopping cluster: 
   Stopping dlm_controld... [  OK  ]
   Stopping fenced... [  OK  ]
   Stopping cman... [  OK  ]
   Waiting for corosync to shutdown:[  OK  ]
   Unloading kernel modules... [  OK  ]
   Unmounting configfs... [  OK  ]
# service pve-cluster stop
Stopping pve cluster filesystem: pve-cluster.
# service pve-cluster start
Starting pve cluster filesystem : pve-cluster.
# service cman start
Starting cluster: 
   Checking if cluster has been disabled at boot... [  OK  ]
   Checking Network Manager... [  OK  ]
   Global setup... [  OK  ]
   Loading kernel modules... [  OK  ]
   Mounting configfs... [  OK  ]
   Starting cman... [  OK  ]
   Waiting for quorum... [  OK  ]
   Starting fenced... [  OK  ]
   Starting dlm_controld... [  OK  ]
   Tuning DLM kernel config... [  OK  ]
   Unfencing self... [  OK  ]

Si vous avez gardé l’interface web visible, vous aurez remarqué que les 3 nodes sont en ligne !

Capture d'écran de 2014-06-06 12:37:47

La commande pvecm nodes vous indiquera également le bon fonctionnement du cluster :

# pvecm nodes
Node  Sts   Inc   Joined               Name
   1   M    268   2014-06-06 12:30:47  sd-xxx
   2   M    272   2014-06-06 12:30:47  sd-yyy
   3   M    276   2014-06-06 12:30:47  sd-zzz

C’est terminé. Votre cluster Proxmox est maintenant opérationnel !

 

Références et liens :

Proxmox Unicast : http://pve.proxmox.com/wiki/Multicast_notes#Use_unicast_instead_of_multicast

Proxmox cluster : http://pve.proxmox.com/wiki/Proxmox_VE_2.0_Cluster#Create_the_Cluster

21 réflexions sur « Cluster Proxmox chez Online.net (dedibox) »

  1. Super article ! par contre, l’unicast permet de créer un cluster de 4 nodes maximum, et apparement c est déconseillé …

    J’ai lu sur le net qu’il était possible de contourner le multicast en passant par du VPN, qu’en penses tu ? est ce que la solution est aussi propre ? peut tu m’en dire plus ?
    Mon but est de faire un cluster surtout pour la facilité d’administration

    1. Tout d’abord, merci pour ton commentaire !

      Pour répondre à tes questions, cette limitation est effectivement indiqué par la documentation de Proxmox : « Due to increased network traffic (compared to multicast) the number of supported nodes is limited, do not use it with more that 4 cluster nodes.  »

      Pour le VPN, j’ai pensé à cette solution mais ça rajoutais une couche supplémentaire qui n’aurais pas été sans conséquence sur les performances du cluster. Ce n’est pas abordée ici mais j’ai mis un firewall qui ne laisse passer que les communications entre les nodes pour les services de Proxmox. Et si tu veux mon avis je trouve ça plus propre de faire de l’unicast (avec la limite de 4 nodes) que de mettre en place un vpn.

      Cet article représente une solution que j’ai réellement mise en place et fonctionne en production depuis plus d’un an avec un uptime de 414 jours et en Proxmox 3.4 depuis les dernières mises à jour. Il y à des VM Linux et quelques Windows

      Ce que je peux te conseiller est de prendre des serveurs comptaibles RPN et de prendre l’option RPN (Option business + RPN-G). Je ne sais pas si ça supporte le multicast mais en tout cas ça rajoute une couche de sécurité et ça permet de libérer de la bande passante pour la liaison avec internet.

      Pour terminer, le RPN-SAN te permettras de pouvoir faire du vrai cluster et même de la haute disponibilité. Tout ça rajoute par contre un coût non négligeable.

      Option business (pour accèder au RPN-G) : 20 € / mois
      Option RPN-G : 1,99 € / mois
      RPN-SAN 1 To : 19,99 € /mois ou 99,95 € /mois pour 5 To

      1. Merci pour ta réponse.

        Je suis d’accord avec toi sur le fait que l unicast est propre que la solution VPN. Le souci étant cette limite de 4 noeuds, pas acceptable pour nous (nous souhaitons gérer une grappe de + 100 serveurs dédiés Online.net)

        Nous savons maintenant qu’il nest pas possible de faire du multicast avec le RPN ( et qu’il ne le sera jamais ), La question est plutôt celle ci :

        est ce que la solution RPN+VPN est une solution couteuse en terme de performances ????

        (VPN pour bypasser les limites de l unicast et RPN pour que les serveurs puissent communiquer sur un reseau privé sans bouffer les ressources réseau externes)

        Existe il une solution plus élégante dans un cas : nbnodes > 4 ?

  2. Bonjour,
    je viens de suivre se magnifique tuto à la lettre néanmoins je reste toujours planté sur le quorum !! timed-out waiting for cluster qui me rend fou de chez fou.
    je les ais bien redémarrer en même temps .
    Que faire …

    1. Merci pour le compliment !

      Pour le bug, est-ce que le fichier /etc/hosts est bien modifié avec les noms des 3 serveurs ? Je ne sais pas si c’est lié mais est-ce que les serveurs sont dans le même datacenter ? Avez-vous essayé de redémarrer les serveurs pour relancer la commande pvecm add sd-xxx ?

      1. j’essaye de faire un cluster avec 4 nodes de 3 serveurs identique et un autre plus puissant.. j ai reset tous les serveurs ce matin et je vais réessayer avec les 3 identiques car j ai remarqué que le serveur plus puissant redémarrai les services plus rapidement . je test et je tien au courant 😉

        1. Donc me revoilà, j ai bien mes serveurs dans le même datacenter , j ai rebooté les serveurs après avoir modifié les fichiers host.
          je pense que je vais devoir passer par openvpn car je n i arrive pas du tout et je ne comprend pas pourquoi :@

          1. Ils se « pingent » bien entre eux (via les nom des machines sd-xxx ) ?
            Que disent les fichiers de logs ?

  3. ok, bon je vien de voir que le node ajouté c’est mis dans l’ancien fichier de cluster.conf et non dans le cluster.conf.new.. pourtant j ai bien activer la nouvelle configuration c ‘est étrange!

  4. YALLAAAAAAA
    j ai compris !! en faite le fichier de config n’arrivai pas a être actif donc pas d' »udpu »
    j ai donc recommencé la configue mais au lieu de sauvegarde le fichier configue je l ai modifié directement .. et là , magie!! CA fonctionne je suis aux anges merci merci merci

    1. Voici la réponse concernant le multicast sur le RPN : « SébFM ‏@Online_Sebfm :
      @flobaoti @Waccabac @online_fr Non, il faut bien de l’unicast, pas de multicast sur le RPN. 🙂 »

      Donc, oui tu suis le tutoriel sans rien changer.

  5. Une petite question que consiste la réalisation d’un cluster ? de pouvoir créer une machine basé sur les ressource des 3 nodes? exemple un serveur 192GB de ram ?

    1. Très bonne question. Ce n’est pas du « cloud », tu ne peux pas additionner les ressources.
      Cela sert à centraliser la gestion des machines virtuelles, de pouvoir les déplacer à chaud (Live Migration) et même faire de la haute disponibilité (si un des serveurs physique tombe, un autre aura pris le relais).

  6. Bonjour!

    Vous obtenez quoi comme débit en utilisant un RPN SAN au Gbit/s ? 120 Mo/s ?

    Vous utilisez donc un seul storage en iSCSI avec un volume LVM ? Ensuite vous pouvez toujours allumer la VM à partir d’un autre host en cas de défaillance d’un ?

    Merci pour vos réponses 🙂 et pour votre tuto tellement utile!

    Yann

    1. Je n’ai pas utilisé le RPN, mais c’est effectivement le débit théorique d’une liaison 1 Gbit/s. De la même façon, je ne connais pas le débit proposé par le RPN SAN.
      Je vais peut-être m’en servir dans un prochain projet…

      1. Nous avons utilisé le RPN SAN pour un de nos clients et avons été déçu coté performances. Les IOPS sont très correctes mais pas très stables (de temps en temps il y a de gros ralentissements)… Leur solution « home made » est un peu floue j’aimerai bien en savoir plus

        donc nous allons passer sur une solution DEDIRACK + San Equallogic qui nous permettra de connecter notre SAN en RPN sur nos DEDIBOX. Cette solution devient interessante à partir de 20 To

Répondre à droide Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.