Ucarp: Difference between revisions
No edit summary |
|||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] | |||
=UCARP/CARP= | =UCARP/CARP= | ||
Autor: Marek Must<br> 07.12.2012 | Autor: Marek Must<br> 07.12.2012 | ||
Line 89: | Line 90: | ||
Server 1 | Server 1 | ||
Kasutame käsku ifconfig | |||
<pre> | |||
ifconfig | |||
</pre> | |||
<pre> | <pre> | ||
eth0 Link encap:Ethernet HWaddr 00:0c:29:6f:d7:c4 | eth0 Link encap:Ethernet HWaddr 00:0c:29:6f:d7:c4 | ||
inet addr:192.168.101.138 Bcast:192.168.101.255 Mask:255.255.255.0 | inet addr:192.168.101.138 Bcast:192.168.101.255 Mask:255.255.255.0 | ||
Line 113: | Line 119: | ||
</pre> | </pre> | ||
Server 2 | Server 2 | ||
Kas siin kasutame sama käsku, mis eelmise server juures: | |||
<pre> | <pre> | ||
eth0 Link encap:Ethernet HWaddr 00:0c:29:99:51:66 | eth0 Link encap:Ethernet HWaddr 00:0c:29:99:51:66 | ||
inet addr:192.168.101.140 Bcast:192.168.101.255 Mask:255.255.255.0 | inet addr:192.168.101.140 Bcast:192.168.101.255 Mask:255.255.255.0 | ||
Line 196: | Line 204: | ||
ucarp-password secret | ucarp-password secret | ||
# advskew : Advertisement skew [1-255] # tähendab maakeels seda, et me ei reklaamime ennast koguaeg. | # advskew : Advertisement skew [1-255] # tähendab maakeels seda, et me ei reklaamime ennast koguaeg. | ||
ucarp-advskew 1 | ucarp-advskew 1 | ||
# advbase | # advbase | ||
ucarp-advbase 1 | ucarp-advbase 1 | ||
#advskew ja advbase on asjad millega kontrollitakse kui tihedalt brodcastitakse. | |||
# Kontroll, kas oleme peamine server? | # Kontroll, kas oleme peamine server? | ||
ucarp-master yes | ucarp-master yes | ||
Line 211: | Line 224: | ||
Kindlasti tuleb teha võrgule restart, et kõik seaded võetakse kasutusse. | Kindlasti tuleb teha võrgule restart, et kõik seaded võetakse kasutusse. | ||
<pre> | <pre> | ||
Line 217: | Line 229: | ||
</pre> | </pre> | ||
Nüüd on võrgu seaded serveri poolt omaks võetud (juhul kui ei tekkkinud vigu). | |||
Nüüd kasutame meile juba tuttavat käsku ifconfig, et vaadata, kas kõik on hästi. | |||
<pre> | <pre> | ||
ifconfig | |||
</pre> | |||
Peaks nägema välja midagi sellist: | |||
<pre> | |||
eth0 Link encap:Ethernet HWaddr 00:0c:29:6f:d7:c4 | eth0 Link encap:Ethernet HWaddr 00:0c:29:6f:d7:c4 | ||
inet addr:192.168.101.138 Bcast:192.168.101.255 Mask:255.255.255.0 | inet addr:192.168.101.138 Bcast:192.168.101.255 Mask:255.255.255.0 | ||
Line 354: | Line 372: | ||
<pre> | <pre> | ||
eth0 Link encap:Ethernet HWaddr 00:0c:29:99:51:66 | eth0 Link encap:Ethernet HWaddr 00:0c:29:99:51:66 | ||
inet addr:192.168.101.140 Bcast:192.168.101.255 Mask:255.255.255.0 | inet addr:192.168.101.140 Bcast:192.168.101.255 Mask:255.255.255.0 | ||
Line 377: | Line 394: | ||
RX bytes:38580 (38.5 KB) TX bytes:38580 (38.5 KB) | RX bytes:38580 (38.5 KB) TX bytes:38580 (38.5 KB) | ||
</pre> | </pre> | ||
Latest revision as of 09:59, 2 June 2014
UCARP/CARP
Autor: Marek Must
07.12.2012
Rühm: AK21
Esitamise kuupäev:
Sissejuhatus
Carp (inglise k. "Common Address Redundancy Protocol") on protokoll, mis lubab samadel serveritel samas subnetis jagada ühte IP aadressi.
Ucarp on tarkvara, mis võimaldab sul vähemalt 2 serveri olemasolul jagada neile 1 virtuaalne IP aadress, mille tulemusega saadakse kluster. Ucarp ei ole väga peen lahendus ja sellega tuleb alati arvestada.
Ucarpi tugevus
* Lihtsus (ülesse seadmine käib lihtsalt) * Väike serveri ressursside kasutamine * Pole vaja lisa võrgu otsasid (alati on kena, kuid see on täiesti teine teema) * Krüptograafiliselt signeeritud teated. (Ucarpil on seadistatud parool, öeldes lihtsalt) * Suudab töödata koos mitme operatsiooni süsteemiga (inglise k. interoperability )
Tööpühimõte
Ucrap töötab lihtsalt:
1.) Kui "Server 1" on üleval, siis sellele on määratud virtuaalne IP aadress. 2.) Kui "Server 1" on maas ja "Server 2" on primaarne (inglise k. primary), siis on määratud "Server2"-le virtuaalne IP aadress, eeldades, et "Server 2" töötab.
Ucarpi Nõrkus
* Ainult IP põhine kluster * Seadeid, teenuseid üle ei kanta, kui "Server 2" saab peamiseks serveriks.
Tsiteerides targemaid: ucarp on võrreldes keepalived või heartbeat tarkvaraga tagasihoidlikemate omadustega, kuid mõnel juhul võib just see ollagi eeliseks
UCARP install
Install käib lihtsalt:
apt-get install ucarp
Selle pannakse programmid peale. mitte unustada, et tarkvara tuleb installida mõlemale serverile!!
Eel Seadistamine
- 1.) Teil on installeeritud 2 serverit, kas siis virtuaalsed või mitte.
- 2.) Ubuntu tavaline install on täiesti piisav.
- 3.) Vmware või Virtualboxi installi kasutades on elu natukene lihtsam (seda kasutan ka siin hetkel)
Kasutates Ubuntu kiir installi ja lasite alguses IP anda endale DHCP-l, milleks minu juhul on: 192.168.101.138
Seda saab vaadata:
ifconfig
Tulemüüri(inglise k. Gateway) saamine on natuke keerulisem, sest DHCP-ga seda ei ole võimalik päris "tavaliselt" ( ifconfig) näha. Tulemüüri nägemiseks on olemas mitu võimalust, kuid mulle meeldib kasutada traceroutei. Tava installis seda paketti peal ei ole ja seega tuleks see paigaldada
apt-get install traceroute
Kasutades traceroutei saame:
traceroute www.neti.ee
ja esimene tulemus annab meile juba teada, meie DHCP aadressi:
root@ubuntu:~# traceroute www.neti.ee traceroute to www.neti.ee (195.50.209.245), 30 hops max, 60 byte packets 1 192.168.101.2 (192.168.101.2) 0.139 ms 0.103 ms 0.076 ms^C
Pärast esimest rida võib traceroutei programmist CTRL-C välja minna, pole põhjust edasi oodata. Info olemas.
Meie IP ja tulemüür peaksid nägema välja hetkel sellised:
IP: 192.168.101.138 GW: 192.168.110.2
Teie praegune olukord peaks olema midagi sellist:
Server 1
Kasutame käsku ifconfig
ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:6f:d7:c4 inet addr:192.168.101.138 Bcast:192.168.101.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe6f:d7c4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8377 errors:0 dropped:0 overruns:0 frame:0 TX packets:5937 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:9556394 (9.5 MB) TX bytes:426352 (426.3 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Server 2
Kas siin kasutame sama käsku, mis eelmise server juures:
eth0 Link encap:Ethernet HWaddr 00:0c:29:99:51:66 inet addr:192.168.101.140 Bcast:192.168.101.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe99:5166/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7586 errors:0 dropped:0 overruns:0 frame:0 TX packets:4140 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:9481944 (9.4 MB) TX bytes:253201 (253.2 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:112 (112.0 B) TX bytes:112 (112.0 B)
Ucarp Seadistammine
Server 1
vim /etc/network/interfaces
Peaks avanema selline pilt:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
Nüüd siis muudame selle ümber:
root@ubuntu:~# vim /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static ################################ # standard network configuration ################################ address 192.168.101.138 # meie IP, mis panime alguses netmask 255.255.255.0 # netmask, selle saab ifconfig käsuga gateway 192.168.101.2 # traceroute aitas siin network 192.168.101.0 # natuke tuletamist.. broadcast 192.168.101.255 #samuti ifconfig aitab ################################ # ucarp configuration ######### ################################ # vid : The ID of the virtual server [1-255] ucarp-vid 1 # vip : Virtuaalne IP aadress ucarp-vip 192.168.101.139 # password : Mõlemal pool sama!!!! ucarp-password secret # advskew : Advertisement skew [1-255] # tähendab maakeels seda, et me ei reklaamime ennast koguaeg. ucarp-advskew 1 # advbase ucarp-advbase 1 #advskew ja advbase on asjad millega kontrollitakse kui tihedalt brodcastitakse. # Kontroll, kas oleme peamine server? ucarp-master yes # CARP võrgu addressi kirjutame siia lihtsalt iface eth0:ucarp inet static address 192.168.101.139 netmask 255.255.255.0
Kindlasti tuleb teha võrgule restart, et kõik seaded võetakse kasutusse.
/etc/init.d/networking restart
Nüüd on võrgu seaded serveri poolt omaks võetud (juhul kui ei tekkkinud vigu).
Nüüd kasutame meile juba tuttavat käsku ifconfig, et vaadata, kas kõik on hästi.
ifconfig
Peaks nägema välja midagi sellist:
eth0 Link encap:Ethernet HWaddr 00:0c:29:6f:d7:c4 inet addr:192.168.101.138 Bcast:192.168.101.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe6f:d7c4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1195 errors:0 dropped:0 overruns:0 frame:0 TX packets:287 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:88166 (88.1 KB) TX bytes:29985 (29.9 KB) eth0:ucarp Link encap:Ethernet HWaddr 00:0c:29:6f:d7:c4 inet addr:192.168.101.139 Bcast:192.168.101.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:36 errors:0 dropped:0 overruns:0 frame:0 TX packets:36 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2712 (2.7 KB) TX bytes:2712 (2.7 KB)
See annab meile selguse, et Server1s on Ucarp kasutuses!
Server 2
Nüüd tuleks teha samasugune muutus ka server 2s. Olles laisad, siis saame nüüd kopeerida selle ka teise serverisse, pärast teeme muudatused: Paar asja on siin väga tähtsad:
1.) ucarp-advskew 100 # tähendab maakeeles seda, et me ei reklaami ennast nii tihedalt. 2.) ucarp-master no # Server ka ei ole master! 3.) IP address peab olema ikka selle serveri oma (192.168.101.140). Muud asjad samad 4.) virtuaalsed IP-d peaksid olema need, mis eelmisel serveril.
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static ################################ # standard network configuration ################################ address 192.168.101.140 netmask 255.255.255.0 gateway 192.168.101.2 network 192.168.101.0 broadcast 192.168.101.255 ################################ # ucarp configuration ################################ # vid : The ID of the virtual server [1-255] ucarp-vid 1 # vip : Virtuaalne IP aadress ucarp-vip 192.168.101.139 # password : A password used to encrypt Carp communications ucarp-password secret # advskew : Advertisement skew [1-255] ucarp-advskew 100 # advbase : Interval in seconds that advertisements will occur ucarp-advbase 1 # master : nüüd me enam ei ole master. Seega määrame ära "no" ucarp-master no # The carp network interface, on top of eth1 iface eth0:ucarp inet static address 192.168.101.139 netmask 255.255.255.0
Nüüd kui vastavad muudatused on sees, siis teeme ka võrgule restarti
/etc/init.d/networking restart
Kui märkasid, siis tegelikult midagi ei juhtunud, kuna oleme mitte masterid!
Kõik peaks nägema välja nagu endine:
eth0 Link encap:Ethernet HWaddr 00:0c:29:99:51:66 inet addr:192.168.101.140 Bcast:192.168.101.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe99:5166/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:213 errors:0 dropped:0 overruns:0 frame:0 TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:17498 (17.4 KB) TX bytes:12669 (12.6 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:18 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1380 (1.3 KB) TX bytes:1380 (1.3 KB)
UCARP testimine
Nüüd on mõlemad serverid paigas ja töötavad Ucarp on mõlemale installitud, kuid hetkel me ikka ei tea, kas Ucarp tegelikult ka töötab.
Kerge test võiks olla selline, et paneme serveri kinni, millel hetkel on ucarp aktiveeritud, minu puhul
shutdown -h now
Nüüd peaksid nägema Server2s (minu puhul) ucarpi aktiveeritult.
ifconfig
Vastus:
eth0 Link encap:Ethernet HWaddr 00:0c:29:99:51:66 inet addr:192.168.101.140 Bcast:192.168.101.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe99:5166/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1270 errors:0 dropped:0 overruns:0 frame:0 TX packets:929 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:94480 (94.4 KB) TX bytes:113861 (113.8 KB) eth0:ucarp Link encap:Ethernet HWaddr 00:0c:29:99:51:66 inet addr:192.168.101.139 Bcast:192.168.101.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:482 errors:0 dropped:0 overruns:0 frame:0 TX packets:482 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:38580 (38.5 KB) TX bytes:38580 (38.5 KB)
Annab meile jällegi kindlustunde, et tõesti server1 annab oma asjad üle server2le, kui server1-ga peaks midagi juhtuma.
UCARP ja Apache koos
Idee on lihtne. Installime mõlemale serverile apache serveri ja hoiame neid süngis linuxi vahenditega. Selleks võib olla rsync või ka tavaline copy cronis :) Hetkel kasutame rsynci.
Installime apachei ja rsynci:
Server1:
apt-get install apache2 rsync
Server2:
apt-get install apache2 rsync
Nüüd on meil 2 serverit, millel on Rsync ja apache2 installitud Apache2 hoiab oma asju:
/etc/apache2
Siis tuleks meil kindlasti sünkida seda kataloogi ja samuti ei tohi ära unustada ka kataloogi, kus meie apache asub Näiteks:
/var/www/
Nüüd paneme oma rsynci tööle, soovitavalt Crontabi. Meil tekkib probleem, et oleks vaja pärast apache2 konfiguratsioonide muutmist ka apache2 uuesti "reloadida". Selleks kasutame skripti. Hetkel siin kasutamiseks kirjutasin lihtsa skripti, mida saab endale vastavalt kergelt parandada.
touch /root/apache_rsync.sh
Anname käivitamise õigused, et pärast ei unustaks:
chmod 755 apache_rsync.sh
Nüüd, skript ise. Eeldus on see, et mõlemal pool on SSH lubatud!
vim /root/apache_rsync.sh
#!/bin/sh #rsync ise rsync -avz -e ssh root@192.168.101.138:/home/apache2 /home/apache2/ rsync -avz -e ssh root@192.168.101.138:/var/www/html /var/www/html #p2rast asjade yle kopeerimist tuleb teha reaload et teisel pool ikka asjad t66taks. /etc/init.d/apache2 reload
See nüüd croni server2-le
vim /etc/crontab
Lisage selline rida. Sellega hakatakse rsyncika hoidma servereid sünkroonis. Tehakse iga 15 minuti järgi. Number 15 võib muuta oma äranägemise järgi.
*/15 * * * * root /root/apache_rsync.sh
Kokkuvõtteks
Võiks öelda, et viimane skript on väga väike ja võiks kõvasti paremaks teha. Näiteks: email saatmise sisse panna, sest hetkel me ei tea, millal server1 on põhiline ja millal server2 on põhiline. Hetkel teeme eelduse , et server1 sai fataalse errori ja on katki ja pärast selle korda tegemist on see jälle põhiline.
Kasutatud kirjandus
- http://valeriytroshin.blogspot.com/2011/08/carp-failover-redundancy-in-ubuntu-1104.html
- http://laurentbel.com/2012/04/12/simple-apache-failover-cluster-on-ubuntu-with-config-synchronization/
- http://www.auul.pri.ee/wiki/Operatsioonis%C3%BCsteemi_Debian_GNU/Linux_kasutamine#ucarp_kasutamine
- http://www.freebsd.org/doc/handbook/carp.html
- http://laurentbel.com/2012/04/04/simple-failover-cluster-on-ubuntu-using-carp/
- http://en.wikipedia.org/wiki/Common_Address_Redundancy_Protocol
- http://blog.ijun.org/2009/11/high-availability-with-freebsd-and-carp.html
- http://www.howtoforge.com/how-to-configure-a-pfsense-2.0-cluster-using-carp
- http://kuutorvaja.eenet.ee/wiki/K%C3%B5rgk%C3%A4ideldavus_UCARP_abil#Paigaldamine_ja_seadistamine_RHEL.2C_CentOS_ja_Fedora_kasutajatele
- http://www.pureftpd.org/project/ucarp