Witaj w laboratorium z balansowania ruchem w systemach Red Hat Enterprise Linux. Przed Tobą ćwiczenia podczas których przygotujesz środowisko wirtualne tak, aby mozliwa była konfiguracja dwunodowego klastra LB.
Komunikacja w laboratorium odbywa się za pomocą IPv4 (podsieć 10.255.255.0) oraz IPv6 (2001:db8:1::/64). Każda z grup ma do dyspozycji dwa stanowiska komputerowe:
  • host wirtualizacji
  • klient do testów konfiguracji
Szczegółowy schemat laba przedstawiony został poniżej:
schematy_ogolny
Domyślne hasło dla konta roota: virtlab
Miłej pracy

1 Przygotowanie środowiska wirtualnego - konfiguracja interfejsu bridge

 

W drugim ćwiczeniu należy skonfigurować interfejs typu bridge. Aby skonfigurować interfejsy sieciowe, należy wyedytować i/lub stworzyć nowe pliki konfiguracyjne w katalogu /etc/sysconfig/network-scripts. Pierwszym plikiem, którego należy wyedytować jest plik ifcfg-XXX (gdzie XXX to nazwa interfejsu). Aktualne interfejsy w systemie można podejrzeć poleceniem: ip l

 

 

Zwróć uwagę, ze nazwy interfejsów różnią się od tych, które występowały w poprzednich wersjach RHEL. Aktualne powinny być odczytywane w następujący sposób:

Dwu literowy prefix mowiacy o typie interfejsu:
en -- ethernet
sl -- serial line IP (slip)
wl -- wlan
ww -- wwan
Pozostale oznaczenia:
b -- BCMA bus core number
ccw -- CCW bus group name
o -- on-board device index number
s[f][d] -- hotplug slot index number
x -- MAC address
[P]ps[f][d]
-- PCI geographical location
[P]ps[f][u][..]1[i]
-- USB port number chain

 

plik ifcfg-enp7s2

HWADDR=00:0E:0C:35:3F:DE
BOOTPROTO=static
DEVICE=enp7s2
NAME=enp7s2
UUID=28738eee-0615-4402-a627-21a4748d66a2
ONBOOT=yes
BRIDGE=br0

 

plik ifcfg-br0

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
IPADDR=10.0.98.119
PREFIX=24
DNS1=10.0.98.1

Interfejs typu bridge tworzy wirtualnego switcha, do którego można podłączyć większą ilość interfejsów sieciowych. W wirtualizacji wykorzystuje się go na maszynie-hoście tak, aby współdzielić jeden fizyczny interfejs pomiędzy wieloma interfejsami wirtualnymi.

 

Po wprowadzeniu powyższych zmian, należy zrestartować serwis odpowiedzialny za konfigurację sieci. Można to wykonać za pomocą polecenia systemctl restart network

 

2. Stworzenie izolowanej sieci LB_NAT

W kolejnym kroku zostanie przygotowana izolowania sieć dedykowana dla połączenia pomiędzy routerami LB a hostami rzeczywistymi.

  • uruchom virtual managera
  • prawy przycisk na połączeniu, wybieramy details
  • zakładka sieci wirtualne -> dodanie sieci
  • pojawia sie monit o tworzeniu nowej sieci wirtualnej
  • wprowadzamy nazwę sieci (LB_NAT)
  • przestrzeń adresów zostawiamy bez zmian
  • wyłączamy usługą DHCP
  • zaznaczamy opcje: odosobniona sieć wirtualna
  • pojawia się okno podsumowania
  • w zakładce "sieci wirtualne" powinna pojawić się dodatkowa sieć

konfig_sieci

 

3. Instalacja aktywnego i pasywnego serwera LVS

W tym ćwiczeniu należy skonfigurować dwie maszyny wirtualne zawierające oprogramowanie Red Hat Load Balancer Add-On. Instalacja systemu odbędzie się z zasobu sieciowego, ćwiczenie te należy wykonać dwukrotnie  (stworzyć dwa serwery)

 

  • uruchom virt-managera
  • wybierz przycisk: utworzenie nowej maszyny wirtualnej
  • wprowadż nazwę (piranha1 i piranha2)
  • wprowadź typ instalacji: PXE
  • ustawienia pamięci i procesora powinny zostać domyślne
  • ustawienia pamięci dyskowej powinny zostać domyślne
  •  w ostatnim kroku należy wybrać "Dostosowanie konfiguracji przed instalacją" oraz w ustawieniach zaawansowanych wybrać "Urządzenie gospodarza br0"
  • wciśnięcie przycisku UKOŃCZ otworzy okno konfiguracji maszyny
  • Kliknięcie przycisku "Rozpocznij instalacje" wystartuje proces tworzenia maszyny wirtualnej
  • na ekranie PXE należy wybrać: RHEL 6.5 piranha
  • po instalacji maszyny wybierz "Szczegóły sprzętu wirtualnego" -> dodaj sprzęt
  • dodaj interfejs sieciowy, typ virtio, urządzenie źródłowe: LB_NAT

 

