# Proxmox 4.0 - Installation, configuration cluster

# <span class="mw-headline" id="bkmrk-installation-0">Installation</span>

L'installation se fait à partir de l'image ISO ([http://www.proxmox.com/downloads](http://www.proxmox.com/downloads)). L'installation est simple, se fait par une interface graphique mais ne propose toujours pas de partitionner manuellement les disques. La particularité de la version 4 est qu'on peu (enfin !) décider de la taille de la partition root et de celle des données. Au moment de sélectionner le disque où sera installé Proxmox, cliquer sur "options", indiquer au moins : taille de la swap (en Go, idéalement 2\*taille de la RAM) et taille de la partition root (20Go doivent suffire au système).

Une fois installé, l'accès à l'interface web se fait à l'adresse https://&lt;IP du serveur&gt;:8006

# <span class="mw-headline" id="bkmrk-configuration-0">Configuration</span>

### <span class="mw-headline" id="bkmrk-mises-%C3%A0-jour-0">Mises à jour</span>

Depuis la version 3, les éditeurs de Proxmox ont modifié les dépôts. Les dépôts configurés de base sont réservés aux clients qui ont souscrit au support de Proxmox. N'étant pas notre cas, il faut modifier les sources pour accéder aux dépôts gratuits. Dans source.list :

```
# vi /etc/apt/sources.list
```

Ajouter :

```
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use
deb <a class="external free" href="http://download.proxmox.com/debian" rel="nofollow">http://download.proxmox.com/debian</a> jessie pve-no-subscription
```

Puis supprimer le fichier qui contient le dépôt par défaut. Ceci évite des messages d'erreurs (connection refusée) lors des "apt-get update".

```
rm /etc/apt/sources.list.d/pve-enterprise.list
```

On peut maintenant effectuer les mises à jour

```
apt-get update
apt-get install debian-keyring debian-archive-keyring
apt-get dist-upgrade
```

"apt-get upgrade" met à jour les paquets ***mais pas le noyau***. C'est pourquoi on lui préfère dist-upgrade au moment de l'installation.

### <span class="mw-headline" id="bkmrk-fichiers-hosts-0">Fichiers hosts</span>

Il faut modifier les fichiers **/etc/hosts** sur chacun des noeuds qui seront ajoutés au cluster. Ceux-ci doivent contenir les adresses et noms de tous les noeuds. *Exemple :*

Sur le noeud "pm0" :

```
root@<strong>pm0</strong> : #cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
10.10.168.5    pm0.local           pm0  pvelocalhost
10.10.168.10   pm1.local           pm1
10.10.168.15   pm2.local           pm2
```

Sur un second noeud :

```
root@<strong>pm2</strong> : #cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
10.10.168.5    pm0.local           pm0  
10.10.168.10   pm1.local           pm1
10.10.168.15   pm2.local           pm2 pvelocalhost
```

### <span class="mw-headline" id="bkmrk-mise-en-cluster-0">Mise en cluster</span>

On considère ici deux machines Proxmox fraîchement installées à l'identique. Pour fonctionner en cluster, il faut définir un noeud Maître. Sur une des deux machines éxecuter

```
pvecm create <nom_du_cluster>
```

Pour vérifier la création du cluster, lancer

```
# pvecm status

Version: 6.2.0
Config Version: 1
Cluster Name: FWCluster
Cluster Id: 40372
Cluster Member: Yes
Cluster Generation: 4
Membership state: Cluster-Member
Nodes: 1
Expected votes: 1
Total votes: 1
Node votes: 1
Quorum: 1  
Active subsystems: 5
Flags: 
Ports Bound: 0  
Node name: herrena
Node ID: 1
Multicast addresses: 239.192.157.82  
Node addresses: 192.168.0.5
```

Une fois le cluster créé, il faut ajouter la seconde machine. Pour cela, **sur le second Proxmox**, lancer la commande :  
(où l'adresse IP correspond à celle du nœud Maître)

```
pvecm add <adresse_du_maitre>
```

Echangez les clés, puis vérifier l'ajout

```
pvecm status
```

Si cette commande fonctionne sur le second nœud, l'ajout a fonctionné. On peut s'en assurer en regardant dans la sortie de la commande précédente, la ligne :

```
Nodes: 2
```

### <span class="mw-headline" id="bkmrk-fencing-0">Fencing</span>

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, ...). Depuis la version 4, le fencing est géré par Watchdog et est **automatiquement configuré**. Joie et bonheur. Si le matériel dispose d'un watchdog, il est détecté et utilisé. Sinon Proxmox utilise le module linux softdog.

### <span class="mw-headline" id="bkmrk-glusterfs-0">GLusterFS</span>

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 soit comme une partition GlusterFS (Proxmox 3, par la librairie glusterfs), soit comme un partage NFS (fourni par GlusterFS).

[http://gluster.org/community/documentation//index.php/Main\_Page](http://gluster.org/community/documentation//index.php/Main_Page)

Sur tous les noeuds :

Ajouter la clé gluster.org et le dépôt Glusterfs :

```
wget -O - <a class="external free" href="http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.6/pub.key" rel="nofollow">http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.6/pub.key</a> | apt-key add -
echo deb <a class="external free" href="http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.6/Debian/jessie/apt" rel="nofollow">http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.6/Debian/jessie/apt</a> jessie main > /etc/apt/sources.list.d/gluster.list 
apt-get update
```

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

```
aptitude install glusterfs-server
```

Préparer le terrain (la partition partagée sera dans le volume des VMs de Proxmox):

```
mkdir /var/lib/vz/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/vz/glusterfs node2:/var/lib/vz/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 node3:/var/lib/vz/glusterfs
gluster volume info
```

#### <span class="mw-headline" id="bkmrk-acc%C3%A8s-par-la-librair-0">Accès par la librairie glusterfs</span>

Dans l'interface, Créer un stockage GlusterFS, remplissez les champs **Serveur principal** et **Serveur secondaire** avec les noms de vos serveurs. Dans le menus déroulant **Nom du volume** devrait apparaître le volume que vous avez créé précédemment (ici "glusterstorage").

#### <span class="mw-headline" id="bkmrk-acc%C3%A8s-en-nfs-0">Accès en NFS</span>

Dans l'interface, Créer un stockage NFS, remplissez le champ Serveur avec "**localhost**". Dans le menus déroulant Nom du volume devrait apparaître le volume que vous avez créé précédemment (ici "glusterstorage").

#### <span class="mw-headline" id="bkmrk-benchmark-librairie--0">Benchmark librairie glusterfs / NFS</span>

La différence est notable. En fonctionnement en HA, proxmox est capable de migrer une machine, lorsqu'il perd un noeud du cluster, sur un second. **Ceci est vrai seulement avec la librairie NFS**. De notre expérience, non seulement les machines ne sont pas migrées, mais les disques virtuels sont parfois endommagés !

## <span class="mw-headline" id="bkmrk-quorum-0">Quorum</span>

Le Quorum est une partition partagée, à partir d'une troisième machine, qui permet d'utiliser la HA. Cette machine sert en fait de référent aux Proxmox, qui ont parfois du mal à déterminer s'il y a une panne ou non dans un configuration avec uniquement 2 noeuds Proxmox. On ajoute donc de la stabilité et une couche de sécurité pour les VMs/données.

Cette troisième machine sera ici une CentOS 6.5.

### <span class="mw-headline" id="bkmrk-iscsi-0">iSCSI</span>

iSCSI est choisi pour partager la partition entre les différents noeuds du cluster.

Pour commencer, créer la partition. (Réduire une autre si cela est nécessaire, en théorie QDisk n'utilise qu'une partition de 10Mo)

```
lvcreate -n quorumdisk -L 10M vg_QUORUM
```

Installer le serveur iSCSI :

```
yum -y install scsi-target-utils # (nom du paquet sous CentOS)
```

**Important !** : le port 3260 doit être ouvert pour permettre les connexions à la cible iSCSI.

Créer ensuite la cible iSCSI (Des conventions de nommage ont été mises en place. Il est recommandé de les utiliser : [http://en.wikipedia.org/wiki/ISCSI#Addressing](http://en.wikipedia.org/wiki/ISCSI#Addressing))

```
# vim /etc/tgt/targets.conf

<target iqn.2012-06.com.domain.hostname:server.p1qdisk>
   backing-store /dev/vg_QUORUM/quorumdisk
   initiator-address <IP_du_noeud_1>
   initiator-address <IP_du_noeud_2>
</target>
```

Démarrer ensuite le service tgt, et le paramétrer pour le démarrage automatique :

```
service tgtd start
chkconfig tgtd on
tgt-admin -s    #notre volume doit apparaître ici
```

Il faut maintenant monter la cible sur les Proxmox. Installer tgt (il installe open-iscsi en dépendance sur le client, c'est lui dont on a besoin) :

```
apt-get install tgt # (nom du paquet sous Debian / Proxmox).

```

Modifier ensuite le fichier /etc/iscsi/iscsid.conf. Le champ **node.startup** doit être configuré en **automatic**

```
#vim /etc/iscsi/iscsid.conf

...
#*****************
# Startup settings
#*****************

# To request that the iscsi initd scripts startup a session set to "automatic".
# node.startup = automatic
#
# To manually startup the session set to "manual". The default is manual.
<strong>node.startup = automatic</strong>
...
```

Redémarrer le client iscsi :

```
service open-iscsi restart
```

On peut maintenant tester quelles cibles les clients voient :

```
iscsiadm --mode discovery --type sendtargets --portal <IP_du_ serveur iSCSI>
```

Puis se connecter à la cible qui nous interesse :

```
iscsiadm -m node -T iqn.BLAHBLAH -p <IP_du_serveur_iSCSI> -l
```

### <span class="mw-headline" id="bkmrk-configurer-qdisk-0">Configurer QDisk</span>

Il faut identifier la partition qui correspond au volume logique précédemment créé. On crée ensuite une partition sur celui-ci, via fdisk (ici sdc1 mais peut varier suivant la configuration de votre système). Une fois ceci fait on peut créer le disque de Quorum :

```
mkqdisk -c /dev/sdc1 -l qdisk_proxmox
#Noter que le paramètre -l est suivi du nom que vous souhaitez donner à votre disque de Quorum
```

Déconnecter et reconnecter les clients pour voir les changements :

```
iscsiadm --mode node --target <IQN> --portal x.x.x.x --logout
iscsiadm --mode node --target <IQN> --portal x.x.x.x --login
```

### <span class="mw-headline" id="bkmrk-ajouter-qdisk-au-clu-0">Ajouter QDisk au cluster</span>

Sur un des deux noeuds :

Copier le fichier cluster.conf en cluster.conf.new

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

Editer ce fichier en prenant soins de :  
1\) Incrémenter "config\_version" de 1  
2\) Supprimer 2node="1"  
3\) Ajouter la définition du Quorum

Cela doit ressembler à peu près à ceci :

```
 <cman expected_votes="3" keyfile="/var/lib/pve-cluster/corosync.authkey"/>
 <quorumd votes="1" allow_kill="0" interval="1" label="qdisk_proxmox" tko="10"/>
 <totem token="54000"/>
```

Activer les modifications : Sur l'interface Web de Proxmox, selectionner le datacenter (dans le menu de gauche) puis sélectionner l'onglet HA. On voit ici apparaître le fichier fraîchement modifié. cliquer sur Activate pour charger les modifications dans le cluster.

Lancer la commande pvecm s et vérifier que les deux noeuds on bien reçu les modifications du cluster.conf. Puis sur chacun des noeuds, un à la fois :

```
service rgmanager stop
service cman reload
```

la dernière commande devrait reancer rgmanager, si non, relancez le manuellement.

Vérification On peut utiliser la commande clustat pour vérifier que le quorum est présent et connecté

```
#clustat
Cluster Status for proxmox1 @ Mon Nov 24 16:46:23 2014
Member Status: Quorate

Member Name                                         ID   Status
------ ----                                         ---- ------
proxmox1                                              1 Online, Local, rgmanager
proxmox2                                              2 Online, rgmanager
<strong>/dev/block/8:16                                     0 Online, Quorum Disk</strong>
```

# <span class="mw-headline" id="bkmrk-astuces-et-notes-0">Astuces et notes</span>

### <span class="mw-headline" id="bkmrk-supprimer-l%27avertiss-0">Supprimer l'avertissement de souscription</span>

Lorsqu'on utilise Proxmox 3 sans souscription, un message apparrait à chaque login sur l'interface web. Pour se débarrasser de ce message, il faut modifier le fichier pvemanagerlib.js. On commence par sauvegarder le fichier d'origine :

```
# cp /usr/share/pve-manager/ext4/pvemanagerlib.js /usr/share/pve-manager/ext4/pvemanagerlib.js.OLD
```

Puis on édite

```
# vim /usr/share/pve-manager/ext4/pvemanagerlib.js
```

Il faut chercher l'instruction IF de la forme suivante :

```
if (data.status !== 'Active') {
Ext.Msg.show({
                       title: gettext('No valid subscription'),
                       icon: Ext.Msg.WARNING,
                       msg: PVE.Utils.noSubKeyHtml,
                       buttons: Ext.Msg.OK,
```

En fait, Proxmox teste si on a un abonnement non actif, auquel cas, il affiche le message. Il nous suffit donc de remplacer le test par **false**

```
if (<strong>false</strong>) {
Ext.Msg.show({
                       title: gettext('No valid subscription'),
                       icon: Ext.Msg.WARNING,
                       msg: PVE.Utils.noSubKeyHtml,
                       buttons: Ext.Msg.OK,
```

### <span class="mw-headline" id="bkmrk-probl%C3%A8mes-connus-ave-0">Problèmes connus avec QDisk</span>

Les noeuds Proxmox utilisent iSCSI pour se connecter au disque de Quorum partagé. Les machines proxmox, au démarrage, lancent une connexion à la cible iSCSI. Or, si la machine de Quorum n'est pas présente lors de cette étape, les connexion échouent logiquement. Les proxmox ne sont ensuite pas capables de se reconnecter automatiquement au disque de quorum, il faut soit les redémarrer, soit connecter la cible manuellement, en ligne de commande. Bien que ce soit un scénario plus rare, il est toujours bon de savoir quoi faire.