Az mgmt gépeken fut a teljes cluster managementje. LDAP, DHCPD, PXE, NFS, stb.
A két mgmt gép közötti kapcsolatot egy közvetlen kábel biztosítja. A rendszerek magas rendelkezésreállásáról a Corosync nevű szoftver gondoskodik. Az Load Balancer funkcionalitást Ldirectord-vel oldottuk meg. A CRMben (Cluster Resource Manager) több erőforrás van definiálva, VIP címek és szolgáltatások, melyek csoportokba vannak szervezve és megfelelő indulási sorrenddel vannak konfigurálva.
A felhasználók számára létezik egy IP filter nevű felület, ahol lehetőségük van szűrni IP címeket a rendszerből. Egy shell script (/usr/local/sbin/ipfilter.sh) keresi a block/* authorizedService-t a ou=Users,dc=ldap,dc=dwsc fában, majd ezeket felveszi egy láncba, melynek a neve a fileban van definiálva. A script cronból fut percenként.
A resource listat a crm status
paranccsal tudjuk lekerdezni.
root@mgmt1:~# crm status ============ Last updated: Fri May 3 10:50:16 2013 Last change: Thu May 2 11:01:36 2013 via cibadmin on mgmt1 Stack: openais Current DC: mgmt1 - partition with quorum Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff 2 Nodes configured, 2 expected votes 15 Resources configured. ============ Online: [ mgmt1 mgmt2 ] Clone Set: ping2 [ping1] Started: [ mgmt2 mgmt1 ] Resource Group: mgmt mgmtVIP (ocf::heartbeat:IPaddr2): Started mgmt1 mgmtIntVIP (ocf::heartbeat:IPaddr2): Started mgmt1 TFTPD (lsb:tftpd-hpa): Started mgmt1 lvs (ocf::heartbeat:ldirectord): Started mgmt1 ftpd (lsb:pure-ftpd-ldap): Started mgmt1 vip-5.159.232.30 (ocf::heartbeat:IPaddr2): Started mgmt1 vip-5.159.232.31 (ocf::heartbeat:IPaddr2): Started mgmt1 vip-5.159.232.33 (ocf::heartbeat:IPaddr2): Started mgmt1 vip-5.159.232.34 (ocf::heartbeat:IPaddr2): Started mgmt1 vip-5.159.232.35 (ocf::heartbeat:IPaddr2): Started mgmt1 vip-5.159.232.36 (ocf::heartbeat:IPaddr2): Started mgmt1 vip-5.159.232.37 (ocf::heartbeat:IPaddr2): Started mgmt1 vip-5.159.232.38 (ocf::heartbeat:IPaddr2): Started mgmt1
A kimenet jól mutatja, hogy mely szolgáltatások mely gépen futnak.
Új ügyfél esetén az Edge VIP címét fel kell venni a load-balancerbe. Ehhez egy új primitive -et kell felvenni és az erőforrás nevét a coloc_vips
colocation és az ord_vips
order részbe fel kell venni.
root@mgmt1:~# crm crm(live)# configure crm(live)configure# primitive vip-5.159.232.38 ocf:heartbeat:IPaddr2 params ip="5.159.232.38" cidr_netmask=24 lvs_support=true edit
Az edit parancs után bejön az EDITOR környezeti változóból vett szerkesztő
colocation coloc_vips inf: vip-5.159.232.30 vip-5.159.232.31 vip-5.159.232.33 vip-5.159.232.34 vip-5.159.232.35 vip-5.159.232.36 vip-5.159.232.37 vip-5.159.232.38 mgmt order ord_vips inf: vip-5.159.232.30 vip-5.159.232.31 vip-5.159.232.33 vip-5.159.232.34 vip-5.159.232.35 vip-5.159.232.36 vip-5.159.232.37 vip-5.159.232.38 mgmt
Fontos, hogy az új vip primitive az mgmt
group elé kerüljön, különben nem fog sikerülni az Ldirectord bind.
Ha sikerült a verify
paranccal ellenőrizhető a konfiguráció. Amennyiben megfelelő a commit
paranncsal érvényesíthető a változás.
Bővebb dokumentációt a Corosyncről a project oldalán lehet találni.
http://clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Pacemaker_Explained/
IP cím takarékosság miatt az ügyfelek bejövő streamje nem kap külön IP címet, csak a kimenő. Ezért minden ügyfél a megfelelő portra tudja küldeni a forgalmat, melyet az Admin felületen talál (Stream group lista).
Az ügyfelek portját fel kell venni az ldirectord.cf
fájlba. Ha az ügyfél port 2250 és az Origin VIP 5.159.232.31, akkor /etc/ha.d/ldirectord.cf
:
virtual=5.159.232.31:2250 real=origin1.dwsc:2250 gate real=origin2.dwsc:2250 gate scheduler=wrr persistent=5 protocol=tcp checktype=negotiate checkport=2250 service=http request="lvs"
Az ügyfél porton kívül az Edge IP címet is be kell konfigurálni, ha még nem volt használva /etc/ha.d/ldirectord.cf
, a checkport-ot az origin konfigban megadott portra kell beállítani (az előbbi példában 2250):
virtual=5.159.232.30:1935 real=edge1.dwsc:1935 gate real=edge2.dwsc:1935 gate scheduler=wrr persistent=30 protocol=tcp checktype=negotiate checkport=2250 service=http request="lvs" virtual=5.159.232.30:80 real=edge1.dwsc:80 gate real=edge2.dwsc:80 gate scheduler=wrr persistent=30 protocol=tcp checktype=negotiate checkport=2250 service=http request="lvs"
A konfiguráció után a Ldirectord szolgáltatást újra kell tölteni:
root@mgmt1:~# /etc/init.d/ldirectord reload [....] Running ldirectord: reload
Az elkészült beállíást az ipvsadm -L
paranccal tudjuk ellenőrizni.
Az LVS tábláit közvetlenül nem érdemes konfigurálni, mert a periodikusan futó Ldirectord vissza fogja állítani az eredeti állapotra.
Az /etc/ha.d/ldirectord.cf fájlt másolni kell 2 szerver között!