piranha_eth0

 

piranha_eth1

 

budowa_piranha

 

 

 

 

  •  po instalacji należy zrestartować maszynę
  •  Po powtórnym uruchomieniu należy uruchomić przekazywanie pakietów. Aby tego dokonać, w pliku sysctl.conf należy zmiennej net.ipv4.ip_forward przypisać wartość 1. Zmianę należy potwierdzić wydając polecenie sysctl -a

4. Konfiguracja dodatkowej karty sieciowej w sieci LB_NAT

 

W poprzednim ćwiczeniu do dwóch routerów LVS zostały dodane dodatkowe interfejsy sieciowe. W tym ćwiczeniu należy na każdym stworzyć plik konfiguracyjny ifcfg-<interfejs>, odpowiedzialny za drugi interfejs sieciowy w routerze LB. Przykładowa składania pliku wygląda następująco:

DEVICE="eth1"
BOOTPROTO="static"
DHCP_HOSTNAME="www1"
HOSTNAME="www1"
HWADDR="52:54:00:F3:36:EE"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
MTU="1500"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=1.2.3.4
PREFIX=24

Ostatnim etapem konfiguracji dodatkowego interfejsu sieciowego będzie restart usługi sieciowej za pomocą polecenia: service netowrk restart

5. Instalacja dwóch serwerów rzeczywistych

 

W tym ćwiczeniu należy skonfigurować dwie maszyny wirtualne zawierające oprogramowanie Apache. Instalacja systemu odbędzie się z zasobu sieciowego, ćwiczenie te należy wykonać dwukrotnie  (stworzyć dwa serwery)

 

  • uruchom virt-managera
  • wybierz przycisk: utworzenie nowej maszyny wirtualnej
  • wprowadż nazwę (www1 i www2)
  • wprowadź typ instalacji: instalacja sieciowa
  • ustawienia pamięci i procesora powinny zostać domyślne
  • ustawienia pamięci dyskowej powinny zostać domyślne
  •  w ostatnim kroku należy w ustawieniach zaawansowanych wybrać "Urządzenie gospodarza - mostek br0"
  • wciśnięcie przycisku UKOŃCZ rozpocznie instalacje maszyny wirtualnej
  • na ekranie PXE należy wybrać: RHEL 6.5 www
  • po zainstalowaniu maszyny wyłacz ją przyciskiem na panelu
  • wybierz ikonkę konfiguracji maszyny wirtualnej
  • wybierz interfejs sieciowy
  • w oknie urządzenie źródłowe wskaż sieć LB_NAT
  • zatwierdź zmianę
  • uruchom ponownie maszyne wirtualną

instalacja_www

 

6. Przygotowanie interfejsów sieciowych do uruchomienia LB

W niniejszym ćwiczeniu należy przygotować interfejsy sieciowe wszystkich czterech maszyn (piranha1, piranha2, www1, www2) do uruchomienia LB. Adresacja ta powinna być zgodna z poniższym schematem:

 

schematy_nat_haroot

 

Dla przykładu, grupa nr 7 powinna zaadresować serwery według poniższego schematu:

pirahna1:

  • IP eth0: 10.255.255.71/24
  • IP eth1: 10.255.7.71/24
  • GW: 10.255.255.254
  • hostname: piranha1

piranha2:

  • IP eth0: 10.255.255.72/24
  • IP eth1: 10.255.7.72/24
  • GW: 10.255.255.254
  • hostname: piranha2

www1:

  • IP eth0: 10.255.7.1/24
  • hostname:  www1
  • GW: 10.255.7.73

www2:

  • IPeth0: 10.255.7.2/24
  • hostname: www2
  • GW: 10.255.7.73

 

 

Edycja ustawień sieciowych znajduje się w następujacych plikach:

/etc/sysconfig/network-scripts/ifcfg-ethX

  • ustawienie  BOOTPROTO = STATIC wskazuje, ze adres IP przypisany do interfejsu jest statyczny
  • ustawienie IPADDR = 1.2.3.4 ustawia na interfejscie adres IP 1.2.3.4
  • ustawienie NETMASK= 255.255.255.0 ustawia odpowiednią maskę sieciową
  • ustawienie ONBOOT=yes informuje system, że interfejs powinien być uruchamiany automatycznie podczas startu systemu

/etc/sysconfig/network

  • ustawienie GATEWAY=5.6.7.8 ustawia bramę domyślną na adres 5.6.7.8
  • ustawienie HOSTNAME definiuje nazwe hosta

