Configurazione Postfix – Courier- imap – SSL – TLS – SASL
In questo articolo verrà descritto come configurare un mail server con domini virtuali che utilizzi SSL – TLS- SASL.
Esiste molta documentazione in rete ma non così chiara e utilizzabile.
Per questa configurazione abbiamo utilizzato una distribuzione Gentoo linux:
- Postifix
- Courier-imap
- Cyrus-sasl
- Postgrey
- Amavisd new
- Spam assassin
- Clamav
Nome Dominio = example.com
utente = [email protected]
Tralascerò la configurazione della parte antispam e greylist che è ben documentata in rete.
Mi dedicherò solo a descrivere i vari passi per la configurazione di un mail server che utilizzi SSL – TLS – SASL.
Passo 1
Installazione dei pacchetti minimi necessari
postfix USE=”sasl”
cyrus-sasl USE=” -mysql authdaemond”
courier-imap USE=”berkdb fam gdbm”
Per questo server di posta virtuale userò come backend utenti imap authuserdb
e definirò gli utenti/dominio in postfix usando semplici file di testo (vmailbox per utenti ).
Passo 2
Configurazione imap e in particolare imap-ssl
Creazione utente imap:
>usererdb utente set uid=vmail gid=vmail home=/home/domini-posta/example.com/utente mail=/home/domini-posta/example.com/utente (definisco la entry nel db locale imap)
>userdbpw -md5 | userdb utente set systempw (setto la password)
>makeuserdb (abilito le modifiche)
Ho così creato l’utente imap e definito la relativa password.
Creazione certificati ssl self signed
Per questa parte ho seguito un Howto Ubuntu , ho creato i certificati nella directory /etc/ssl/private/
>openssl req -x509 -newkey rsa:1024 -keyout “/etc/ssl/private/mail.example.com.pem” -out “/etc/ssl/private/mail.example.com.pem” -nodes -days 3650
>openssl req -new -outform PEM -out “/etc/ssl/private/mail.example.com.crt” -newkey rsa:2048 -nodes -keyout “/etc/ssl/private/mail.example.com.key” -keyform PEM -days 3650 -x509
Durante questa fase verranno richiesti dei dati, fondamentale è il common name che deve essere uguale al dominio nel mio caso CN=example.com
>chmod 644 /etc/ssl/private/mail.example.com.*
Creazione file /etc/courier-imap/imap-ssl allego il contenuto
#############################
SSLPORT=993
SSLADDRESS=0
SSLPIDFILE=/var/run/imapd-ssl.pid
SSLLOGGEROPTS=”-name=imapd-ssl”
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=0
COURIERTLS=/usr/sbin/couriertls
TLS_KX_LIST=ALL
TLS_COMPRESSION=ALL
TLS_CERTS=X509
TLS_CERTFILE=/etc/courier-imap/mail.example.com.pem
TLS_TRUSTCERTS=/etc/ssl/certs
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/var/lib/courier/couriersslcache
TLS_CACHESIZE=524288
MAXDAEMONS=40
MAXPERIP=10
MAILDIRPATH=Maildir
MAILDIR=.maildir
MAILDIRPATH=.maildir
################################
Oltre all’imap-ssl ho abilitato anche l’imap standard porta 143 in localhost solamente, sfrutterò l’imap non ssl per la verifica dei login del demone sasl usando il metodo rimap (vedi sotto).
Passo 3
Configurazione cyrus-sasl
ho inserito in /etc/sasl/smtp.conf
###############################
log_level: 1
pwcheck_method:saslauthd
mech_list: PLAIN LOGIN
###############################
ho inserito in /etc/conf.d/saslauthd
#########################################
SASLAUTHD_OPTS=”${SASLAUTH_MECH} -a rimap -r” -> sasl sfrutta l’imap per la verifica utenti
SASLAUTHD_OPTS=”${SASLAUTHD_OPTS} -O 127.0.0.1″ -> attivo solo in localhost
SASLAUTHD_OPTS=”${SASLAUTHD_OPTS} -n 5″
#########################################
Passo 4
Configurazione Postfix
Alla configurazione di base e ben documentata di virtual mail host in file ho aggiunto la parte inerente il TLS e SASL autentication.
Dopo aver inserito l’utente nel file /etc/postfix/vmailbox
#####################################
[email protected] example.com/utente/
#####################################
eseguo
> postmap /etv/postfix/vmailbox
A questo punto configuro il file /etc/postfix/main.cf aggiungendo la parte inerente TLS e SASL
#############################
# Virtual host
virtual_mailbox_domains = example.com
virtual_mailbox_base = /home/domini-posta
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
#SASL
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
# TLS
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_received_header = yes
smtpd_tls_cert_file = /etc/ssl/private/mail.example.com.crt
smtpd_tls_key_file = /etc/ssl/private/mail.example.com.key
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_loglevel = 1
tls_random_source = dev:/dev/urandom
#############################
Ho tralasciato tutta la parte di configurazione antispam e greylist ampiamente documentata in rete e di facile applicazione.
A questo punto configuro il file /etc/postfix/master.cf abilitando:
################################################
smtps inet n – n – – smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=$mua_client_restrictions
-o smtpd_helo_restrictions=$mua_helo_restrictions
-o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
##################################################
A questo punto dovrebbe essere tutto attivo e funzionante.
Abbiamo configurato un server di posta con imap-ssl porta 993 default, smtps porta 465 default, TSL e SASL per spedizione mail autenticata.
Io ho fatto dei test di spedizione e ricezione mail usando thunderbird e tutto fila liscio.
Dai log del server mail è possibile verficare l’utilizzo di TLS e verificare che il traffico non sia in chiaro.
Per i certificati , quelli da me usati sono selfsigned, dovrete accettarli lato client come attendibili.
- Pubblicato il Sistemistica
Duplicazione volume LVM (NTFS) con snapshot
Mi è capitato di dover effettuare un backup di un volume LVM di una macchina guest in ambiente virtualizzato (kvm-proxmox) subito dopo un aggiornamento che ha reso la proxecura automatica (vzdump inefficace a seguito di questo errore:
INFO: starting new backup job: vzdump 103 --mode snapshot --storage BACKUP INFO: Starting Backup of VM 103 (qemu) INFO: status = running INFO: backup mode: snapshot INFO: ionice priority: 7 INFO: skip unused drive 'local:103/vm-103-disk-1.raw' (not included into backup) INFO: creating archive '/VM/BACKUP/dump/vzdump-qemu-103-2014_06_06-12_19_45.vma' unable to connect to VM 103 socket - No such file or directory ERROR: unable to connect to VM 103 socket - No such file or directory INFO: aborting backup job ERROR: Backup of VM 103 failed - unable to connect to VM 103 socket - No such file or directory INFO: Backup job finished with errors job errors
Prima di riavviare la macchina host, come consugliato dal forum, ho preferito effettuare un backup dei dati seguendo questa procedura.
Prima di tutto installo i pacchetti necessari:
#apt-get install ntfsprogs kpartx
Poi attivo uno snapshot per il volume NETLITE-vm–131–disk–1:
#lvcreate -L 1G -s -n 131-snap /dev/mapper/NETLITE-vm--131--disk--1
A questo punto ho un’immagine consistente del disco ma non è possibile usare tools come ntfsclone direttamente in quanto la partizione del disco NTFS non è presente in /dev/mapper, quindi la rendo visibile con:
#kpartx -a /dev/NETLITE/131-snap
Ed effettuo il backup:
#ntfsclone -s /dev/mapper/NETLITE-131--snap1 -o /mnt/pve/BACKUP_NFS/131-ntfs_clone.img ntfsclone v2012.1.15AR.5 (libntfs-3g) NTFS volume version: 3.1 Cluster size : 4096 bytes Current volume size: 34348736512 bytes (34349 MB) Current device size: 34348737024 bytes (34349 MB) Scanning volume ... 100.00 percent completed Accounting clusters ... Space in use : 4282 MB (12.5%) Saving NTFS to image ... 100.00 percent completed Syncing ...
A questo punto ho una copia “ottimizzata” del filesystem e posso rimuovere puntamenti e snapshot:
#kpartx -d /dev/NETLITE/131-snap #lvremove /dev/mapper/NETLITE-131--snap Do you really want to remove and DISCARD active logical volume 131-snap? [y/n]: y Logical volume "131-snap" successfully removed
A.Gagliardi 2014
- Pubblicato il Sistemistica, Tips & Tricks
Migrazione XEN -> Proxmox (KVM) di VM Windows
Stando alla documentazione la procedura ideale di migrazione di un’installazione Windows verso Proxmox (KVM) prevede l’utilizzo di Clonezilla, purtroppo la ISO di Clonezilla non parte sulle VM già virtualizzate con XEN rendendo necessario un cambio di strategia.
Avviamo una VM m minimale su XEN utilizzando la ISO di sysrescuecd e configurando come disco uno snapshot della vm originale ove sia stato installato preventivamente il mergeide.reg
A questo punto copiamo il partizionamento.
Possiamo usare sfdisk con netcat.
Sulla VM di destinazione digitare:
nc -l -p 1234 | sfdisk /dev/sdaSulla VM di origine digitare:
sfdisk -d /dev/xvda | nc XX.XX.XX.XX 1234dove XX.XX.XX.XX è l’indirizzo ip della macchina destinazione.
A questo punto è buona norma riavviare la VM destinazione.
Per copiare il filesystem NTFS procediamo con ntfsclone.
Sulla VM di destinazione digitare:
nc -l -p 1234 | ntfsclone -r -O /dev/sda1 -Sulla VM di origine digitare:
ntfsclone -s -o - /dev/vxda1 | nc XX.XX.XX.XX 1234La procedura non esce al termine automaticamente, resta come appesa, solitamente basta attendere un po’ affinchè si svuoti il buffer di copia, con un bmon si nota chiaramente quando la procedura smette di usare la rete. A quel punto si può interrompere con ctrl-c.
Può essere necessario ridimensionare il filesystem sfruttando il maggior spazio concesso dal nuovo hardware quindi qualora il disco della VMsia più grande di quello originario si può procedere così:
Ridimensionare la partizione numero 1 alla massima possibile con sfdisk:
echo ",+," | sfdisk -N1 /dev/sdaRidimensionamento del filesystem tramite ntfsresize:
ntfsresize -x /dev/sda1 oppure ntfsresize -s 100G /dev/sda1
Al termine il Windows tendenzialmente non parte.
Si utilizza quindi il CD originale per partire in modalità rescue e si digitano i comandi fixboot e fixmbr.
A questo punto si riavvia e Windows dovrebbe partire.
Nel caso si sia ridimensionata la partizione Windows effettuerà un controllo approfondito del filesystem.
Prima di installare gli eventuali drivers virtio è meglio disinstallare servizi relativi a Xen, VMWARE, etc che potrebbero entrare in conflitto con il nuovo sistema di virtualizzazione.
- Pubblicato il Sistemistica, Tips & Tricks
WordPress Tips&Tricks
Aggiungere in wp-config.php le seguenti direttive per velocizzare l’installazione e l’aggiornamento del sito eliminando la necessità di transitare attraverso l’FTP e per permette la gestione di un sito multidominio.
Nel caso si desideri attivare il Multisite occorre prima di tutto disattivare tutti i plugin.
/* Multisite */ define('WP_ALLOW_MULTISITE', true); /* Direct install/update */ define('FS_METHOD', 'direct');
Nel menù Strumenti – Configurazione di Rete è necessario scegliere se la rete di siti dovrà essere pubblicata come sottodomini o sottocartelle del dominio principale. Questa decisione è squisitamente personale, ma non sarà più possibile modificarla in futuro.
Nel caso si optasse per i sottodomini, consiglio di aggiungere una wildcard DNS nella zona DNS del dominio per fare in modo che qualsiasi sottodominio si andrà a creare sia già immediatamente accessibile a livello DNS e non si debba editare la zona ogni volta.
Vedrete sullo schermo la richiesta di inserire nei files wp-config.php e .htaccess del codice. Le stringhe sono personalizzate per ogni installazione.
Ora al prossimo login comparirà il menù “I miei siti” da cui amministrare tutta la rete di siti.
Riabilitare tutti i plugin necessari.
- Pubblicato il Sistemistica, Tips & Tricks
Speedtest Internet da console Linux
Test di velocità link Internet xDSL da console Linux
Spesso è utile valutare la velocità e la latenza di un link ad internet di un server Linux al quale non si ha accesso diretto tramite un desktop remoto. Tramite questo tool è possibile utilizzare l’infrastruttura geografica di Speedtest.net ed ottenere una valutazione oggettivamente valida.
# wget https://github.com/sivel/speedtest-cli/raw/master/speedtest.py --no-check-certificate # chmod a+rx speedtest_cli.py # ./speedtest_cli.py
Lo script in python si collega al nodo più prossimo ed effettua un test di upload, uno di download e riporta anche la latenza in millisecondi.
root@farm ~ # ./speedtest_cli.py Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from Hetzner Online AG (XX.XX.XX.XX)... Selecting best server based on ping... Hosted by Vodafone DE (Frankfurt) [100.73 km]: 6.358 ms Testing download speed........................................ Download: 87.87 Mbit/s Testing upload speed.................................................. Upload: 66.08 Mbit/s
E’ possibile condividere il test aggiungendo –share al comando e si ottiene questo:
Andrea Gagliardi – netlite.it
- Pubblicato il Sistemistica, Tips & Tricks
PROXMOX tips venet e /usr/portage
Tips per la personalizzazione di contenitori (CT) PROXMOX
Mount automatico di /usr/portage
Utilizzando Gentoo come distribuzione Linux all’interno dei contenitori OpenVZ può essere utile condividere tra i contenitori la /usr/portage/ in modo da poter sincronizzarla tramite la macchina host e ridurre drasticamente l’occupazione di spazio disco.
Per ottenere questo è possibile far svolgere queste operazioni ad ogni boot della VM creando o modificando tramite shell ed editor di testo lo script {VMID}.mount nella stessa directory dove è presente il file {VMID}.conf.
Spostiamoci quindi nella directory:
cd /etc/pve/nodes/$(hostname -s)/openvz/
E creiamo (o modifichiamo) il file:
vim {VMID}.mount
Inserendo queste righe di codice:
#!/bin/bash . /etc/vz/vz.conf . ${VE_CONFFILE} SRC=/var/lib/vz/portage DST=/usr/portage if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
Lo script è molto comprensibile e non contiene alcun riferimento alla singola macchina virtuale per cui è possibile copiarlo per ogni macchina Gentoo ospitata.
Al termine è necessario cambiare i diritti di esecuzione:
chmod 700 {VMID}.mount
Nel caso, ad esempio, di volere mantenere lo storage ed il sistema su supporto diversi per questioni di spazio o performance può essere utile aggiungere allo script il mount anche di questi mountpoint:
#!/bin/bash . /etc/vz/vz.conf . ${VE_CONFFILE} SRC=/var/lib/vz/portage DST=/usr/portage if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC} SRC=/storage/${VEID}/home DST=/home if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
Qusto permette di avere la home di ogni contenitore su di uno storage separato.
Utilizzo questo sistema, ad esempio, per avere lo storage su di un filesystem ZFS con compressione realtime attiva.
Utilizzo delle interfaccie veth al posto di venet
Può essere necessario utilizzare caratteristiche di rete che le interfaccie venet non forniscono (ad esempio ARP) QUI.
Seguendo quindi la guida QUI, dopo aver configurato tramite l’interfaccia web di PROXMOX la nuova scheda di rete questa risulta correttamente aggiunta al bridge di rete ma la VM può risultare isolata.
#!/bin/bash . /etc/vz/vz.conf . ${VE_CONFFILE} SRC=/var/lib/vz/portage DST=/usr/portage if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC} SRC=/storage/${VEID}/home DST=/home if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC} IP="XX.XX.XX.XX" /sbin/ip route del $IP dev vmbr0 2>/dev/null /sbin/ip route add $IP dev vmbr0 2>/dev/null
Alla fine dello script si nota la rimozione e l’aggiunta di una rotta verso il bridge che ospita la VM con l’indirizzo XX.XX.XX.XX.
Lo script purtroppo contiene una configurazione specifica per cui è necessario modificarlo per utilizzarlo per altre VM.
Esecuzione comandi all’interno di un Contenitore (CT) OpenVZ
Per eseguire comandi in un contenitore OpenVZ è possibile utilizzare il comando:
# vzctl exec 103 /etc/init.d/sshd status openssh-daemon is stopped # vzctl exec 103 /etc/init.d/sshd start Starting sshd: [ OK ]
Andrea Gagliardi – netlite.it
- Pubblicato il Sistemistica, Tips & Tricks, Virtualizzazione
Clonare Windows Server 2003 usando clonezilla per migrazione su Debian PROXMOX
Emerge spesso la necessità di clonare una macchina Windows esistente su hardware fisico, per utilizzarla poi come macchina virtuale su Debian PROXMOX.
Qui di seguito indicherò la procedura da noi adottata per clonare un Windows 2003 Server on the fly utilizzando CLONEZILLA.
On the fly intendo senza alcuna necessità di creare immagini su dischi esterni, ma direttamente sul disco remoto virtuale precedentemente configurato su PROXMOX.
Operazioni Preliminari:
- Installare sulla macchina windows esistente mergeide.reg , permette di abilitare i driver standard IDE su macchine del tipo winxp/win2003, il file è scaricabile dal seguente link mergeide.
- Scaricare la iso di CloneZilla e realizzare un cdrom/DVD.
- Preparare utilizzando l’interfaccia PROXMOX una macchina VM definita TARGET definendo un disco di dimensione >= al disco origine presente sul server Windows 2003 (con almeno 1Gb in eccesso rispetto all’originale).
- Assicurarsi di aver caricato sullo Storage PROXMOX la iso virtio-win.iso per l’installazione dei driver necessari alla macchina Windows una volta clonata (rete, disco) e la iso precedentemente scaricata di CloneZilla.
A questo punto è possibile procedere come descritto di seguito.
Inserire il cd di clonezilla nel lettore della macchina fisica da clonare che chiameremo SOURCE. Riavviare la macchina e se server configurare il bios per fare il boot da lettore cdrom.
Da interfaccia CloneZilla presente sulla macchina SOURCE selezionare l’opzione “disk_to_remote_disk” (copia disco da rete).
Procedere oltre e scegliere
se presente di configurare la rete tramite dhcp o manualmente (static). Nel nostro caso essendo Windows 2003 un dhcp server abbiamo scelto static inserendo l’ip a mano.
Passo successivo selezionare il disco da copiare come SOURCE.
A questo punto dopo alcuni altri passi di semplice comprensione la macchina source sarà pronta
per il trasferimento del disco via rete alla macchina TARGET.
Macchina TARGET (precedentemente configurata tramite interfaccia PROXMOX)
Selezionare tramite interfaccia PROXMOX il boot della macchina TARGET da iso di clonezilla. Premere start e iniziare la configurazione da interfaccia Clonezilla
Entrare in modalità shell di ConeZilla.
Eseguire i seguenti comandi nell’ordine indicato :
- sudo su
- fdisk /dev/sda (assicurarsi che il disco della macchina TARGET sia sda o simile) , uscire da fdisk digitando il comando ‘w’.
Sempre da shell di CloneZilla Eseguire
- ocs-live-netcfg
- ocs-onthefly -s IPSOURCE -t sda (IPSOURCE = indirizzo ip macchina source)
A questo punto inizierà la copia del disco.
Apparirà una finestra che indica il tempo stimato e le partizioni da copiare (copiare anche la partizione di boot di windows).
Una volta finito il processo, basterà toglire da proxmox il boot da iso di clonezilla ed avviare la macchina clonata con Start.
Una volta avviata sarà, come indicato nei preliminari, necessario installare i driver di rete virt0 o intel e1000 (consigliata in questo ultimo caso l’installazione direttamente
usando i driver scaricati dal sito Intel).
Sarà necessario riattivare la licenza di Windows 2003 server e inserire o verificare i parametri di rete della macchina TARGET.
La macchina source potrà essere spenta dopo aver verificato il corretto funzionamento della macchina TARGET.
- Pubblicato il Sistemistica, Tips & Tricks, Virtualizzazione
PROXMOX calcolo cpu units
Con Proxmox è possibile assegnare tempo macchina garantito alle VM tramite l’assegnazione di CPU UNITS.
Tramite il comando
# vzcpucheck Current CPU utilization: 4000 Power of the node: 3191600
E’ possibile stabilire la potenza del nodo.
Quindi per assegnare l’1% della potenza ad una VM occorre fare questo calcolo:
3191600 / 100 * 1 = 31916
Allo stesso modo per assegnare il 5% della potenza ad una VM occorre fare questo calcolo:
3191600 / 100 * 5 = 159580
Da quello che abbiamo potuto verificare per i contenitori openvz la modifica è istantanea per le vm KVM occorre spegnerle e riaccenderle.
andrea gagliardi – netlite.it
- Pubblicato il Sistemistica, Tips & Tricks, Virtualizzazione
PERC H300 megaraid_sas su Debian PROXMOX
Installando un sistema Linux Server, tipo Proxmox (Debian), è possibile monitorare lo stato di funzionamento del controller RAID PERC H700 alias LSI MegaRAID.
Seguendo le indicazioni sul sito hwraid.le-vert.net
E’ possibile aggiungere in /etc/apt/sources.list il repository
deb http://hwraid.le-vert.net/debian wheezy main
ed aggiungere la chiave:
wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | apt-key add
ad un successivo apt-get update verranno resi disponibili alcuni tools
apt-get install megaclisas-status megacli
è possibile invocare direttamente megaclisas-status
# megaclisas-status -- Controller informations -- -- ID | Model c0 | PERC H700 Integrated -- Arrays informations -- -- ID | Type | Size | Status | InProgress c0u0 | RAID10 | 2454G | Optimal | None -- Disks informations -- ID | Model | Status c0u0p0 | SEAGATE ST900MM0006 LS08S0N08XHB | Online, Spun Up c0u0p1 | SEAGATE ST900MM0006 LS08S0N08896 | Online, Spun Up c0u0p0 | SEAGATE ST900MM0006 LS08S0N08X1K | Online, Spun Up c0u0p1 | SEAGATE ST900MM0006 LS08S0N08875 | Online, Spun Up c0u0p0 | SEAGATE ST900MM0006 LS08S0N07EBR | Online, Spun Up c0u0p1 | SEAGATE ST900MM0006 LS08S0N084P0 | Online, Spun Up
oppure fare affidamento sul demone già attivo dopo l’installazione e far rilevare la presenza in /var/run del file megaclisas-statusd.status
Andrea – netlite.it
- Pubblicato il Sistemistica, Tips & Tricks, Virtualizzazione
Cluster Fencing Two Node DRBD PROXMOX
Documentazione completa LINK
Per l’installazione e l’utilizzo del DRBD è preferibile che vi sia almeno una scheda di rete dedicata alla sincronizzazione configurata in /etc/network/interfaces su ogni nodo.
# network interface settings auto lo iface lo inet loopback iface eth0 inet manual auto eth1 iface eth1 inet static address 10.0.7.106 netmask 255.255.240.0 auto vmbr0 iface vmbr0 inet static address 192.168.7.106 netmask 255.255.240.0 gateway 192.168.2.1 bridge_ports eth0 bridge_stp off bridge_fd 0
Tuning dello strato di rete per DRBD da inserire in rc.local
echo 30000 > /proc/sys/net/ipv4/tcp_max_syn_backlog echo 50000 > /proc/sys/net/core/netdev_max_backlog
Nel caso di DRBD su 2 x 10Gb SFP+ in bonding la configurazione ha dato i risultati sperati e le prestazioni sono state di circa 400Mbytes/sec in TCP e 800Mbytes/sec in UDP, l’innalzamento dell’MTU e del TXQUEUELEN hanno migliorato sensibilmente le performances
ifconfig eth3 mtu 9000 ifconfig eth4 mtu 9000 ifconfig bond0 mtu 9000 ifconfig eth3 txqueuelen 5000 ifconfig eth4 txqueuelen 5000 ifconfig bond0 txqueuelen 5000
Si passa all’installazione dei tools necessari
apt-get install drbd8-utils
Sulla porzione di disco (o sul pool di dischi) da destinare al DRBD (ipotizziamo sdb) si crea una partizione di tipo 8e (Linux LVM)
Si modificano i files di configurazione /etc/drbd.d/global_common.conf
global { usage-count no; } common { syncer { rate 30M; verify-alg md5; } }
e /etc/drbd.d/r0.res
resource r0 { protocol C; startup { wfc-timeout 0; # non-zero wfc-timeout can be dangerous (http://forum.proxmox.com/threads/3465-Is-it-safe-to-use-wfc-timeout-in-DRBD-configuration) degr-wfc-timeout 60; become-primary-on both; } net { cram-hmac-alg sha1; shared-secret "my-secret"; allow-two-primaries; after-sb-0pri discard-zero-changes; after-sb-1pri discard-secondary; after-sb-2pri disconnect; #data-integrity-alg crc32c; # has to be enabled only for test and disabled for production use (check man drbd.conf, section "NOTES ON DATA INTEGRITY") } on proxmox-105 { device /dev/drbd0; disk /dev/sdb1; address 10.0.7.105:7788; meta-disk internal; } on proxmox-106 { device /dev/drbd0; disk /dev/sdb1; address 10.0.7.106:7788; meta-disk internal; } }
Si fa partire il servizio drbd con
/etc/init.d/drbd start
e si creano i metadata
drbdadm create-md r0
dopodichè si attivano i device su entrambi i nodi
drbdadm up r0
E’ possibile visualizzare lo stato del drbd con
pve1:~# cat /proc/drbd version: 8.3.13 (api:88/proto:86-90) GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by root@oahu, 2009-09-10 15:18:39 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r---- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2096348
Su di un solo nodo digitare
drbdadm -- --overwrite-data-of-peer primary r0
per avviare la sincronizzazione e riabbiare il drbd su entrambi i nodi per attivare la risorsa in modalità attivo/attivo con
/etc/init.d/drbd stop /etc/init.d/drbd start
Tuning per performance DRBD 8.3 LINK
resource resource { net { max-buffers 8000; max-epoch-size 8000; ... } ... } resource resource { net { sndbuf-size 0; ... } ... } resource resource { syncer { al-extents 3389; ... } ... } resource resource { disk { no-disk-barrier; no-disk-flushes; ... } ... }
A questo punto è possibile configurare LVM editando /etc/lvm/lvm.conf
# By default we accept every block device: filter = [ "r|/dev/sdb1|", "r|/dev/disk/|", "r|/dev/block/|", "a/.*/" ]
per eliminare sdb1 dall’autoscan
e si crea un device con
pvcreate /dev/drbd0 vgcreate [VG_NAME] /dev/drbd0
Tramite l’interfaccia web è possibile aggiungere il disco LVM/DRBD
Documentazione completa LINK
Dopo l’installazione e l’aggiornamento dei nodi su uno di essi si crea il cluster
pvecm create [CLUSTER_NAME]
Per aggiungere nodi al cluster sul nodo da aggiungere si digita
pve add [CLUSTER_IP_ADDRES]
Per verificare lo stato del cluster
pvecm status pvecm nodes
Per rimuovere un nodo
pvecm delnode [NODE_NAME]
Una volta instaurato il cluster con due nodi non è possibile spegnere un nodo senza perdere la possibilità di editare i files di configurazione o di effettuare backup o creare vm in quanto non viene raggiunto il quorum necessario che si ottiene con configurazioni tipiche di 3 nodi.
E possibile abbassare temporaneamente o definitivamente il quorum a 2 o aggiungere un quorumdisk.
Documentazione completa LINK
Per configurare il fencing occorre modificare il file /etc/pve/cluster.conf
cp /etc/pve/cluster.conf /etc/pve/cluster.conf.new
Ed aumentare di +1 il valore di config_version=”XX”
Nella sezione cman aggiungere expected_votes=”1″
Situazione che è possibile forzare anche manualmente con il comando
pvecm expected 1
E dopo
E’ preferibile usare ipaddr=”192.168.1.2″ al posto di hostname=”nodeA”
Poi modificare clusternode
Per applicare le modifiche nell’interfaccia web di gestione datacenter nel tab HA è possibile Attivare le modifiche, queste verranno applicate all’intero cluster.
Eventuali errori di configurazione vengono segnalati in fase di applicazione.
Documentazione completa LINK
Per attivare il fencing bisogna aggiungere ogni nodo al dencing domain
Si modifica /etc/default/redhat-cluster-pve affinchè contenga
FENCE_JOIN="yes"
E si lancia il comando su ogni nodo
fence_tool join
Per verificare lo stato
fence_tool ls
Per installare un quorum disk iSCSI presente su di un NAS
apt-get install tgt vi /etc/iscsi/iscsid.conf # change node.startup to automatic /etc/init.d/open-iscsi restart
Selezionare il target
iscsiadm --mode discovery --type sendtargets --portal [iSCSI_IP] iscsiadm -m node -T iqn.[BLAHBLAH] -p [iSCSI_IP] -l
Create una partizione primaria con fdisk e create il quorumdisk
mkqdisk -c /dev/sdc1 -l proxmox1_qdisk
Per inserirlo nella configurazione si procede come sopra
cp /etc/pve/cluster.conf /etc/pve/cluster.conf.new
si incrementa di +1 la config_version si rimuove two_node=”1″ e si aggiunge la definizione quorumd
Sempre dall’interfaccia web nel tab HA si applica la modifica, si verifica lo stato con
pvecm s
e si applicano le modifiche con
/etc/init.d/rgmanager stop # This will restart any VMs that are HA enabled onto the other node. /etc/init.d/cman reload # This will activate the qdisk
Assicurarsi che rgmanager sia partito o avviarlo e verificare che su ogni nodo clustat riporti qualcosa del tipo
Cluster Status for proxmox1 @ Thu Jun 28 12:23:10 2012 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ proxmox1a 1 Online, Local, rgmanager proxmox1b 2 Online, rgmanager /dev/block/8:33 0 Online, Quorum Disk
Configurazione finale
- Pubblicato il Sistemistica, Tips & Tricks, Virtualizzazione