Vrrp: Porovnání verzí
Řádek 2: | Řádek 2: | ||
== HW == | == HW == | ||
− | Pro naši modelovou situaci použijeme jako routry dva PCengines APU s přeinstalovaným základním systémem, switch a klientské zařízení na kterém budeme testovat funkčnost VRRP, v našem případě půjde o PC s | + | Pro naši modelovou situaci použijeme jako routry dva PCengines APU s přeinstalovaným základním systémem, switch a klientské zařízení na kterém budeme testovat funkčnost VRRP, v našem případě půjde o PC s Linuxem. |
== VRRP na Debianu == | == VRRP na Debianu == | ||
− | Konfigurace, použité verze aplikací a serverů platí pro v době psaní návodu aktuální stable release debianu a to verzi 8.5 | + | Konfigurace, použité verze aplikací a serverů platí pro, v době psaní návodu aktuální, stable release debianu a to verzi 8.5 |
* Nejdříve si nastavíme na obou routrech statické IP adresy, v našem případě jsem zvolil pro interface eth1 adresy 192.168.100.10 a 11 za předpokladu, že IP routru v síti (tedy z pohledu routrů virtuální adresa) má být 192.168.100.1 | * Nejdříve si nastavíme na obou routrech statické IP adresy, v našem případě jsem zvolil pro interface eth1 adresy 192.168.100.10 a 11 za předpokladu, že IP routru v síti (tedy z pohledu routrů virtuální adresa) má být 192.168.100.1 | ||
− | * Protože virtuální adresa nebude fyzicky nastavena | + | * Protože virtuální adresa nebude fyzicky nastavena na jednom nebo více routrech (pouze na aktivním), musíme systému říct, aby na tuto adresu odpovídal. Do /etc/sysctl.conf přidáme tento řádek: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
net.ipv4.ip_nonlocal_bind=1 | net.ipv4.ip_nonlocal_bind=1 | ||
Řádek 22: | Řádek 22: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
vrrp_instance VI_1 { | vrrp_instance VI_1 { | ||
− | state MASTER | + | state MASTER !MASTER ma nejvyssi prioritu |
− | interface eth1 | + | interface eth1 !interface na kterem bude keepalived komunikovat, tedy ten interface ve stejne siti/vlan jako zalozni routr(y) |
− | virtual_router_id 1 | + | virtual_router_id 1 !identifikator virtualniho routru |
− | priority 100 | + | priority 100 !priorita daneho routru, fakticky je to jedina hodnota, ktera se meni, plati, ze vim vyssi cislo, tim vyssi priorita |
− | advert_int 1 | + | advert_int 1 !hodnota v sekundach jak casto se bude routr dotazovat ostatnich routru jestli jsou nazivu |
authentication { | authentication { | ||
− | auth_type PASS | + | auth_type PASS !typ autentifikace, PASS je plaintext heslo |
− | auth_pass TajneHeslo | + | auth_pass TajneHeslo !heslo v plaintext |
} | } | ||
virtual_ipaddress { | virtual_ipaddress { | ||
− | 192.168.100.1 dev eth1 | + | 192.168.100.1/24 dev eth1 |
+ | !virtualni adresa a zarizeni, kteremu se ma priradit, pokud ma routr vic adres, | ||
+ | !vic interfacu, postupujeme analogicky IP dev INTERFACE, napr. | ||
+ | !192.168.101.1 dev vlan10 | ||
+ | !192.168.102.1 dev vlan20 | ||
+ | !apod. | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | '' | + | * Spustím daemona keepalived: |
+ | <syntaxhighlight lang="bash"> | ||
+ | service keepalived start | ||
+ | </syntaxhighlight> | ||
+ | * Daemon by měl do logu vypsat něco jako: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | Sep 6 14:35:03 host2 Keepalived[959]: Starting Keepalived v1.2.13 (05/28,2014) | ||
+ | Sep 6 14:35:03 host2 Keepalived[960]: Starting Healthcheck child process, pid=962 | ||
+ | Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Initializing ipvs 2.6 | ||
+ | Sep 6 14:35:03 host2 Keepalived[960]: Starting VRRP child process, pid=963 | ||
+ | Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Registering Kernel netlink reflector | ||
+ | Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Registering Kernel netlink command channel | ||
+ | Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Registering Kernel netlink reflector | ||
+ | Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Registering gratuitous ARP shared channel | ||
+ | Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Registering Kernel netlink command channel | ||
+ | Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Opening file '/etc/keepalived/keepalived.conf'. | ||
+ | Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Configuration is using : 5295 Bytes | ||
+ | Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Opening file '/etc/keepalived/keepalived.conf'. | ||
+ | Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Configuration is using : 60752 Bytes | ||
+ | Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Using LinkWatch kernel netlink reflector... | ||
+ | Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Using LinkWatch kernel netlink reflector... | ||
+ | Sep 6 14:35:04 host2 Keepalived_vrrp[963]: VRRP_Instance(VI_1) Transition to MASTER STATE | ||
+ | Sep 6 14:35:05 host2 Keepalived_vrrp[963]: VRRP_Instance(VI_1) Entering MASTER STATE | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Testování funkčnosti == |
Verze z 6. 9. 2016, 14:08
VRRP neboli Virtual Router Redundancy Protocol slouží k vytvoření jednoho nebo více routrů, které se navzájem zálohují a plně přebírají funkci pokud primární routr z jakéhokoli důvodu přestane fungovat. Záložních routrů může být 1 až x. Způsob zapojení routrů do HA není předmětem tohoto návodu, jde pouze o ukázku konfigurace a funkčnosti takovéhoto řešení vysoké dostupnosti routrů. Princip jako funguje VRRP, HSRP apod. také není předmětem tohoto návodu, jak VRRP funguje: [1]
HW
Pro naši modelovou situaci použijeme jako routry dva PCengines APU s přeinstalovaným základním systémem, switch a klientské zařízení na kterém budeme testovat funkčnost VRRP, v našem případě půjde o PC s Linuxem.
VRRP na Debianu
Konfigurace, použité verze aplikací a serverů platí pro, v době psaní návodu aktuální, stable release debianu a to verzi 8.5
- Nejdříve si nastavíme na obou routrech statické IP adresy, v našem případě jsem zvolil pro interface eth1 adresy 192.168.100.10 a 11 za předpokladu, že IP routru v síti (tedy z pohledu routrů virtuální adresa) má být 192.168.100.1
- Protože virtuální adresa nebude fyzicky nastavena na jednom nebo více routrech (pouze na aktivním), musíme systému říct, aby na tuto adresu odpovídal. Do /etc/sysctl.conf přidáme tento řádek:
net.ipv4.ip_nonlocal_bind=1
- Pro načtení změn v /etc/sysctl.conf provedeme příkaz:
sysctl -p
man sysctl -p: Load in sysctl settings from the file specified or /etc/sysctl.conf if none given. Specifying - as filename means reading data from standard input.
- Nainstalujeme keepalived
apt-get install keepalived
- Editujeme /etc/keepalived/keepalived.conf pro routr 1:
vrrp_instance VI_1 {
state MASTER !MASTER ma nejvyssi prioritu
interface eth1 !interface na kterem bude keepalived komunikovat, tedy ten interface ve stejne siti/vlan jako zalozni routr(y)
virtual_router_id 1 !identifikator virtualniho routru
priority 100 !priorita daneho routru, fakticky je to jedina hodnota, ktera se meni, plati, ze vim vyssi cislo, tim vyssi priorita
advert_int 1 !hodnota v sekundach jak casto se bude routr dotazovat ostatnich routru jestli jsou nazivu
authentication {
auth_type PASS !typ autentifikace, PASS je plaintext heslo
auth_pass TajneHeslo !heslo v plaintext
}
virtual_ipaddress {
192.168.100.1/24 dev eth1
!virtualni adresa a zarizeni, kteremu se ma priradit, pokud ma routr vic adres,
!vic interfacu, postupujeme analogicky IP dev INTERFACE, napr.
!192.168.101.1 dev vlan10
!192.168.102.1 dev vlan20
!apod.
}
}
- Spustím daemona keepalived:
service keepalived start
- Daemon by měl do logu vypsat něco jako:
Sep 6 14:35:03 host2 Keepalived[959]: Starting Keepalived v1.2.13 (05/28,2014)
Sep 6 14:35:03 host2 Keepalived[960]: Starting Healthcheck child process, pid=962
Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Initializing ipvs 2.6
Sep 6 14:35:03 host2 Keepalived[960]: Starting VRRP child process, pid=963
Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Registering Kernel netlink reflector
Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Registering Kernel netlink command channel
Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Registering Kernel netlink reflector
Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Registering gratuitous ARP shared channel
Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Registering Kernel netlink command channel
Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Configuration is using : 5295 Bytes
Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Configuration is using : 60752 Bytes
Sep 6 14:35:03 host2 Keepalived_vrrp[963]: Using LinkWatch kernel netlink reflector...
Sep 6 14:35:03 host2 Keepalived_healthcheckers[962]: Using LinkWatch kernel netlink reflector...
Sep 6 14:35:04 host2 Keepalived_vrrp[963]: VRRP_Instance(VI_1) Transition to MASTER STATE
Sep 6 14:35:05 host2 Keepalived_vrrp[963]: VRRP_Instance(VI_1) Entering MASTER STATE