Zespoły ZooKeeper są zaprojektowane tak, aby działały bez utraty danych, nawet jeśli jeden lub więcej węzłów ZooKeeper przestanie działać. Tę odporność można skutecznie wykorzystać do przeprowadzania konserwacji węzłów ZooKeeper bez przestojów systemu.
Informacje o ZooKeeper i Edge
W Edge węzły ZooKeeper zawierają dane konfiguracyjne dotyczące lokalizacji i konfiguracji różnych komponentów Edge oraz powiadamiają różne komponenty o zmianach konfiguracji. Wszystkie obsługiwane topologie Edge dla systemu produkcyjnego używają co najmniej 3 węzłów ZooKeeper.
Aby określić węzły ZooKeeper, użyj właściwości ZK_HOSTS i ZK_CLIENT_HOSTS w
pliku konfiguracji Edge. Na przykład:
ZK_HOSTS="$IP1 $IP2 $IP3" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
Gdzie:
ZK_HOSTSokreśla adresy IP węzłów ZooKeeper. Adresy IP muszą być wymienione w tej samej kolejności we wszystkich węzłach ZooKeeper.W środowisku z wieloma centrami danych wymień wszystkie węzły ZooKeeper ze wszystkich centrów danych.
ZK_CLIENT_HOSTSokreśla adresy IP węzłów ZooKeeper używanych tylko przez to centrum danych. Adresy IP muszą być wymienione w tej samej kolejności we wszystkich węzłach ZooKeeper w centrum danych.W przypadku instalacji w jednym centrum danych są to te same węzły, które zostały określone przez ZK_HOSTS. W środowisku z wieloma centrami danych plik konfiguracji Edge dla każdego centrum danych powinien zawierać tylko węzły ZooKeeper dla tego centrum danych.
Domyślnie wszystkie węzły ZooKeeper są oznaczone jako węzły głosujące. Oznacza to, że wszystkie węzły
biorą udział w wyborze lidera ZooKeeper. Możesz dodać modyfikator
:observer do ZK_HOSTS, aby wskazać, że
węzeł jest węzłem obserwatora, a nie węzłem głosującym. Węzeł obserwatora nie bierze udziału w
wyborze lidera.
Modyfikator :observer jest zwykle określany podczas tworzenia wielu centrów danych Edge
lub gdy pojedyncze centrum danych ma dużą liczbę węzłów ZooKeeper. Na przykład w
instalacji Edge z 12 hostami i 2 centrami danych ZooKeeper w węźle 9 w centrum danych 2 jest
obserwatorem:

