Configurazione nodi Proximox in Cluster

Scritto da  Domenica, 26 Luglio 2015 14:41
Vota questo articolo
(0 Voti)

Un cluster è definito come un insieme di computer connessi tra loro tramite una rete telematica, il cui scopo è quello di distribuire una elaborazione molto complessa tra i vari computer componenti il cluster.

Nel nostro caso andiamo a creare un cluster con i nostri server Proximox.
Attualmente non imposteremo la funzionalità in HA (High Availability) in quanto è necessario uno storage condiviso, ma avremo la possibilità di migrare (spostare) delle VM da un nodo all'altro in pochissimo tempo.

 

Come da precedente guida, si può installare proxmox su una distribuzione base oppure scaricando la iso direttamente dal sito web di Proxmox al seguente link: https://www.proxmox.com/en/downloads

In questi passaggi abbiamo usato la ISO già pronta.
(In fase di installazione si consiglia l'uso del filesystem ext4, di default imposta ext3.)

La nostra prima simulazione è stata eseguita su hardware fisico, per la scrittura della guida abbiamo messo 2 macchine su VirtualBox.
Come prima cosa bisogna eseguire gli aggiornamenti del sistema e per comodità modificare il file .bashrc, quindi:

nano /root/.bashrc

decommentiamo le seguenti righe

# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

Adesso modifichiamo il file /etc/apt/sources.list.d/pve-enterprise.list, commentando la riga presente e sotto incolliamo questo

deb http://download.proxmox.com/debian wheezy pve-no-subscription

Ora possiamo eseguire l'aggiornamento.

apt-get update && apt-get dist-upgrade

A fine installazione diamo un bel "reboot"

Questo è il primo passaggio da fare su ogni server proximox.

Adesso, sulla nostra macchina "master" dobbiamo creare il cluster, quindi eseguiamo il seguente comando (noi abbiamo usato "NinuxBas" come nome del Cluster):

pvecm create NinuxBas

Facciamo un controllo con:

pvecm status

Adesso ci spostiamo sugli altri server che si agganceranno al nostro cluster, quindi eseguiamo su ogni altro server il seguente comando:
pvecm add IP_SERVER_MASTER

Accettare la chiave di autenticazione ssh, con "yes" ed immettere la password del server Master

ripetere questo per ogni nodo ad esclusione del server master.

Nel mio caso ho la macchina master che si chiama nodo1 e la seconda nodo2
Ora fare attenzione perchè dobbiamo modificare manualmente il file /etc/pve/cluster.conf

Nell'apertura del file trovo questo

<?xml version="1.0"?>
<cluster name="NinuxBas" config_version="2">

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

<clusternodes>
<clusternode name="nodo1" votes="1" nodeid="1"/>
<clusternode name="nodo2" votes="1" nodeid="2"/></clusternodes>

</cluster>

e lo dobbiamo modificare per ottenere un risultato simile a questo

<?xml version="1.0"?>
<cluster name="NinuxBas" config_version="2">

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

<fencedevices>
<fencedevice agent="fence_ilo" ipaddr="10.27.0.X" login="root" name="fence-nodo1" passwd="xxxx" power_wait="15"/>
<fencedevice agent="fence_ilo" ipaddr="10.27.0.Y" login="root" name="fence-nodo2" passwd="yyyy" power_wait="15"/>
</fencedevices>

<clusternodes>
<clusternode name="nodo1" nodeid="1" votes="1">
<fence>
<method name="1">
<device action="reboot" name="fence-nodo1"/>
</method>
</fence>
</clusternode>
<clusternode name="nodo2" nodeid="2" votes="1">
<fence>
<method name="1">
<device action="reboot" name="fence-nodo2"/>
</method>
</fence>
</clusternode>
</clusternodes>
<rm/>

</cluster>

 

Da notare che questa modifica viene fatta automaticamente su tutti i nodi appartenenti al cluster.

Ho creato nella mia root un file di nome "enable-fencing.sh", consiglio di copiarlo su tutti i nodi e renderlo eseguibile. Il contenuto del file è questo

#!/bin/bash
sed -i -e 's/# FENCE_JOIN.*/FENCE_JOIN="yes"/' /etc/default/redhat-cluster-pve && \
service cman restart && \
service pve-cluster restart && \
fence_tool join &&
fence_tool ls

diamo un bel

chmod +x /root/enable-fencing.sh

Una volta eseguito questo comando dobbiamo andare sul nostro server tramite interfaccia web (comodo perchè da qui ora gestiamo tutti i server). Quindi clicciamo su "nodo1" e facciamo partire il servizio "RGManager", idem per il secondo nodo etc...

Qualora dovessimo trovare il servizio stoppato sarà sufficiente eseguire lo script enable-fencing.sh che abbiamo creato.

Ora è possibile creare le macchine virtuali KVM o CT.

Con KVM possiamo usare una ISO come se fossimo su un PC comune, con CT possiamo usare dei dump importati da altre macchine o usare i template già pronti.

Una nota importante, ogni server appartenente al cluster assume il nome di nodo, da non confondere con il "nodo" di Ninux.
Quindi ogni nodo "cluster" sarà presente in qualche nodo Ninux, es presso il LAB o i SuperNodi, dove ognuno metterà le proprie macchine virtuali con i servizi che vuole offrire, queste non vengono replicate su tutti i nodi del cluster, non è in HA.

Domanda: a cosa ci serve allora?
Risposta: se io ho in gestione il server dns locale che gestisce il TLD .ninuxbas e devo fare manutenzione al mio nodo, oppure è programmata nella mia zona che non ci sarà corrente, o che vado in ferie....posso trasferire il mio server DNS su un'altro nodo e non dare nessun disservizio alla comunità.

Letto 1100 volte Ultima modifica il Sabato, 16 Luglio 2016 14:43

Lascia un commento

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.

Ninux Experimental

Newsletter

Follow Us

           

Ninux è una Wireless Community Network

Una rete di calcolatori senza fili nata a Roma ed estesa in tutta Italia da una comunità di informatici, radioamatori e appassionati
Ninux non vuole essere solamente una rete parallela ad internet e scollegata da essa, al contrario mira a diventare parte integrante di internet.



Ninux è un modello alternativo allo sviluppo delle reti di telecomunicazione, un modello basato sulla condivisione, sulla collaborazione e sulla libertà, in accordo con la filosofia del software libero.