Proxmox 2.x - Installation, cluster (avec GlusterFS) : Différence entre versions
De wikiGite
Ligne 2 : | Ligne 2 : | ||
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 == | == Installation sur chaque serveur == |
Version du 11 octobre 2012 à 17:06
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 Squeeze de base
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
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-14-pve reboot 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
Vérifier que le nom du serveur correspond bien à son ip dans le fichier /etc/hosts, exemple :
10.0.0.2 proxmox1.localdomain proxmox1
Installer Proxmox VE
aptitude install proxmox-ve-2.6.32
et 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
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")
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.
Le fichier interfaces 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
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 ont changé pendant ce processus, 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 la redémarrant, via un "fencing device" souvent implémenté par les contructeurs sur des "management cards".
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 :
fence_ilo -o status -a 192.168.0.2 -l admin -p mot_de_passe Status: ON
Pour IPMI, 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
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_ilo" 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"/>
</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 cluster.conf.new
Sauvegarder et 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.
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 :
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 aptitude update aptitude download multiarch-support aptitude download libssl1.0.0 wget http://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/5.0.3/glusterfs_3.3.0-1_amd64.deb dpkg -i multiarch-support_*_amd64.deb dpkg -i libssl1.0.0_*_amd64.deb dpkg -i glusterfs_3.3.0-1_amd64.deb
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 aptitude update
Préparer le terrain :
mkdir /var/lib/glusterfs service glusterd start 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) :
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.
TIPS
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
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)