Następnie w pliku konfiguracji dla centrum danych 1 użyj tych ustawień:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
A w przypadku centrum danych 2:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
Więcej informacji o węzłach lidera, głosujących i obserwatorów oraz o kwestiach związanych z dodawaniem węzłów głosujących i obserwatorów znajdziesz w kolejnych sekcjach.
Informacje o liderach, obserwatorach, głosujących i obserwatorach
W instalacji ZooKeeper z wieloma węzłami jeden z węzłów jest oznaczony jako lider. Wszystkie pozostałe węzły ZooKeeper są oznaczone jako obserwatorzy. Odczyty mogą być wykonywane z dowolnego węzła ZooKeeper, ale wszystkie żądania zapisu są przekazywane do lidera. Na przykład do Edge dodawany jest nowy procesor wiadomości. Te informacje są zapisywane w liderze ZooKeeper. Wszyscy obserwatorzy replikują dane.
Podczas instalacji Edge każdy węzeł ZooKeeper jest oznaczany jako głosujący lub obserwator. Lider jest wybierany przez wszystkie węzły ZooKeeper głosujące. Jedynym warunkiem wyboru lidera jest dostępność kworum działających węzłów ZooKeeper głosujących. Kworum oznacza, że ponad połowa wszystkich węzłów ZooKeeper głosujących we wszystkich centrach danych działa.
Jeśli nie ma kworum węzłów głosujących, nie można wybrać lidera. W takim przypadku, ZooKeeper nie może obsługiwać żądań. Oznacza to, że dopóki nie zostanie przywrócone kworum, nie możesz wysyłać żądań do serwera zarządzania Edge, przetwarzać żądań do interfejsu API ani logować się w nowym interfejsie Edge.
Na przykład w instalacji w jednym centrum danych:
- Zainstalowano 3 węzły ZooKeeper.
- Wszystkie węzły ZooKeeper są głosujące.
- Kworum to 2 działające węzły głosujące.
- Jeśli dostępny jest tylko 1 węzeł głosujący, zespół ZooKeeper nie może działać.
W instalacji z 2 centrami danych:
- Zainstalowano 3 węzły ZooKeeper w każdym centrum danych, czyli łącznie 6 węzłów.
- Centrum danych 1 ma 3 węzły głosujące.
- Centrum danych 2 ma 2 węzły głosujące i 1 węzeł obserwatora.
- Kworum jest oparte na 5 głosujących w obu centrach danych, a zatem na 3 działających węzłach głosujących
- Jeśli dostępne są tylko 2 lub mniej węzłów głosujących, zespół ZooKeeper nie może działać.
Kwestie związane z dodawaniem węzłów jako głosujących lub obserwatorów
Wymagania systemowe mogą wymagać dodania do instalacji Edge dodatkowych węzłów ZooKeeper. W dokumentacji Dodawanie węzłów ZooKeeper znajdziesz informacje o tym, jak dodać do Edge dodatkowe węzły ZooKeeper. Podczas dodawania węzłów ZooKeeper musisz wziąć pod uwagę typ dodawanych węzłów: głosujący lub obserwator.
Musisz mieć wystarczającą liczbę węzłów głosujących, aby w przypadku awarii jednego lub kilku węzłów głosujących zespół ZooKeeper mógł nadal działać, czyli aby nadal było dostępne kworum węzłów głosujących dostępne. Dodanie węzłów głosujących zwiększa rozmiar kworum, dzięki czemu możesz tolerować awarię większej liczby węzłów głosujących.
Dodanie dodatkowych węzłów głosujących może jednak negatywnie wpłynąć na wydajność zapisu, ponieważ operacje zapisu wymagają, aby kworum zgodziło się na lidera. Czas potrzebny na określenie lidera zależy od liczby węzłów głosujących, która rośnie wraz z dodawaniem kolejnych węzłów głosujących. Dlatego nie warto ustawiać wszystkich węzłów jako głosujących.
Zamiast dodawać węzły głosujące, możesz dodać węzły obserwatorów. Dodanie węzłów obserwatorów zwiększa ogólną wydajność odczytu systemu bez zwiększania obciążenia związanego z wyborem lidera, ponieważ węzły obserwatorów nie głosują i nie wpływają na rozmiar kworum. Dlatego, jeśli węzeł obserwatora przestanie działać, nie wpłynie to na możliwość wyboru lidera przez zespół. Utrata węzłów obserwatorów może jednak spowodować pogorszenie wydajności odczytu zespołu ZooKeeper, ponieważ dostępnych jest mniej węzłów do obsługi żądań danych.
W przypadku jednego centrum danych Apigee zaleca, aby niezależnie od liczby węzłów obserwatorów nie było więcej niż 5 głosujących. W przypadku 2 centrów danych Apigee zaleca, aby nie było więcej niż 9 głosujących (5 w jednym centrum danych i 4 w drugim). Następnie możesz dodać tyle węzłów obserwatorów, ile jest potrzebnych do spełnienia wymagań systemowych.
Usuwanie węzła Zookeeper
Może być wiele powodów, dla których warto usunąć węzeł Zookeeper. Może to być na przykład uszkodzenie węzła lub dodanie go do nieprawidłowego środowiska.
W tej sekcji opisujemy, jak usunąć węzeł Zookeeper, gdy jest on niedostępny i nie osiągalny.
Aby usunąć węzeł Zookeeper:
- Edytuj cichy plik konfiguracji i usuń adres IP węzła Zookeeper, który chcesz usunąć.
- Ponownie uruchom polecenie
setupdla Zookeeper, aby ponownie skonfigurować pozostałe węzły ZooKeeper nodes:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- Ponownie uruchom wszystkie węzły Zookeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- Ponownie skonfiguruj węzeł serwera zarządzania:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart - Ponownie skonfiguruj wszystkie routery:
/opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-router restart - Ponownie skonfiguruj wszystkie procesory komunikatów:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart - Ponownie skonfiguruj wszystkie węzły Qpid:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart - Ponownie skonfiguruj wszystkie węzły Postgres:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
Kwestie związane z konserwacją
Konserwację ZooKeeper możesz przeprowadzić na w pełni działającym zespole bez przestojów, jeśli wykonałeś ją na jednym węźle naraz. Dzięki temu, że w danym momencie tylko 1 węzeł ZooKeeper jest niedostępny, możesz mieć pewność, że zawsze będzie dostępne kworum węzłów głosujących, które wybierze lidera.
Konserwacja w wielu centrach danych
Podczas pracy z wieloma centrami danych pamiętaj, że zespół ZooKeeper nie rozróżnia centrów danych. Zespoły ZooKeeper traktują wszystkie węzły ZooKeeper we wszystkich centrach danych jako jeden zespół.
Lokalizacja węzłów głosujących w danym centrum danych nie ma znaczenia, gdy ZooKeeper oblicza kworum. Poszczególne węzły mogą przestać działać w różnych centrach danych, ale dopóki w całym zespole zachowane jest kworum, ZooKeeper pozostaje funkcjonalny.
Implikacje konserwacji
W różnych momentach będziesz musiał wyłączyć węzeł ZooKeeper w celu przeprowadzenia konserwacji – może to być węzeł głosujący lub węzeł obserwatora. Może to być na przykład konieczność uaktualnienia wersji Edge w węźle, awaria maszyny hostującej ZooKeeper lub niedostępność węzła z innego powodu, np. błędu sieci.
Jeśli węzeł, który przestanie działać, jest węzłem obserwatora, możesz spodziewać się niewielkiego pogorszenia wydajności zespołu ZooKeeper do czasu przywrócenia węzła. Jeśli węzeł jest węzłem głosującym węzłem, może to wpłynąć na działanie zespołu ZooKeeper ze względu na utratę węzła, który bierze udział w procesie wyboru lidera. Niezależnie od przyczyny awarii węzła głosującego ważne jest, aby zachować kworum dostępnych węzłów głosujących.
Procedura konserwacji
Procedury konserwacji wykonuj tylko wtedy, gdy masz pewność, że zespół ZooKeeper działa. Zakładamy, że węzły obserwatorów działają i że podczas konserwacji dostępna jest wystarczająca liczba węzłów głosujących, aby zachować kworum.
Gdy te warunki są spełnione, zespół ZooKeeper o dowolnym rozmiarze może tolerować utratę pojedynczego węzła w dowolnym momencie bez utraty danych i znaczącego wpływu na wydajność. Oznacza to, że możesz przeprowadzić konserwację dowolnego węzła w zespole, o ile jest to tylko 1 węzeł naraz.
W ramach konserwacji wykonaj te czynności, aby określić typ węzła ZooKeeper (lider, głosujący lub obserwator):
- Jeśli nie jest zainstalowany w węźle ZooKeeper, zainstaluj
nc:sudo yum install nc
- Uruchom w węźle to polecenie
nc, gdzie 2181 to port ZooKeeper:echo stat | nc localhost 2181
Dane wyjściowe powinny mieć postać:
Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 1 Sent: 0 Connections: 1 Outstanding: 0 Zxid: 0xc00000044 Mode: follower Node count: 653
W wierszu
Modedanych wyjściowych węzłów powinna się wyświetlić wartośćobserver,leader, lubfollower(oznaczająca głosującego, który nie jest liderem) w zależności od konfiguracji węzła. - Powtórz kroki 1 i 2 w przypadku każdego węzła ZooKeeper.
Podsumowanie
Najlepszym sposobem na przeprowadzenie konserwacji zespołu ZooKeeper jest wykonanie jej na jednym węźle na raz. Pamiętaj:
- Podczas konserwacji musisz zachować kworum węzłów głosujących, aby zespół ZooKeeper działał.
- Wyłączenie węzła obserwatora nie wpływa na kworum ani na możliwość wyboru lidera.
- Kworum jest obliczane na podstawie wszystkich węzłów ZooKeeper we wszystkich centrach danych.
- Po uruchomieniu poprzedniego serwera przejdź do konserwacji następnego serwera.
- Aby sprawdzić węzeł ZooKeeper, użyj polecenia
nc.