WEBLABORATORY Blog by ONE2 Networking & Programming

16gen/120

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
16gen/120

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
9gen/120

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
21dic/110

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
Inserito in: Linux Nessun commento