Modifica di Installazione DRBD + CMAN Active/Active on CentOS
Inizializzare l'installazione come Installazione DRBD + CMAN Active/Passive on CentOS
fino alla creazione della partizione EXT3
yum install drbd kmod-drbd82 OpenIPMI-libs openhpi heartbeat heartbeat-stonith mke2fs -j /dev/sda3 dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync
Modifichiamo il file di configurazione di DRDB
global {
usage-count yes;
}
common {
protocol C;
}
resource "r0" {
net {
allow-two-primaries;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
disk { on-io-error pass_on; }
startup {
become-primary-on both;
wfc-timeout 5;
degr-wfc-timeout 3;
}
syncer { rate 100M; }
on mailha01.rete.sis {
device /dev/drbd0;
disk /dev/sda3;
address 30.30.30.5:7791;
meta-disk internal;
}
on mailha02.rete.sis {
device /dev/drbd0;
disk /dev/sda3;
address 30.30.30.6:7791;
meta-disk internal;
}
}
drbdadm create-md r0
modprobe drbd
drbdadm attach r0
drbdadm syncer r0
drbdadm syncer r0
drbdadm connect r0
Controlliamo lo stato di sincronizzazione dei due nodi
/etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17 m:res cs st ds p mounted fstype ... sync'ed: 73.9% (26879/102772)M 0:r0 SyncSource Primary/Primary UpToDate/Inconsistent C
Mettiamo DRDB attivo di default
chkconfig --level 345 drbd on
Quando tutto è sincronizzato avremo:
/etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17 m:res cs st ds p mounted fstype 0:r0 Connected Primary/Primary UpToDate/UpToDate C
Sincronizziamo ancora
drbdadm -- --overwrite-data-of-peer primary r0
Configuriamo il cluster manager
vi /etc/cluster/cluster.conf
copiamo il file anche sull'altro nodo
scp /etc/cluster/cluster.conf mailha02:/etc/cluster/cluster.conf
E poi creiamo la partizione GFS2 '''solamente su UN NODO del cluster '''
mkfs.gfs2 -p lock_dlm -j 2 -t MAILHA:mailfs /dev/drbd0
Dove MAILHA è il nome del Cluster inserito dentro il file cluster.conf e mailfs è il nome che vogliamo dare alla risorsa
Maggiori info: http://www.drbd.org/users-guide/s-gfs-create.html
Avviamo a questo punto il Cluster Manager su entrambi i nodi
service cman start
Starting cluster:
Loading modules... done
Mounting configfs... done
Starting ccsd... done
Starting cman... done
Starting daemons... done
Starting fencing... done
[ OK ]
E per controllare lo stato
clustat Cluster Status for MAILHA @ Thu Jan 5 10:37:33 2012 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ mailha01 1 Online, Local mailha02 2 Online
Creiamo su entrambi i nodi la cartella che vogliamo condividere
mkdir /MAIL mkdir /MAIL/imap
e proviamo a montare la nuova partizione
mount -o noatime,nodiratime /dev/drbd0 /MAIL/imap/
In questo momento se controlliamo lo stato di DRDB
/etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17 m:res cs st ds p mounted fstype 0:r0 Connected Primary/Primary UpToDate/UpToDate C /MAIL/imap gfs2
Installazione DRBD + CMAN Active/Passive on CentOS
Installazione sistema base CentOS
Installare versione BASE di CentOS senza server o altro.
Deve essere pulita senza niente di che.
Una volta installato controlliamo i server DNS:
vi /etc/resolv.conf nameserver 172.16.100.45 nameserver 172.16.100.125 search rete.sis
Controlliamo il gateway:
vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=webha01 GATEWAY=172.31.0.96
controlliamo le interfaccie di rete
vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO=static NM_CONTROLLED="yes" ONBOOT="yes" IPADDR=172.16.100.143 BROADCAST=20.20.20.255 NETMASK=255.255.255.0 TYPE=Ethernet
Settiamo GRUB come default Boot loader
vi /boot/grub/menu.lst default=1
Installiamo i repository che ci possono servire
rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://elrepo.org/elrepo-release-5-3.el5.elrepo.noarch.rpm oppure rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
Configuriamo VIM al posto di VI per ottimizzare la visualizzazione
yum install vim vi /root/.bashrc alias vi='vim'
Aggiorniamo orario
yum install ntp /usr/sbin/ntpdate 172.16.100.253
mettiamo anche nel crontab
crontab -e 0 * * * * /usr/sbin/ntpdate 172.16.100.253 >> /var/log/messages 2>&1
Creiamo la nuova partizione
fdisk /dev/sda The number of cylinders for this disk is set to 2610. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs) (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): '''n''' Command action e extended p primary partition (1-4) '''p''' Partition number (1-4): '''3''' First cylinder (1034-2610, default 1034): Using default value '''1034''' Last cylinder or +size or +sizeM or +sizeK (1034-2610, default 2610): Using default value '''2610''' Command (m for help): '''t''' Partition number (1-4): '''3''' Hex code (type L to list codes): '''83''' Command (m for help): '''w''' The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
Poi riavviamo il sistema
reboot
Appena riavviato prepariamo la partizione EXT3
mke2fs -j /dev/sda3
otterremo un output del genere
mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux ... This filesystem will be automatically checked every 28 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
e poi cancelliamo tutti i file dal File SYstem appena creato
dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync
naturalmente queste operazioni vanno fatte su entrambi i nodi
Installazione DRBD
Una volta installato il sistema possiamo procedere all'installazione dei pacchetti e alla configurazione dei nodi
yum install drbd kmod-drbd82 OpenIPMI-libs openhpi drbd83-utils kmod-drbd83
Controlliamo i file hosts
vi /etc/hosts
e mettiamo IP
172.16.100.150 dgvha01 dgvha01.rete.sis 172.16.100.151 dgvha02 dgvha02.rete.sis 127.0.0.1 localhost.localdomain localhost
Configuriamo il file DRBD.conf
vi /etc/drbd.conf
commentiamo le prime due righe
#include "drbd.d/global_common.conf"; #include "drbd.d/*.res";
e poi aggiungiamo su entrambi i nodi
resource "r0" {
protocol A;
disk { on-io-error pass_on; }
startup { wfc-timeout 5; degr-wfc-timeout 3; }
syncer { rate 100M; }
on dgvha01 {
device /dev/drbd0;
disk /dev/sda3;
address 172.16.100.150:7789;
meta-disk internal;
}
on dgvha02 {
device /dev/drbd0;
disk /dev/sda3;
address 172.16.100.151:7789;
meta-disk internal;
}
}
creiamo la Partizione virtuale
drbdadm create-md r0
digitiamo 3 volte invio e verrà dato un messaggio di ''SUCCESS''
in caso di errore provare a cancellare nuovamente il contenuto della partizione e poi ricreare la partizione
dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync drbdadm create-md r0
Su entrambi i nodi a questo punto avviamo il servizio drbd
'''Nodo 01'''
service drbd start Starting DRBD resources: [ d(r0) s(r0) n(r0) ].....
'''Nodo 02'''
service drbd start Starting DRBD resources: [ d(r0) s(r0) n(r0) ].
Possiamo verificare lo stato della sincronizzazione con il comando status
service drbd status drbd driver loaded OK; device status: version: 8.3.11 (api:88/proto:86-96) GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by dag@Build32R5, 2011-08-08 08:47:54 m:res cs ro ds p mounted fstype 0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent A
Inizialmente entrambi i server sono Secondary e quindi bisogna definire qual'è il principale. Facciamo questa operazione sul nodo 1
drbdsetup /dev/drbd0 primary -o
Successivamente controlliamo lo stato del DRBD
service drbd status drbd driver loaded OK; device status: version: 8.3.11 (api:88/proto:86-96) GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by dag@Build32R5, 2011-08-08 08:47:54 m:res cs ro ds p mounted fstype ... sync'ed: 1.1% (12240/12368)M 0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent A
e sul secondo nodo
service drbd status drbd driver loaded OK; device status: version: 8.3.11 (api:88/proto:86-96) GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by dag@Build32R5, 2011-08-08 08:47:54 m:res cs ro ds p mounted fstype ... sync'ed: 7.2% (11492/12368)M 0:r0 SyncTarget Secondary/Primary Inconsistent/UpToDate A
Bisogna aspettare finchè la sincronizzazione non è finita e quindi al 100%
IL risultato finale deve essere
drbd driver loaded OK; device status: version: 8.3.11 (api:88/proto:86-96) GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by dag@Build32R5, 2011-08-08 08:47:54 m:res cs ro ds p mounted fstype 0:r0 Connected Primary/Secondary UpToDate/UpToDate A
Per verificare il ruolo
drbdadm role r0 Primary/Secondary
Successicamente '''SOLO SUL NODO PRINCIPALE'''
partizioniamo la nuova partizione virutale drbd
mke2fs -j /dev/drbd0
creiamo una directory e ci montiamo la nuova partizione
mkdir /REPLICA mount /dev/drbd0 /REPLICA
verifichiamo che funzioni correttamente
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol01
5903776 2077156 3521880 38% /
/dev/sda1 101086 25192 70675 27% /boot
tmpfs 2073760 0 2073760 0% /dev/shm
/dev/drbd0 12467704 162152 11672212 2% /REPLICA
creiamo la cartella REPLICA anche sul secondo nodo...
mkdir /REPLICA
Mettiamo il servizio drbd in esecuzione automatica su entrambi i nodi
chkconfig drdb on Installazione Cluster Manager
Installiamo i pacchetti necessari su entrambi i nodi
yum install cman ntp lucci rgmanager
Creiamo a questo punto il file BASE di configurazione uguale su entrambi i nodi
vi /etc/cluster/cluster.conf
Spostiamo il file di configurazione del cluster sul secondo nodo
scp /etc/cluster/cluster.conf 172.16.100.151:/etc/cluster/
Una volta che entrambi hanno gli stessi file di configurazione con le stesse release avviamo il Cluster Manager contemporaneamente su entrambi i nodi
/etc/init.d/cman start
Starting cluster:
Loading modules... done
Mounting configfs... done
Starting ccsd... done
Starting cman... done
Starting daemons... done
Starting fencing... done
[ OK ]
Verifichiamo se i nodi vengono visti all'interno del cluster
clustat Cluster Status for DGVHA @ Wed Oct 19 12:20:42 2011 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ dgvha01 1 Online, rgmanager dgvha02 2 Online, Local, rgmanager
Se entrambi i nodi si vedono correttamente , avviamo il Gestore delle risorse del cluster
/etc/init.d/rgmanager start Starting Cluster Service Manager: [ OK ]
Ora controlliamo nuovamente la situazione del cluster
clustat Cluster Status for DGVHA @ Wed Oct 19 12:20:42 2011 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ dgvha01 1 Online, rgmanager dgvha02 2 Online, Local, rgmanager Service Name Owner (Last) State ------- ---- ----- ------ ----- service:DGVHA01 dgvha01 started
Mettiamo il servizio in avvio automatico
chkconfig cman on chkconfig rgmanager on
Ora creiamo un file che ci serve a far cambiare Primary e Secondary
vi /etc/init.d/cluster-replica #!/bin/bash case $1 in start) drbdadm primary r0 exit 0 ;; stop) drbdadm secondary r0 exit 0 ;; status|check) drbdadm role r0 exit 0 ;; *) exit 1 ;; esac
Diamo i diritti di esecuzione
chmod +x /etc/init.d/cluster-replica
e lo copiamo sul nodo secondario
scp /etc/init.d/cluster-replica 172.16.100.152:/etc/init.d/
Modifichiamo il file /etc/cluster/cluster.conf
vi /etc/cluster/cluster.conf
Per aggiornare una configurazione cambiare la config_version e poi
cman_tool version -r 3
Masquerading sendmail domain and sender
Spesso a causa di filtri antispam o altro, è necessario modificare il mittente di alcune email oppure fare il mascheramento del dominio dell'email
Si lavora principalmente sul file /etc/mail/sendmail.mc ed è necessario sendmail-cf
yum install sendmail-cf
Modifichiamo il file /etc/mail/sendmail.mc mettendo
vi /etc/mail/sendmail.mc FEATURE(always_add_domain)dnl FEATURE(`masquerade_entire_domain')dnl FEATURE(`masquerade_envelope')dnl FEATURE(`allmasquerade')dnl MASQUERADE_AS(`miosito.com')dnl MASQUERADE_DOMAIN(`miosito.')dnl MASQUERADE_DOMAIN(localhost)dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
eliminiamo la seguente riga per far si che root venga ugualmente mascherato
EXPOSED_USER(`root')dnl
Proviamo a ricreare la configurazione di sendmail
make -C /etc/mail /etc/init.d/sendmail restart
per poter mascherare anche il mittente dobbiamo creare due file e un db degli utenti da mascherare
Aggiungiamo al nostro file sendmail.mc
FEATURE(`genericstable',`hash -o /etc/mail/genericstable.db')dnl GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl
Creiamo prima i file controllando quali sono i nomi canonici
sendmail -bt -d0.1 < /dev/null vi /etc/mail/generics-domains miosito.com nomedelserver
Poi creiamo il vero e proprio file degli utenti
vi /etc/mail/genericstable root noreply@miosito.com apache noreply@miosito.com
infine creiamo il db e riavviamo
cd /etc/mail/ makemap -r hash genericstable.db < genericstable make -C /etc/mail /etc/init.d/sendmail restart
APACHE HTTP enable Worker.c
Per utilizzare il WORKER Apache su Centos bisogna scommentare la riga in
vi /etc/sysconfig/httpd HTTPD=/usr/sbin/httpd.worker