8.5. Reconfigurarea Pacemaker pentru Activ/Activ
Aproape totul este la locul său. Versiunile recente de DRBD sunt capabile să opereze în mod Primar/Primar și sistemul de fișiere pe care îl folosim este conștient de cluster. Tot ce trebuie să facem aum este să reconfigurăm clusterul pentru a profita de acest lucru.
Acest lucru va implica un număr de modificări, așa că vom folosi din nou modul interactiv.
# crm # cib new active
Nu are nici un sens să facem serviciile active în ambele locații dacă nu putem ajunge la acestea, așa că hai să clonăm adresa IP. Resursele clonate IPaddr2 folosesc o regulă de iptables pentru a se asigura că fiecare cerere nu este procesată decât de una din cele două instanțe ale clonei. Meta opțiunile adiționale spun clusterului câte instanțe ale clonei dorim (câte o "găleată de cereri" pentru fiecare nod) și că dacă toate celelalte noduri eșuează, atunci nodul care rămâne ar trebui să le țină pe toate. Altfel cererile ar fi pur și simplu aruncate.
meta globally-unique="true" clone-max="2" clone-node-max="2"
Acum trebuie să spunem ClusterIP-ului cum să decidă care cereri sunt procesate de care gazde. Pentru a realiza acest lucru trebuie să specificăm parametrul clusterip_hash.
Deschideți resursa ClusterIP
Adăugați următoarele pe linia params
clusterip_hash="sourceip"
Astfel încât definiția completă să arate precum:
primitive ClusterIP ocf:heartbeat:IPaddr2 \
params ip="192.168.122.101" cidr_netmask="32" clusterip_hash="sourceip" \
op monitor interval="30s"
Aici este transcrierea completă
INFO: active shadow CIB created
crm(active)
meta globally-unique="true" clone-max="2" clone-node-max="2"
crm(active)
node pcmk-2
primitive WebData ocf:linbit:drbd \
params drbd_resource="wwwdata" \
op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="gfs2"
primitive WebSite ocf:heartbeat:apache \
params configfile="/etc/httpd/conf/httpd.conf" \
op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
params ip="192.168.122.101" cidr_netmask="32" clusterip_hash="sourceip" \
op monitor interval="30s"
ms WebDataClone WebData \
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
clone WebIP ClusterIP \
meta globally-unique="true" clone-max="2" clone-node-max="2"
colocation WebSite-with-WebFS inf: WebSite WebFS
colocation fs_on_drbd inf: WebFS WebDataClone:Master
colocation website-with-ip inf: WebSite WebIPorder WebFS-after-WebData inf: WebDataClone:promote WebFS:start
order WebSite-after-WebFS inf: WebFS WebSiteorder apache-after-ip inf: WebIP WebSite
property $id="cib-bootstrap-options" \
dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
resource-stickiness="100"
Vedeți câte restricții care referențiau ClusterIP au fost actualizate pentru a folosi WebIP în schimb. Acesta este un beneficiu adițional al folosirii shell-ului crm.
În continuare trebuie să convertim resursele de sistem de fișiere și Apache în clone. Din nou, shell-ul va actualiza în mod automat orice restricții relevante.
crm(active)
crm(active)
Ultimul pas este acela de a spune clusterului că acum îi este permis să promoveze ambele instanțe să fie Primare (Master).
crm(active)
Schimbați master-max la 2
crm(active)
node pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
params drbd_resource="wwwdata" \
op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="gfs2"
primitive WebSite ocf:heartbeat:apache \
params configfile="/etc/httpd/conf/httpd.conf" \
op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
params ip="192.168.122.101" cidr_netmask="32" clusterip_hash="sourceip" \
op monitor interval="30s"
ms WebDataClone WebData \
meta master-max="2" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
clone WebFSClone WebFSclone WebIP ClusterIP \
meta globally-unique="true" clone-max="2" clone-node-max="2"
clone WebSiteClone WebSitecolocation WebSite-with-WebFS inf: WebSiteClone WebFSClone
colocation fs_on_drbd inf: WebFSClone WebDataClone:Master
colocation website-with-ip inf: WebSiteClone WebIP
order WebFS-after-WebData inf: WebDataClone:promote WebFSClone:start
order WebSite-after-WebFS inf: WebFSClone WebSiteClone
order apache-after-ip inf: WebIP WebSiteClone
property $id="cib-bootstrap-options" \
dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
resource-stickiness="100"
Revizuiți configurația înainte de a o încărca pe cluster, părăsind shell-ul și urmărind răspunsul clusterului
crm(active)
INFO: commited 'active' shadow CIB to the cluster
crm(active)
bye
============
Last updated: Thu Sep 3 21:37:27 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
6 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
Master/Slave Set: WebDataClone
Masters: [ pcmk-1 pcmk-2 ]
Clone Set: WebIP Started: [ pcmk-1 pcmk-2 ]
Clone Set: WebFSClone Started: [ pcmk-1 pcmk-2 ]
Clone Set: WebSiteClone Started: [ pcmk-1 pcmk-2 ]
8.5.1. Testarea Recuperării
TODO: Plasarea unui nod în standby pentru a demonstra failover-ul