Polecenie service network restart powoduje przeładowanie ustawień sieci

 

7. Uruchomienie mechanizmów LB w oparciu o jeden router LVS i dwa serwery WWW

W tym ćwiczeniu będą wykorzystywane trzy maszyny: piranha1, www1 i www2.

 

Na maszynie www1

  • w katalogu /var/www/html stwórz plik o nazwie index.html
  • w pliku index.html wpisz: serwer www1
  • za pomocą polecenia service httpd start wystartuj usługę www
  • sprawdź z pozycji serwera piranha1  czy serwer www działa (użyj przeglądarki, połącz się na odpowiedni adres IP)
  • ustaw domyślną bramę na adres prywatny adres VIP routera LVS

 

Na maszynie www2:

  • w katalogu /var/www/html stwórz plik o nazwie index.html
  • w pliku index.html wpisz: serwer www2
  • za pomocą polecenia service httpd start wystartuj usługę www
  • sprawdź z pozycji serwera piranha1  czy serwer www działa (użyj przeglądarki, połącz się na odpowiedni adres IP)

 

Na maszynie piranha1:

  • uruchom konsole
  • wejdź do katalogu /etc/sysconfig/ha/conf
  • za pomocą polecenia htpasswd stwórz plik haseł: htpasswd -c piranha.passwd piranha
  • dwukrotnie wprowadz haslo: 123456
  • uruchom usługę piranha-gui za pomocą polecenia service piranha-gui start
  • zaloguj się do panelu konfiguracyjnego za pomocą przeglądarki i hasła ( http://<adres_ip_piranha>:3636 )
  • w zakładce Global settings ustaw:
    • RIP publiczny serwera
    • NAT jako typ sieci
    • VIP prywatny routera
    • alias na interfejs od strony sieci prywatnej
    • nie zapomnij o zaakceptowaniu konfiguracji przyciskiem ACCEPT

nat_1

 

  • w zakładce virtual servers:
    • dodaj nowy serwer za pomocą przycisku ADD
    • aktywuj nowy serwer za pomocą przycisku ACTIVATE (status powinien zmienić się na UP)
    • przejdź do okna edycji wirtualnego serwera za pomocą przycisku EDIT

 

nat_2

 

 

  • podczas edycji serwera wirtualnego, wprowadź:
    • nazwę serwera
    • publiczny adres VIP oraz maskę serwera
    • ustaw algorytm schedulingu na RR
    • zakceptuj ustawienia przyciskiem ACCEPT

nat_3

 

  • w zakładce REAL SERVER:
    • dodaj dwa serwery rzeczywiste za pomocą dwukrotnego kliknięcia przycisku ADD
    • aktywuj uprzednio dodane serwery za pomocą przycisku ACTIVATE
    • przejdź do okna edycji każdego z serwera

nat_4

 

  • w edycji każdego z serwerów rzeczywistych należy:
    • wprowadzić nazwę serwera rzeczywistego
    • wprowadzić adres IP serwera rzeczywistego
    • (opcjonalnie) wprowadzić wagę dla serwera rzeczywistego

nat_5

 

  • piranha-GUI wygenerowała plik konfiguracyjny lvs.cf umieszczony w katalogu /etc/sysconfig/ha/
  • po uruchomieniu usługi pulse: service pulse start, w zakładce CONTROL/MONITORING pojawią się dodatkowe informacje takie jak:
    • stan usługi
    • tabela routingu LVS
    • procesy uruchomione w ramach LVS
nat_6
  • Skonfigurowana usługa powinna być dostępna pod adresem skonfigurowanym dla virtual serwera (w powyższym przypadku jest to adres http://10.0.98.98)

 

 

8. Symulacja awarii hosta rzeczywistego

W tym ćwiczeniu zasymulowana zostanie awaria jednego z serwerów rzeczywistych

  • uruchom konsole serwera piranha1
  • na konsoli serwera piranha1 wykonaj polecenie: watch -n1 "ipvsadm -l"
  • uruchom konsole serwera www
  • zasymuluj awarię usługi za pomocą polecenia: service httpd stop
  • obserwuj stan LVS za pomocą konsoli serwera piranha1
  • podnieś usługę za pomoca polecenia: service httpd start
  • obserwuj stan LVS za pomocą konsoli serwera LVS

9. Budowa klastra LB ze wsparciem dla HA

W tym ćwiczeniu zostanie zbudowany klaster HA w oparciu o serwer piranha1 oraz piranha2

 

  • upewnij się, że serwer piranha2 jest uruchomiony
  • zaloguj się do piranha-gui (zainstalowanym na piranha1)
  • w zakładce REDUNDANCY wybierz przycisk ENABLE
  • wprowadź publiczny RIP serwera backupowego
  • wprowadź prywatny RIP serwera backupowego
  • potwierdź konfigurację przyciskiem ACCEPT

nat_7

  • skopiuj plik konfiguracyjny /etc/sysconfig/ha/lvs.cf do zapasowego routera (można to wykonać za pomocą polecenia na piranha1: scp /etc/sysconfig/ha/lvs.cf root@<ip_backup>:/etc/sysconfig/ha/
  • sprawdź numery seryjne plików konfiguracyjnych na obydwu serwerach aby mieć pewność, że dotyczą tej samej konfiguracji
  • na piranha1: zrestartuj usługę pulse poleceniem service pulse restart
  • na piranha1: za pomocą polecenia ipvsadm -l upewnij się, czy usługa wystartowała
  • na piranha1 obserwuj logi /etc/sysconfig/messages
  • na piranha2: uruchom usługe pulse poleceniem service pulse start
  • na piranha2 obserwuj logi oraz wynik polecenia ipvsadm -l

 

Wyjaśnij zdarzenia zobrazowane na poniższych dwóch screenach. Co możesz powiedzieć o usłudze działającej na klastrze LB ?

nat_8

 

nat_9

 

 

10. Awaria noda LVS w konfiguracji HA

W tym ćwiczeniu zostanie zasymulowana awaria klastra LB. W tym celu, wykorzystaj konfiguracje z zadania poprzedniego

  • zaloguj sie na serwer piranha1
  • na serwerze piranha1 za pomocą polecenie service pulse stop wyłącz usługę LB
  • na serwerze piranha obserwuj wynik polecenia ipvsadm -l oraz plik logów
  • na serwerze piranha2 obserwuj wynik polecenia ipvsadm -l oraz plik logów
  • upewnij się, że usługa www nadal jest dostępna (sprawdź ją przy pomocy przeglądarki)
  • omów poniższy screen:

 

nat_10

 

11. Modyfikacja ustawień parametrów klastra HA

W tym ćwiczeniu zmodyfikujemy parametry klastra HA tak, aby zminimalizować czas pomiędzy padem MASTERa a aktywacją serwera BACKUP

  • na serwerze piranha1: wyłacz usługe pulse
  • na serwerze piranha2: wyłącz usługe pulse
  • na serwerze piranha1: za pomocą piranha-gui wybierz zakładkę REDUNDANCY
  • skorzystaj z pomocy, aby dowiedzieć się za co odpowiedzialne są parametry Heartbeat interval oraz assume dead after
  • ustaw dla nich odpowiednio wartości 2 i 8
  • za pomocą polecenia scp przekopiuj plik lvs.cf na zapasowy nod
  • uruchom serwer główny
  • uruchom serwer zapasowy
  • zasymuluj awarie zgodnie ze scenariuszem z poprzedniego zadania
nat_11

12. Modyfikacja ustawień usługi LB - wagi

W tym ćwiczeniu zmodyfikujemy wagi serwerów rzeczywistych tak, aby obciążenie pomiędzy dwoma serwerami rozkładało się w stosunku 80:20 (na każde 10 połączeń, 8 ma trafiać do www1, pozostałe dwa do www2)

  • uruchom piranha-giu
  • w zakładce VIRTUAL SERVERS wyedytuj serwer o nazwie zadanie4
  • w edycji wybierz REAL SERVERS
  • edytuj www1 - przypisz mu wage 4
  • edytuj www2 - przypisz mu wage 1
  • potwierdź zmiany
  • w zakładce REAL SERVERS zmień algorytm schedulingu na RR z wagami
  • przekopiuj nowy konfig na serwer zapasowy
  • zresetuj usługe pulse na piranha1 i piranha2
  • za pomocą polecenia ipvsadm -l potwierdź poprawność ustawienia wag
  • za pomocą przeglądarki sprawdź, jak rozkłada się obciążenie
  • skorzystaj z manuala polecenia ipvsadm. Czy za jego pomocą możemy sprawdzić aktualne połączenia do serwerów rzeczywistych ?

nat_12

13. Modyfikacja ustawień usługi LB - przyklejanie połączenia do konkretnego serwera na podstawie źródłowego adresu IP

W tym ćwiczeniu zmodyfikujemy konfiguracje tak, aby połączenie z konkretnego adresu IP trafiało tylko i wyłączenie do wybranego serwerza rzeczywistego

  • za pomocą piranha-giu zmodyfikuj algorytm schedulingu na Source Hash Scheduling
  • przekopiuj plik konfguracyjny na drugi serwer
  • zrestartuj usługi pulse na obydwu maszynach
  • sprawdź usługę za pomocą przeglądarki
  • poproś kolegów z innej grupy aby sprawdzili Waszą usługe. Czy trafili na tego samego czy innego hosta ?

nat_13