Zespoły ZooKeeper są zaprojektowane tak, aby zachować funkcjonalność bez utraty danych, mimo utraty co najmniej 1 węzła ZooKeeper. 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 w systemie produkcyjnym 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 wyświetl listę wszystkich węzłów 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 uczestniczą w wyborze lidera ZooKeeper. Możesz dołączyć modyfikator :observer z ZK_HOSTS, aby wskazać, że węzeł jest węzłem obserwatora, a nie głosującego. Węzeł obserwatora nie uczestniczy w wyborze repliki wiodącej.
Modyfikator :observer jest zwykle określany podczas tworzenia wielu brzegowych centrów danych 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 używasz tych ustawień w pliku konfiguracji centrum danych 1:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
W przypadku centrum danych 2:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
W kolejnych sekcjach znajdziesz więcej informacji o węzłach lidera, głosujących i obserwujących oraz o kwestiach, które należy wziąć pod uwagę przy dodawaniu węzłów głosujących i obserwujących.
Informacje o liderach, obserwujących, głosujących i obserwatorach
W instalacji ZooKeeper z wieloma węzłami jeden z węzłów jest wyznaczany jako wiodący. Wszystkie pozostałe węzły ZooKeeper są oznaczone jako obserwujący. Odczyty mogą być wykonywane z dowolnego węzła ZooKeeper, ale wszystkie żądania zapisu są przekazywane do węzła głównego. Na przykład do Edge dodawany jest nowy procesor komunikatów. Te informacje są zapisywane w liderze ZooKeeper. Wszystkie instancje podrzędne replikują dane.
Podczas instalacji Edge każdy węzeł ZooKeeper jest oznaczany jako głosujący lub obserwator. Lider jest następnie wybierany przez wszystkie węzły ZooKeepera, które mają prawo głosu. Jedynym wymaganiem dotyczącym wyboru lidera jest to, że musi być dostępne quorum działających węzłów głosujących ZooKeeper. Kworum oznacza, że ponad połowa wszystkich węzłów ZooKeeper z uprawnieniami do głosowania we wszystkich centrach danych działa.
Jeśli nie ma dostępnego kworum węzłów głosujących, nie można wybrać lidera. W tym przypadku ZooKeeper nie może obsługiwać żądań. Oznacza to, że dopóki kworum nie zostanie przywrócone, nie możesz wysyłać żądań do serwera zarządzania Edge, przetwarzać żądań do interfejsu API ani logować się w interfejsie Edge.
Na przykład w przypadku instalacji w jednym centrum danych:
- Zainstalowano 3 węzły ZooKeeper
- Wszystkie węzły ZooKeeper są węzłami głosującymi
- Kworum to 2 działające węzły głosujące.
- Jeśli dostępny jest tylko jeden węzeł głosujący, zespół ZooKeeper nie może działać
W instalacji z 2 centrami danych:
- Zainstalowano 3 węzły ZooKeeper na centrum danych, co daje łą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ł obserwujący.
- Kworum jest oparte na 5 węzłach głosujących w obu centrach danych, więc składa się z 3 działających węzłów głosujących.
- Jeśli dostępne są tylko 2 węzły głosujące lub mniej, zespół ZooKeeper nie może działać.
Uwagi dotyczące dodawania węzłów jako głosujących lub obserwatorów
Wymagania systemowe mogą wymagać dodania kolejnych węzłów ZooKeeper do instalacji Edge. Dokumentacja dotycząca dodawania węzłów ZooKeeper opisuje, jak dodać do Edge dodatkowe węzły ZooKeeper. Podczas dodawania węzłów ZooKeeper musisz wziąć pod uwagę typ węzłów, które chcesz dodać: głosujący lub obserwator.
Musisz mieć wystarczającą liczbę węzłów głosujących, aby w przypadku awarii jednego lub kilku z nich zespół ZooKeeper mógł nadal działać, co oznacza, że nadal dostępne jest kworum węzłów głosujących. Dodając węzły głosujące, zwiększasz rozmiar kworum, dzięki czemu możesz tolerować więcej nieaktywnych 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 uzgodniło lidera. Czas potrzebny na określenie lidera zależy od liczby węzłów głosujących, która zwiększa się wraz z dodawaniem kolejnych węzłów głosujących. Dlatego nie chcesz, aby wszystkie węzły były głosującymi.
Zamiast węzłów głosujących możesz dodać węzły obserwujące. Dodanie węzłów obserwatora zwiększa ogólną wydajność odczytu systemu bez zwiększania narzutu związanego z wyborem lidera, ponieważ węzły obserwatora nie głosują i nie wpływają na rozmiar kworum. Dlatego jeśli węzeł obserwatora ulegnie awarii, nie wpłynie to na możliwość wyboru lidera przez zespół. Jednak utrata węzłów obserwatora może spowodować pogorszenie wydajności odczytu zespołu ZooKeeper, ponieważ dostępnych jest mniej węzłów do obsługi żądań danych.
Apigee zaleca, aby w jednym centrum danych nie było więcej niż 5 węzłów głosujących, niezależnie od liczby węzłów obserwują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ć dowolną liczbę węzłów obserwatora, zgodnie z wymaganiami systemu.
Usuwanie węzła ZooKeeper
Istnieje wiele powodów, dla których możesz chcieć usunąć węzeł ZooKeeper. Na przykład węzeł został uszkodzony lub dodany do niewłaściwego środowiska.
W tej sekcji opisano, jak usunąć węzeł ZooKeeper, gdy jest on wyłączony i nieosiągalny.
Aby usunąć węzeł ZooKeeper:
- Edytuj plik konfiguracji instalacji dyskretnej i usuń adres IP węzła ZooKeeper, który chcesz usunąć.
- Uruchom ponownie polecenie
setupdla ZooKeeper, aby ponownie skonfigurować pozostałe węzły ZooKeeper:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- Uruchom ponownie 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 - Skonfiguruj ponownie 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
Uwagi dotyczące konserwacji
Konserwację ZooKeepera można przeprowadzić na w pełni działającym zespole bez przestojów, jeśli jest ona wykonywana na jednym węźle naraz. Jeśli zadbasz o to, aby w danym momencie tylko jeden węzeł ZooKeeper był wyłączony, zawsze będzie dostępne kworum węzłów głosujących, które mogą wybrać 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 wyświetlają wszystkie węzły ZooKeeper we wszystkich centrach danych jako jeden zespół.
Lokalizacja węzłów głosujących w danym centrum danych nie jest czynnikiem, który ZooKeeper bierze pod uwagę podczas obliczania kworum. Poszczególne węzły mogą ulec awarii w różnych centrach danych, ale dopóki w całym zbiorze zachowane jest kworum, ZooKeeper pozostaje funkcjonalny.
Konsekwencje konserwacji
W różnych momentach konieczne będzie wyłączenie węzła ZooKeeper w celu przeprowadzenia konserwacji, niezależnie od tego, czy jest to węzeł głosujący, czy węzeł obserwatora. Może być na przykład konieczne uaktualnienie wersji Edge w węźle, maszyna hostująca ZooKeeper może ulec awarii lub węzeł może stać się niedostępny 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, może to wpłynąć na działanie zespołu ZooKeeper z powodu utraty węzła, który uczestniczy w procesie wyboru lidera. Niezależnie od przyczyny awarii węzła głosującego ważne jest, aby utrzymać kworum dostępnych węzłów głosujących.
Procedura konserwacji
Procedury konserwacji wykonuj dopiero po upewnieniu się, że zespół ZooKeeper działa. Zakłada się, że węzły obserwatora 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 w dowolnym momencie tolerować utratę pojedynczego węzła bez utraty danych i znaczącego wpływu na wydajność. Oznacza to, że możesz przeprowadzać konserwację dowolnego węzła w zespole, o ile robisz to tylko na jednym węźle naraz.
W ramach konserwacji wykonaj tę procedurę, 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
Powinny się wyświetlić dane wyjściowe w takiej postaci:
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 powinien pojawić się komunikatobserver,leaderlubfollower(oznaczający węzeł głosujący, który nie jest liderem) w zależności od konfiguracji węzła. - Powtórz kroki 1 i 2 na każdym węźle ZooKeeper.
Podsumowanie
Najlepszym sposobem na przeprowadzenie konserwacji zespołu ZooKeeper jest wykonywanie jej po jednym węźle naraz. Pamiętaj:
- Podczas konserwacji musisz utrzymać kworum węzłów głosujących, aby zapewnić działanie zespołu ZooKeeper.
- Wyłączenie węzła obserwatora nie wpływa na kworum ani na możliwość wyboru lidera.
- Kworum jest obliczane dla wszystkich węzłów ZooKeeper we wszystkich centrach danych.
- Przejdź do konserwacji następnego serwera, gdy poprzedni serwer będzie działać.
- Użyj polecenia
nc, aby sprawdzić węzeł ZooKeeper.