Pielęgnacja zwierząt ZooKeeper

Edge dla chmury prywatnej w wersji 4.16.09

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 dla systemu produkcyjnego wymagają użycia co najmniej 3 węzłów ZooKeeper.

Użyj właściwości ZK_HOSTS i ZK_CLIENT_HOSTS w pliku konfiguracji Edge, aby określić węzły ZooKeeper. Egzaminy

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

gdzie:

  • ZK_HOSTS – okreś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_HOSTS – okreś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” 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 uczestniczy w wyborze repliki wiodącej.

Modyfikator „:observer” określa się zwykle 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 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"

And for Data Center

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

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 zarządzania Google Analytics 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ć.

Dodawanie 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.

Uwagi dotyczące konserwacji

Konserwację ZooKeeper 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 zachowane jest kworum w całym zespole, 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 spadku 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

Procedurę konserwacji należy przeprowadzić 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.

Jeśli 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):

  1. Jeśli nie jest zainstalowany w węźle ZooKeeper, zainstaluj nc:
    > sudo yum install nc
  2. Uruchom na węźle to polecenie nc:
    > echo stat | nc localhost 2181

    Gdzie 2181 to port ZooKeeper. Dane wyjściowe powinny mieć następującą 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 Mode danych wyjściowych dla węzłów powinna być widoczna wartość observer, leader lub follower (czyli węzeł głosujący, który nie jest liderem) w zależności od konfiguracji węzła.

    Uwaga: w przypadku samodzielnej instalacji Edge z jednym węzłem ZooKeeper tryb jest ustawiony na samodzielny.
  3. 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:

  • Aby zapewnić działanie zespołu ZooKeeper, podczas konserwacji musisz utrzymać kworum węzłów głosujących.
  • 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ć.
  • Sprawdzanie węzła ZooKeeper za pomocą polecenia nc