Outils personnels

Proxmox 2.x - Installation, cluster (avec GlusterFS) : Différence entre versions

De wikiGite

(Page créée avec « = Proxmox 2.1 sur Squeeze par les paquets deb = D'après http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Squeeze == Installation sur chaque serveur == Installer une... »)
 
(Fencing)
 
(33 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
= Proxmox 2.1 sur Squeeze par les paquets deb =
+
== Installation à partir des ISO ==
 +
Le problème de l'installation à partir des CD est que le partitionnement est automatique, et impossible à modifier. Jusqu'à la version 2, la partition root était un pourcentage de l'espace total, ce qui pouvait amener à avoir des centaines de Go pour le système ! Depuis la version 2.xx, la partition racine semble être dimensionnée à une centaine de Go quelque soit la taille disponible. Mais c'est encore énorme, pour un système qui n'a besoin que d'à peine 800Mb de base ! Mais admettons...
 +
 
 +
L'installation est on ne peut plus simple : graver l'ISO téléchargée chez Proxmox (http://pve.proxmox.com/wiki/Downloads), booter sur le CD, suivre les indications... Voilà.
 +
 
 +
== Installation manuelle sur Squeeze par les paquets deb ==
 +
 
 
D'après http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Squeeze
 
D'après http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Squeeze
  
== Installation sur chaque serveur ==
+
Installer une Squeeze de base, avec une partition root (10Go minimum) et une partition LVM (Volum Group "pve", et un volume logique "data" pour respecter leurs nommages) montée sur /var/lib/vz qui recevra les machines virtuelles. Avec la Squeeze, on peut utiliser ext3 ou ext4.
Installer une Squeeze de base
 
  
 
Editer /etc/apt/sources.list
 
Editer /etc/apt/sources.list
Ligne 15 : Ligne 20 :
 
  apt-get update
 
  apt-get update
 
  aptitude full-upgrade
 
  aptitude full-upgrade
 +
 +
Activer l'IP forwarding :
 +
echo 1 > /proc/sys/net/ipv4/ip_forward
 +
Et enregistrer la modification dans /etc/sysctl.conf pour les prochains redémarrages :
 +
net.ipv4.ip_forward=1
  
 
Installer le noyau Proxmox
 
Installer le noyau Proxmox
 
  aptitude search pve-kernel # trouver le noyau pve le plus récent
 
  aptitude search pve-kernel # trouver le noyau pve le plus récent
 
  aptitude install pve-firmware
 
  aptitude install pve-firmware
  aptitude install pve-kernel-2.6.32-14-pve
+
  aptitude install pve-kernel-2.6.32-19-pve
 
  reboot
 
  reboot
 
  uname -a # vérifier que le noyau PVE est chargé
 
  uname -a # vérifier que le noyau PVE est chargé
   Linux proxmox1 2.6.32-14-pve #1 SMP Tue Aug 21 08:24:37 CEST 2012 x86_64 GNU/Linux
+
   Linux proxmox1 2.6.32-19-pve #1 SMP [.....] x86_64 GNU/Linux
  
Vérifier que le nom du serveur correspond bien à son ip dans le fichier /etc/hosts, exemple :
+
'''IMPORTANT''' : vérifier que le nom du serveur correspond bien à son ip dans le fichier /etc/hosts, exemple :
 
  10.0.0.2        proxmox1.localdomain      proxmox1
 
  10.0.0.2        proxmox1.localdomain      proxmox1
 +
L'installation de Proxmox cherche l'adresse IP et le nom de serveur dans /etc/hosts.
  
 
Installer Proxmox VE
 
Installer Proxmox VE
 
  aptitude install proxmox-ve-2.6.32
 
  aptitude install proxmox-ve-2.6.32
et activer l'interface webUI
+
Si quelque chose s'est mal passé pendant l'installation, corriger le problème et finir l'installation par
 +
apt-get install -f
 +
 
 +
Activer l'interface webUI
 
  a2ensite pve-redirect.conf
 
  a2ensite pve-redirect.conf
 
  /etc/init.d/apache2 restart
 
  /etc/init.d/apache2 restart
  
 
Installer le reste des paquets nécessaires
 
Installer le reste des paquets nécessaires
  aptitude install ntp ssh lvm2 postfix ksm-control-daemon vzprocps
+
  aptitude install ntp ssh lvm2 postfix ksm-control-daemon vzprocps open-iscsi
 
Accepter le remplacement d'Exim, paramétrer Postfix selon le réseau ("site internet" par défaut)
 
Accepter le remplacement d'Exim, paramétrer Postfix selon le réseau ("site internet" par défaut)
  
Ligne 42 : Ligne 56 :
 
Dans l'onglet réseau, enlever les paramètres d'eth0, paramétrer le bridge vmbr0 (eth0 en "bridge port")
 
Dans l'onglet réseau, enlever les paramètres d'eth0, paramétrer le bridge vmbr0 (eth0 en "bridge port")
  
''BUG'': la fenêtre de configuration du réseau n'accepte pas le masque 255.0.0.0. Mettre 255.255.0.0 et modifier à la main dans le fichier de config. (/etc/network/interfaces.new) avant reboot.
+
'''Note''' : Proxmox VE copie le fichier de configuration (ici /etc/network/interfaces, mais c'est ne même principe pour les fichiers proxmox eux-mêmes dans /etc/pve) en <nom_du_fichier>.new. Au prochain redémarrage, ces fichiers prendront la place des fichiers des "vrais" et la nouvelle configuration sera prise en compte durant le boot du système.
 +
 
 +
<!-- ''BUG'': la fenêtre de configuration du réseau n'accepte pas le masque 255.0.0.0. Mettre 255.255.0.0 et modifier à la main dans le fichier de config. (/etc/network/interfaces.new) avant reboot.
 +
(dépanné depuis la 2.xx) -->
  
Le fichier interfaces doit ressembler à ça (ATTENTION AU "bridge_stp on" et pas "off") :
+
Le fichier interfaces.new doit ressembler à ça (ATTENTION AU "bridge_stp on" et pas "off") :
 
  # network interface settings
 
  # network interface settings
 
  auto lo
 
  auto lo
Ligne 67 : Ligne 84 :
 
  bridge_fd 0
 
  bridge_fd 0
  
=====================================
+
'''TIPS''' : Pour lier 2 cartes réseau et faire du [https://fr.wikipedia.org/wiki/Agr%C3%A9gation_de_liens|"bonding"], éditer manuellement ce fichier (au besoin, le créer en copiant le fichier interfaces) et modifier la configuration en ajoutant "bond0" pour lier eth0 et eth1 par exemple, et lier vmbr0 à cette nouvelle interface :
== CLUSTER ==
+
# network interface settings
== Création du cluster ==
+
auto lo
 +
iface lo inet loopback
 +
 
 +
iface eth0 inet manual
 +
 
 +
iface eth1 inet manual
 +
 
 +
auto bond0
 +
iface '''bond0''' inet manual
 +
'''slaves eth0 eth1'''
 +
bond_miimon 100
 +
        bond_mode active-backup
 +
 +
auto vmbr0
 +
iface vmbr0 inet static
 +
address  10.0.0.2
 +
netmask  255.0.0.0
 +
gateway  10.0.0.254
 +
bridge_ports '''bond0'''
 +
bridge_stp '''off'''
 +
bridge_fd 0
 +
 
 +
Activer la configuration :
 +
reboot
 +
 
 +
== Mise en cluster ==
 +
=== Création du cluster ===
 
  D'après http://pve.proxmox.com/wiki/Proxmox_VE_2.0_Cluster
 
  D'après http://pve.proxmox.com/wiki/Proxmox_VE_2.0_Cluster
  
Ligne 83 : Ligne 126 :
 
Après échange de clés, le nouveau noeud doit apparaitre dans l'interface web.
 
Après échange de clés, le nouveau noeud doit apparaitre dans l'interface web.
  
''Attention'', les clés SSL ont changé pendant ce processus, vider le cache du navigateur et se reconnecter à l'interface.
+
''Attention'', les clés SSL des noeuds "secondaires" ont changé pendant ce processus (identiques sur tous les noeuds à celles du premier noeud), vider le cache du navigateur et se reconnecter à l'interface.
  
== Fencing ==
+
=== Fencing ===
le "fencing" est l'action pour une machine d'interagir sur une autre host en l'arrêtant, ou la redémarrant, via un "fencing device" souvent implémenté par les contructeurs sur des "management cards".
+
le "fencing" est l'action pour une machine d'interagir sur une autre host en l'arrêtant, ou le redémarrant, via un "fencing device" souvent implémenté par les contructeurs sur des "management cards" (BMC, DRAC, ILO, ...).
  
 
''La configuration des fencing devices sur Proxmox est manuelle.''
 
''La configuration des fencing devices sur Proxmox est manuelle.''
  
D'abord, tester si les fencing device sont joignables et si on a les bons paramètres. Proxmox installe les outils pour la plupart des cartes connues, exemple :
+
D'abord, tester si les fencing device sont joignables et si on a les bons paramètres. Proxmox installe les outils pour la plupart des cartes connues, exemple : <br/>
 +
(On utilise fence_ilo ici, mais cette commande varie en fonction de la marque du matériel (ex: fence_drac, fence_ipmi...). fence_ilo est associé au matériel '''HP''')
 
  fence_ilo -o status -a 192.168.0.2 -l admin -p mot_de_passe
 
  fence_ilo -o status -a 192.168.0.2 -l admin -p mot_de_passe
 
   Status: ON
 
   Status: ON
Pour IPMI, installer ipmitool
+
Pour un matériel '''IPMI''' (par exemple Dell iDrac), installer ipmitool
 
  apt-get install ipmitool
 
  apt-get install ipmitool
 
Puis:
 
Puis:
 
  fence_ipmilan -a 192.168.0.2 -l admin -p mot_de_passe -o status
 
  fence_ipmilan -a 192.168.0.2 -l admin -p mot_de_passe -o status
 
   Getting status of IPMI:192.168.0.2...Chassis power = On
 
   Getting status of IPMI:192.168.0.2...Chassis power = On
 +
 +
Pour un Dell iDrac7, ajouter les argument "-P" et "-C 2"
 +
fence_ipmilan -a 192.168.0.2 -l root -p root -o status -P -C 2
  
 
Sur tous les noeuds :
 
Sur tous les noeuds :
Ligne 112 : Ligne 159 :
 
  <cluster name="hpiloclust" config_version="'''2'''">
 
  <cluster name="hpiloclust" config_version="'''2'''">
 
Ajouter la definition des fencing devices à utiliser, juste après </clusternodes>
 
Ajouter la definition des fencing devices à utiliser, juste après </clusternodes>
<fencedevices>
+
<fencedevices>
         <fencedevice agent="fence_ilo" hostname="nomDNS_du_fencing_device_nodeA" login="admin" name="fenceNodeA" passwd="mot_de_passe"/>
+
         <fencedevice agent="fence_ipmilan" hostname="nomDNS_du_fencing_device_nodeA" login="admin" name="fenceNodeA" passwd="mot_de_passe"/>
         <fencedevice agent="fence_drac" ipaddr="IP_du_fencing_device_nodeB" login="admin" name="fenceNodeB" passwd="mot_de_passe"/>
+
         <fencedevice agent="fence_idrac" ipaddr="IP_du_fencing_device_nodeB" login="admin" name="fenceNodeB" passwd="mot_de_passe"/>
</fencedevices>
+
</fencedevices>
 
Noter l'utilisation de "hostname" ou "ipaddr" selon ce qu'on choisit d'indiquer.
 
Noter l'utilisation de "hostname" ou "ipaddr" selon ce qu'on choisit d'indiquer.
  
 
Puis, enlever le "/" à la fin de chaque stanza "clusternode" (au singulier) et lier le "fence device" au "clusternode" :
 
Puis, enlever le "/" à la fin de chaque stanza "clusternode" (au singulier) et lier le "fence device" au "clusternode" :
<clusternode name="nodeA.your.domain" nodeid="1" votes="1">
+
<clusternode name="nodeA.your.domain" nodeid="1" votes="1">
 
   <fence>
 
   <fence>
 
       <method name="1">
 
       <method name="1">
Ligne 125 : Ligne 172 :
 
       </method>
 
       </method>
 
   </fence>
 
   </fence>
</clusternode>
+
</clusternode>
<clusternode name="nodeB.your.domain" nodeid="2" votes="1">
+
<clusternode name="nodeB.your.domain" nodeid="2" votes="1">
 
   <fence>
 
   <fence>
 
       <method name="1">
 
       <method name="1">
Ligne 132 : Ligne 179 :
 
       </method>
 
       </method>
 
   </fence>
 
   </fence>
</clusternode>
+
</clusternode>
  
 
Valider la nouvelle configuration :
 
Valider la nouvelle configuration :
  ccs_config_validate -v -f cluster.conf.new
+
  ccs_config_validate -v -f /etc/pve/cluster.conf.new
  
Sauvegarder et aller sur l'interface graphique, sélectionner le datacenter à gauche puis l'onglet HA.
+
Aller sur l'interface graphique, sélectionner le datacenter à gauche puis l'onglet HA.
  
Il charge alors le cluster.conf.new, vérifie la syntaxe (corriger les erreurs éventuelles qu'il affiche avec numéro de ligne et colonne) et affiche en bas les modifications à faire. Si c'est OK, cliquer sur Activer.
+
Il charge alors le cluster.conf.new, vérifie la syntaxe (corriger les erreurs éventuelles qu'il affiche avec numéro de ligne et colonne) et affiche en bas les modifications à faire. Si c'est OK, cliquer sur Activer (bouton "Activate" dans la barre de menu).
  
== Haute disponibilité ==
+
=== Haute disponibilité ===
 
Pour qu'une VM soit prise en compte dans la haute dispo (migration en cas de crash), sélectionner le datacenter à gauche, onglet "HA", bouton "Ajouter", une "VM/CT gérée par HA"
 
Pour qu'une VM soit prise en compte dans la haute dispo (migration en cas de crash), sélectionner le datacenter à gauche, onglet "HA", bouton "Ajouter", une "VM/CT gérée par HA"
  
Ligne 150 : Ligne 197 :
 
Des erreurs de migrations (mauvaise configuration, etc...) peuvent "verrouiller" la VM et empêcher des migrations futures (erreur 254 en général). Pour débloquer il faut stopper la VM proprement pour ne rien perdre, puis clic droit sur la VM à gauche et "Stopper" (le bouton Stopper n'est pas disponible en haut à droite à ce moment, que dans le menu contextuel)
 
Des erreurs de migrations (mauvaise configuration, etc...) peuvent "verrouiller" la VM et empêcher des migrations futures (erreur 254 en général). Pour débloquer il faut stopper la VM proprement pour ne rien perdre, puis clic droit sur la VM à gauche et "Stopper" (le bouton Stopper n'est pas disponible en haut à droite à ce moment, que dans le menu contextuel)
  
==================================================
+
=== GLusterFS ===
== GLusterFS ==
 
 
Glusterfs permet très simplement et de façon fiable d'avoir un système de fichiers partagé, répliqué et/ou distribué entre plusieurs serveurs. Le répertoire géré par GlusterFS sera vu comme un partage NFS dans Proxmox.
 
Glusterfs permet très simplement et de façon fiable d'avoir un système de fichiers partagé, répliqué et/ou distribué entre plusieurs serveurs. Le répertoire géré par GlusterFS sera vu comme un partage NFS dans Proxmox.
  
Ligne 157 : Ligne 203 :
  
 
Sur tous les noeuds :
 
Sur tous les noeuds :
 +
<!--
 
  echo "deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free" >> /etc/apt/sources.list
 
  echo "deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free" >> /etc/apt/sources.list
 
  echo "deb http://security.debian.org/ wheezy/updates main contrib non-free" >> /etc/apt/sources.list
 
  echo "deb http://security.debian.org/ wheezy/updates main contrib non-free" >> /etc/apt/sources.list
Ligne 170 : Ligne 217 :
 
Commenter les lignes wheezy ajoutées pour éviter des problèmes de mises à jour par la suite
 
Commenter les lignes wheezy ajoutées pour éviter des problèmes de mises à jour par la suite
 
  sed -iE "s/\(.*wheezy.*\)/#\1/g" /etc/apt/sources.list
 
  sed -iE "s/\(.*wheezy.*\)/#\1/g" /etc/apt/sources.list
  aptitude update
+
  aptitude update -->
 +
 
 +
Ajouter la clé gluster.org :
 +
wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/Debian/gpg.key | apt-key add -
 +
Ajouter le dépôt Glusterfs :
 +
vi /etc/apt/sources.list.d/glusterfs.list
 +
  deb http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/Debian/squeeze.repo squeeze main
 +
Et installer le serveur (le client suivra en dépendance) :
 +
aptitude install glusterfs-server
  
 
Préparer le terrain :
 
Préparer le terrain :
 
  mkdir /var/lib/glusterfs
 
  mkdir /var/lib/glusterfs
service glusterd start
+
<!-- service glusterd start
  update-rc.d glusterd defaults
+
  update-rc.d glusterd defaults -->
  
 
'''Sur un seul des noeuds''', connecter un ou plusieurs autres noeuds et créer un volume. Exemple, à partir de "node1", on ajoute "node2" et on crée un volume répliqué sur les 2 machines (RAID1) :
 
'''Sur un seul des noeuds''', connecter un ou plusieurs autres noeuds et créer un volume. Exemple, à partir de "node1", on ajoute "node2" et on crée un volume répliqué sur les 2 machines (RAID1) :
Ligne 189 : Ligne 244 :
 
Dans l'interface, Créer un stockage NFS, '''sur localhost''' : le volume gluster est vu tout de suite comme partage NFS, et monté en localhost sur tous les noeuds.
 
Dans l'interface, Créer un stockage NFS, '''sur localhost''' : le volume gluster est vu tout de suite comme partage NFS, et monté en localhost sur tous les noeuds.
  
== TIPS ==
 
 
=== Fonctionnement du cluster ===
 
=== Fonctionnement du cluster ===
 
le répertoire /etc/pve est en réalité un device FUSE (monté en mémoire, en espace utilisateur) afin d'être répliqué par Corosync et sauvegardé sur disque dans une base SQLite.
 
le répertoire /etc/pve est en réalité un device FUSE (monté en mémoire, en espace utilisateur) afin d'être répliqué par Corosync et sauvegardé sur disque dans une base SQLite.
Ligne 209 : Ligne 263 :
 
  clusvcadm -M pvevm:101 -m proxmox2
 
  clusvcadm -M pvevm:101 -m proxmox2
  
 +
== TIPS ==
 
=== Drivers virtio pour Windows ===
 
=== Drivers virtio pour Windows ===
 
Charger l'iso virtio-win : http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
 
Charger l'iso virtio-win : http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers

Version actuelle datée du 19 novembre 2014 à 14:41

Installation à partir des ISO

Le problème de l'installation à partir des CD est que le partitionnement est automatique, et impossible à modifier. Jusqu'à la version 2, la partition root était un pourcentage de l'espace total, ce qui pouvait amener à avoir des centaines de Go pour le système ! Depuis la version 2.xx, la partition racine semble être dimensionnée à une centaine de Go quelque soit la taille disponible. Mais c'est encore énorme, pour un système qui n'a besoin que d'à peine 800Mb de base ! Mais admettons...

L'installation est on ne peut plus simple : graver l'ISO téléchargée chez Proxmox (http://pve.proxmox.com/wiki/Downloads), booter sur le CD, suivre les indications... Voilà.

Installation manuelle sur Squeeze par les paquets deb

D'après http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Squeeze

Installer une Squeeze de base, avec une partition root (10Go minimum) et une partition LVM (Volum Group "pve", et un volume logique "data" pour respecter leurs nommages) montée sur /var/lib/vz qui recevra les machines virtuelles. Avec la Squeeze, on peut utiliser ext3 ou ext4.

Editer /etc/apt/sources.list

  • Ajouter "contrib" aux lignes "[...] squeeze main" s'il n'y est pas déjà
  • Ajouter :
# PVE packages provided by proxmox.com
deb http://download.proxmox.com/debian squeeze pve

Charger la clé de signature des paquets Proxmox

wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -
apt-get update
aptitude full-upgrade

Activer l'IP forwarding :

echo 1 > /proc/sys/net/ipv4/ip_forward

Et enregistrer la modification dans /etc/sysctl.conf pour les prochains redémarrages :

net.ipv4.ip_forward=1

Installer le noyau Proxmox

aptitude search pve-kernel # trouver le noyau pve le plus récent
aptitude install pve-firmware
aptitude install pve-kernel-2.6.32-19-pve
reboot
uname -a # vérifier que le noyau PVE est chargé
  Linux proxmox1 2.6.32-19-pve #1 SMP [.....] x86_64 GNU/Linux

IMPORTANT : vérifier que le nom du serveur correspond bien à son ip dans le fichier /etc/hosts, exemple :

10.0.0.2        proxmox1.localdomain       proxmox1

L'installation de Proxmox cherche l'adresse IP et le nom de serveur dans /etc/hosts.

Installer Proxmox VE

aptitude install proxmox-ve-2.6.32

Si quelque chose s'est mal passé pendant l'installation, corriger le problème et finir l'installation par

apt-get install -f

Activer l'interface webUI

a2ensite pve-redirect.conf
/etc/init.d/apache2 restart

Installer le reste des paquets nécessaires

aptitude install ntp ssh lvm2 postfix ksm-control-daemon vzprocps open-iscsi

Accepter le remplacement d'Exim, paramétrer Postfix selon le réseau ("site internet" par défaut)

Accéder à l'interface d'admin (login root du serveur)

https://<adresse du serveur>:8006/

Dans l'onglet réseau, enlever les paramètres d'eth0, paramétrer le bridge vmbr0 (eth0 en "bridge port")

Note : Proxmox VE copie le fichier de configuration (ici /etc/network/interfaces, mais c'est ne même principe pour les fichiers proxmox eux-mêmes dans /etc/pve) en <nom_du_fichier>.new. Au prochain redémarrage, ces fichiers prendront la place des fichiers des "vrais" et la nouvelle configuration sera prise en compte durant le boot du système.


Le fichier interfaces.new doit ressembler à ça (ATTENTION AU "bridge_stp on" et pas "off") :

# network interface settings
auto lo
iface lo inet loopback

iface eth0 inet manual
	broadcast  10.255.255.255
	network 10.0.0.0
	dns-nameservers 10.0.0.254
	dns-search local.systea.net
# dns-* options are implemented by the resolvconf package, if installed

iface eth1 inet manual

auto vmbr0
iface vmbr0 inet static
	address  10.0.0.2
	netmask  255.0.0.0
	gateway  10.0.0.254
	bridge_ports eth0
	bridge_stp on
	bridge_fd 0

TIPS : Pour lier 2 cartes réseau et faire du "bonding", éditer manuellement ce fichier (au besoin, le créer en copiant le fichier interfaces) et modifier la configuration en ajoutant "bond0" pour lier eth0 et eth1 par exemple, et lier vmbr0 à cette nouvelle interface :

# network interface settings
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
auto bond0
iface bond0 inet manual
	slaves eth0 eth1
	bond_miimon 100
       bond_mode active-backup

auto vmbr0
iface vmbr0 inet static
	address  10.0.0.2
	netmask  255.0.0.0
	gateway  10.0.0.254
	bridge_ports bond0
	bridge_stp off
	bridge_fd 0

Activer la configuration :

reboot

Mise en cluster

Création du cluster

D'après http://pve.proxmox.com/wiki/Proxmox_VE_2.0_Cluster

Si les DNS ne sont pas disponibles sur le réseau, paramétrer /etc/hosts sur chaque serveur du cluster pour qu'ils se reconnaissent entre eux (IP et nom).

Créer le cluster sur un des noeuds

pvecm create YOUR-CLUSTER-NAME

Et vérifier :

pvecm status

Aller sur chacun des autres noeuds et les ajouter au cluster

pvecm add IP-DU-PREMIER-NOEUD-DU-CLUSTER

Après échange de clés, le nouveau noeud doit apparaitre dans l'interface web.

Attention, les clés SSL des noeuds "secondaires" ont changé pendant ce processus (identiques sur tous les noeuds à celles du premier noeud), vider le cache du navigateur et se reconnecter à l'interface.

Fencing

le "fencing" est l'action pour une machine d'interagir sur une autre host en l'arrêtant, ou le redémarrant, via un "fencing device" souvent implémenté par les contructeurs sur des "management cards" (BMC, DRAC, ILO, ...).

La configuration des fencing devices sur Proxmox est manuelle.

D'abord, tester si les fencing device sont joignables et si on a les bons paramètres. Proxmox installe les outils pour la plupart des cartes connues, exemple :
(On utilise fence_ilo ici, mais cette commande varie en fonction de la marque du matériel (ex: fence_drac, fence_ipmi...). fence_ilo est associé au matériel HP)

fence_ilo -o status -a 192.168.0.2 -l admin -p mot_de_passe
 Status: ON

Pour un matériel IPMI (par exemple Dell iDrac), installer ipmitool

apt-get install ipmitool

Puis:

fence_ipmilan -a 192.168.0.2 -l admin -p mot_de_passe -o status
 Getting status of IPMI:192.168.0.2...Chassis power = On

Pour un Dell iDrac7, ajouter les argument "-P" et "-C 2"

fence_ipmilan -a 192.168.0.2 -l root -p root -o status -P -C 2

Sur tous les noeuds : vi /etc/default/redhat-cluster-pve

FENCE_JOIN="yes"

Joindre le noeud au domaine de fencing

fence_tool join
fence_tool ls

Sur un des noeuds, on va modifier cluster.conf. On commence par le copier en .new et on édite celui-ci

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

Première chose : augmenter le "config_version", sinon le fichier ne sera pas répliqué sur les autres noeuds !

<cluster name="hpiloclust" config_version="2">

Ajouter la definition des fencing devices à utiliser, juste après </clusternodes>

<fencedevices>
       <fencedevice agent="fence_ipmilan" hostname="nomDNS_du_fencing_device_nodeA" login="admin" name="fenceNodeA" passwd="mot_de_passe"/>
       <fencedevice agent="fence_idrac" ipaddr="IP_du_fencing_device_nodeB" login="admin" name="fenceNodeB" passwd="mot_de_passe"/>
</fencedevices>

Noter l'utilisation de "hostname" ou "ipaddr" selon ce qu'on choisit d'indiquer.

Puis, enlever le "/" à la fin de chaque stanza "clusternode" (au singulier) et lier le "fence device" au "clusternode" :

<clusternode name="nodeA.your.domain" nodeid="1" votes="1">
  <fence>
      <method name="1">
         <device name="fenceNodeA" action="reboot"/>
      </method>
  </fence>
</clusternode>
<clusternode name="nodeB.your.domain" nodeid="2" votes="1">
  <fence>
      <method name="1">
         <device name="fenceNodeB" action="reboot"/>
      </method>
  </fence>
</clusternode>

Valider la nouvelle configuration :

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

Aller sur l'interface graphique, sélectionner le datacenter à gauche puis l'onglet HA.

Il charge alors le cluster.conf.new, vérifie la syntaxe (corriger les erreurs éventuelles qu'il affiche avec numéro de ligne et colonne) et affiche en bas les modifications à faire. Si c'est OK, cliquer sur Activer (bouton "Activate" dans la barre de menu).

Haute disponibilité

Pour qu'une VM soit prise en compte dans la haute dispo (migration en cas de crash), sélectionner le datacenter à gauche, onglet "HA", bouton "Ajouter", une "VM/CT gérée par HA"

Indiquer l'ID de la VM à prendre en compte.

Valider, Activer la modification.

Des erreurs de migrations (mauvaise configuration, etc...) peuvent "verrouiller" la VM et empêcher des migrations futures (erreur 254 en général). Pour débloquer il faut stopper la VM proprement pour ne rien perdre, puis clic droit sur la VM à gauche et "Stopper" (le bouton Stopper n'est pas disponible en haut à droite à ce moment, que dans le menu contextuel)

GLusterFS

Glusterfs permet très simplement et de façon fiable d'avoir un système de fichiers partagé, répliqué et/ou distribué entre plusieurs serveurs. Le répertoire géré par GlusterFS sera vu comme un partage NFS dans Proxmox.

http://gluster.org/community/documentation//index.php/Main_Page

Sur tous les noeuds :

Ajouter la clé gluster.org :

wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/Debian/gpg.key | apt-key add -

Ajouter le dépôt Glusterfs :

vi /etc/apt/sources.list.d/glusterfs.list
  deb http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/Debian/squeeze.repo squeeze main

Et installer le serveur (le client suivra en dépendance) :

aptitude install glusterfs-server

Préparer le terrain :

mkdir /var/lib/glusterfs

Sur un seul des noeuds, connecter un ou plusieurs autres noeuds et créer un volume. Exemple, à partir de "node1", on ajoute "node2" et on crée un volume répliqué sur les 2 machines (RAID1) :

gluster peer probe node2
gluster volume create glusterstorage replica 2 node1:/var/lib/glusterfs node2:/var/lib/glusterfs
gluster volume start glusterstorage

Pour ajouter un serveur (une "brique") par la suite, sur n'importe lequel des noeud existant taper :

gluster peer probe node3
gluster volume add-brick glusterstorage replica 3 proxmox3:/var/lib/glusterfs
gluster volume info

Dans l'interface, Créer un stockage NFS, sur localhost : le volume gluster est vu tout de suite comme partage NFS, et monté en localhost sur tous les noeuds.

Fonctionnement du cluster

le répertoire /etc/pve est en réalité un device FUSE (monté en mémoire, en espace utilisateur) afin d'être répliqué par Corosync et sauvegardé sur disque dans une base SQLite.

On modifie (ou l'interface modifie) les fichiers en créant une copie en .new. Au moment de la validation (ou du reboot, comme pour la configuration réseau) ce fichier remplace le "vrai" et celui-ci est répliqué sur tous les noeuds.

Pour basculer toutes les VM sur un autre host (pour maintenance par exemple) arrêter le Resource Group manager (par l'interface, onglet Services, ou en ligne de commande "/etc/init.d/rgmanager stop").

Ligne de commande

clustat # Etat du cluster
ccs_config_validate -v -f /etc/pve/cluster.conf.new # Validation des modifications apportées
ccs_tool lsnode -v # Détail des noeuds

Migration à froid (arrêt de la VM avant migration, ou pour une VM déjà arrêtée)

clusvcadm -r pvevm:101 -m proxmox2

Migration à chaud

clusvcadm -M pvevm:101 -m proxmox2

TIPS

Drivers virtio pour Windows

Charger l'iso virtio-win : http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers

pendant l'install de Windows dans la VM, l'écran de sélection de disque n'affiche aucun préiphérique. Sur la VM, dans l'interface web, changer le CD et charger virtio-win. Demander à l'installateur windows de parcourir ce CD, sélectionner la version win voulue et charger les drivers redhat*. Une fois chargés, Windows doit voir le disque. Remettre le CD Windows dans le lecteur virtuel.

Clavier français dans les consoles VNC

Dans l'onglet options du datacenter, forcer le clavier en French. Si ça ne suffit pas, sur les VM dans l'onglet Matériel, faire de même (il faut redémarrer la VM dans ce cas)