Vrrp: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
Řá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 Windows.
+
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 ani na jednom routru, musíme systému říct, aby na tuto adresu odpovídal. Do /etc/sysctl.conf přidáme tento řádek:
+
* 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>
''Popis položek:''
+
* 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

Testování funkčnosti