V prvním článku této série, Používání Keepalived pro správu jednoduchého převzetí služeb při selhání v clusterech, jste se dozvěděli o Keepalived
a VRRP
protokol pro selhání IP adresy z jednoho stroje na druhý. Nyní je čas ušpinit si ruce a dozvědět se o instalaci a základní konfiguraci Keepalived
. V tomto článku nastavíte Keepalived
povolit převzetí služeb při selhání mezi dvěma servery. Začněme!
Udržovaná instalace
Keepalived
je k dispozici ve standardních repozitářích balíčků a lze jej snadno nainstalovat pomocí yum
:
[root@server1 ~]# yum install -y keepalived
[root@server1 ~]# keepalived --version
Keepalived v2.0.10 (11/12,2018)
[root@server1 ~]# systemctl status keepalived
keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disab
Active: inactive (dead)
Měli byste také vědět, jak zkompilovat Keepalived
ze zdrojového kódu. Keepalived
je aktivně udržovaný projekt a pravidelně dostává nové funkce a opravy chyb, které nemusí být ve verzi správce balíčků, když je potřebujete. Při psaní této série jsem dokonce narazil na chyby s aktuální verzí v repozitářích balíčků a musel jsem postupovat přesně podle tohoto postupu, abych mohl používat nejnovější verzi Keepalived
.
# Install prerequisites
yum install -y gcc openssl-devel
# Download the latest version of the code. Be sure to check the downloads page for the most recent version:https://www.keepalived.org/download.html
[root@localhost ~]# wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz
# Extract the code
[root@localhost ~]# tar -xf keepalived-2.0.20.tar.gz
# Run the configure scripts
[root@localhost ~]# cd keepalived-2.0.20
[root@localhost keepalived-2.0.20]# ./configure
# Build and install keepalived
[root@localhost keepalived-2.0.20]# make
[root@localhost keepalived-2.0.20]# make install
# Test your installation
[root@localhost keepalived-2.0.20]# keepalived --version
Keepalived v2.0.20 (01/22,2020)
Základní konfigurace
Symboly sítě v diagramech dostupné prostřednictvím VRT Network Equipment Extension, CC BY-SA 3.0.
Konfigurační soubor pro Keepalived
je umístěn na /etc/keepalived/keepalived.conf
. Jak je uvedeno v předchozím článku Keepalived
dokáže více než jen implementovat základní VRRP
. To vede ke konfiguračnímu souboru, který se může zdát skličující, když se podíváte na manuálovou stránku Keepalived. Jednoduché topologie, jako je ta výše, však lze dosáhnout s minimální konfigurací.
Nejzákladnější Keepalived
konfigurace umožňuje sdílenou IP adresu mezi dvěma servery. Ve výše uvedené topologii je server1 hlavní server a server2 je záloha. Konfigurace pro oba servery je jednoduchá.
Konfigurace serveru 1:
server1# cat /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 255
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
virtual_ipaddress {
192.168.122.200/24
}
}
Konfigurace serveru 2:
server2# cat /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 254
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
virtual_ipaddress {
192.168.122.200/24
}
}
Konfigurační směrnice by měly být zřejmé z jejich konvencí pojmenování, ale projdu si každou z nich:
vrrp_instance
definuje individuální instanciVRRP
protokol běžící na rozhraní. Tuto instanci jsem libovolně pojmenoval VI_1.state
definuje počáteční stav, ve kterém by instance měla začít.interface
definuje rozhraní, kteréVRRP
běží dál.virtual_router_id
je jedinečný identifikátor, o kterém jste se dozvěděli v prvním článku této série.priority
je inzerovaná priorita, o které jste se dozvěděli v prvním článku této série. Jak se dozvíte v dalším článku, priority lze upravit za běhu.advert_int
určuje frekvenci, s jakou jsou reklamy odesílány (v tomto případě 1 sekunda).authentication
specifikuje informace nezbytné pro servery účastnící seVRRP
k vzájemné autentizaci. V tomto případě je definováno jednoduché heslo.virtual_ipaddress
definuje IP adresy (může jich být více), kteréVRRP
je zodpovědný za.
Pokud používáte hostitelský firewall, jako je firewalld
nebo iptables
, pak musíte přidat nezbytná pravidla pro povolení provozu protokolu IP 112. V opačném případě Keepalived
reklamní metoda nebude fungovat. Konfigurace hostitelského firewallu je mimo rozsah tohoto článku, ale určitě si přečtěte některé z dalších článků Enable Sysadmin o iptables a firewalld, kde najdete další informace.
S výše uvedenou konfigurací můžete spustit Keepalived
na obou serverech pomocí systemctl start keepalived
a sledujte IP adresy na každém počítači. Všimněte si, že server1 se spustil jako VRRP
master a vlastní sdílenou IP adresu (192.168.122.200), zatímco IP adresy serveru2 zůstávají nezměněny:
server1# ip -brief address show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 192.168.122.101/24 192.168.122.200/24 fe80::5054:ff:fe82:d66e/64
server2# ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 192.168.122.102/24 fe80::5054:ff:fe04:2c5d/64
Jakmile potvrdíte, že Keepalived
se spustil na obou serverech a server1 je aktivní hlavní server, můžete vyzkoušet funkci převzetí služeb při selhání „přehozením“ VIP na druhý server. Zastavením Keepalived
na serveru1 přestane aktivní hlavní server odesílat reklamy a server2 převezme VIP:
server1# systemctl stop keepalived
server1# ip -brief address show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 192.168.122.101/24 fe80::5054:ff:fe82:d66e/64
server2# ip -brief address show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 192.168.122.102/24 192.168.122.200/24 fe80::5054:ff:fe04:2c5d/64
A to je vše! Nyní máte základní pár redundantních serverů.
Monitorování provozu VRRP
Jak je uvedeno v prvním článku série, porozumění chování VRRP
na úrovni protokolu je důležité, abyste jej mohli správně nakonfigurovat a odstraňovat problémy. Pokud jste si přečetli předchozí články Enable Sysadmin o analýze síťového provozu, pravděpodobně vám vyhovuje používat tcpdump
. Zachycení paketů příkazového řádku pomocí tcpdump
může odhalit vše, co potřebujete vědět o vašem VRRP
konfigurace, včetně VRID a priority aktivního masteru:
server1# tcpdump proto 112
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:51:01.353224 IP 192.168.122.102 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 254, authtype simple, intvl 1s, length 20
16:51:02.353673 IP 192.168.122.102 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 254, authtype simple, intvl 1s, length 20
16:51:03.353753 IP 192.168.122.102 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 254, authtype simple, intvl 1s, length 20
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
Vyzkoušejte si to sami spuštěním tcpdump
při překlápění VIP tam a zpět mezi dvěma servery.
Koneckonců
Tento článek vás provede základy Keepalived
instalace a konfigurace. Naučili jste se nainstalovat Keepalived
prostřednictvím správce balíčků a kompilací ze zdrojového kódu a vytvořili jste základní Keepalived
konfigurace umožňující VIP převzetí služeb při selhání mezi dvěma hostiteli. Nakonec jste tuto konfiguraci otestovali a použili tcpdump
dodržovat VRRP
provoz. V dalším článku této série vás provedu některými pokročilými Keepalived
konfigurace.
[ Potřebujete se dozvědět více o správě systému Linux? Zvažte absolvování kurzu správy systému Red Hat. ]