Informacje o konserwacji ZooKeeper

Edge for Private Cloud w wersji 4.18.05

Zestawy ZooKeeper zostały zaprojektowane tak, aby działały bez utraty danych pomimo utraty co najmniej 1 węzła ZooKeeper. Tej odporności można skutecznie używać do konserwacji węzłów ZooKeeper bez przestojów systemu.

Informacje o ZooKeeper i Edge

W Edge węzły ZooKeeper zawierają dane konfiguracji dotyczące lokalizacji i konfiguracji różnych komponentów Edge oraz powiadamiają różne komponenty o zmianach w konfiguracji. Wszystkie obsługiwane topologie brzegowe systemu produkcyjnego określają użycie co najmniej 3 węzłów ZooKeeper.

Do określenia węzłów ZooKeeper użyj właściwości ZK_HOSTS i ZK_CLIENT_HOSTS w pliku konfiguracyjnym Edge. Na egzamin

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

Gdzie:

  • ZK_HOSTS określa adresy IP węzłów ZooKeeper. We wszystkich węzłach ZooKeeper adresy IP muszą być wymienione w tej samej kolejności.

    W środowisku z wieloma centrami danych wyświetl wszystkie węzły 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 pojedynczej instalacji Centrum danych są to te same węzły, które określono w ZK_HOSTS. W środowisku z wieloma centrami danych plik konfiguracyjny Edge dla każdego centrum danych powinien zawierać tylko węzły ZooKeeper tego centrum danych.

Domyślnie wszystkie węzły ZooKeeper są wyznaczone jako węzły głosowe. Oznacza to, że wszystkie węzły biorą udział w wyborze lidera zooKeeper. Możesz dodać modyfikator :observer z parametrem ZK_HOSTS, aby wskazać, że notatka jest węzłem obserwatora, a nie wyborcą. Węzeł obserwator nie bierze udziału w wyborach lidera.

Modyfikator :observer określa się zwykle podczas tworzenia wielu centrów danych Edge lub gdy jedno centrum danych ma dużą liczbę węzłów ZooKeeper. Na przykład w przypadku 12-hostowej instalacji Edge z 2 centrami danych ZooKeeper w węźle 9 w centrum danych 2 jest obserwatorem:

Następnie w pliku konfiguracyjnym Centrum danych 1 należy użyć tych ustawień:

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

W przypadku centrów danych

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

Informacje o liderach, obserwatorach, wyborcach i obserwatorach

W instalacji ZooKeeper z wieloma węzłami 1 z węzłów jest wyznaczony jako wiodący. Wszystkie pozostałe węzły ZooKeeper są wyznaczone jako obserwatorzy. Odczyty mogą być wykonywane z dowolnego węzła ZooKeeper, ale wszystkie żądania zapisu są przekazywane do repliki wiodącej. Na przykład do Edge został dodany nowy procesor wiadomości. Informacja ta jest przekazywana kapitanowi ZooKeeper. Następnie wszystkie obserwatorzy replikują dane.

Podczas instalacji Edge oznaczasz każdy węzeł ZooKeeper jako wyborcy lub obserwatora. Następnie lider jest wybierany przez wszystkie węzły wyborcze ZooKeeper. Jednym z wymagań jest osiągnięcie quorum liczby dostępnych węzłów wyborczych ZooKeeper. Kwartum oznacza, że ponad połowa wszystkich węzłów wyborczych ZooKeeper we wszystkich centrach danych działa.

W przypadku nieosiągnięcia liczby węzłów wyborczych nie można wybrać lidera. W tym przypadku Zookeeper nie może obsługiwać żądań. Oznacza to, że nie możesz wysyłać żądań do serwera zarządzania brzegowym, przetwarzać żądań do interfejsu Management API ani logować się do interfejsu Edge, dopóki nie zostanie przywrócone kworum.

Na przykład w przypadku pojedynczej instalacji Centrum danych:

  • Zainstalowano 3 węzły ZooKeeper
  • Wszystkie węzły ZooKeeper są głosującymi
  • Kwounek to 2 działające węzły wyborcze
  • Jeśli dostępny jest tylko jeden węzeł wyborcy, zespół ZooKeeper nie może działać

W przypadku 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 wyborcze
  • Centrum danych 2 ma 2 węzły wyborcze i 1 węzeł obserwatora
  • Kwounek opiera się na 5 wyborcach z obu centrów danych, więc składa się z 3 działających węzłów wyborczych
  • Jeśli dostępnych jest tylko 2 węzły wyborców, zespół ZooKeeper nie może działać

Dodawanie węzłów jako głosujących lub obserwatorów

Twoje wymagania systemowe mogą wymagać dodania kolejnych węzłów ZooKeeper do instalacji Edge. Dokumentacja dodawania węzłów ZooKeeper zawiera informacje o tym, jak dodawać kolejne węzły ZooKeeper do Edge. Podczas dodawania węzłów ZooKeeper musisz wziąć pod uwagę ich typ: wyborca lub obserwator.

Chcesz się upewnić, że masz wystarczającą liczbę węzłów wyborczych, aby w przypadku awarii co najmniej jednego węzła wyborczego zespół ZooKeeper nadal działał, co oznacza, że istniała kworum liczby węzłów wyborczych. Dodając węzły wyborcze, zwiększasz kworum i tym samym możesz tolerować odrzucanie większej liczby takich węzłów.

Dodanie kolejnych węzłów wyborczych może jednak negatywnie wpłynąć na wydajność zapisu, ponieważ operacje zapisu wymagają kworum do uzgodnienia lidera. Czas potrzebny na określenie lidera zależy od liczby węzłów wyborczych, która zwiększa się w miarę dodawania kolejnych węzłów wyborczych. Dlatego nie chcesz, aby wszystkie węzły były głosami.

Zamiast dodawać węzły wyborcze, możesz dodawać węzły obserwatorów. Dodanie węzłów obserwacyjnych zwiększa ogólną wydajność odczytu systemu bez wpływu na wybór lidera, ponieważ węzły obserwatora nie oddają głosu i nie wpływają na wielkość kworum. Dlatego też, jeśli węzeł obserwacyjny przestanie działać, nie wpływa to na możliwość wyboru lidera przez zespół. Jednak utrata węzłów obserwacji może spowodować pogorszenie wydajności odczytu zespołu ZooKeeper, ponieważ liczba węzłów dostępnych dla żądań danych usługi jest mniejsza.

Apigee zaleca, aby w pojedynczym centrum danych mieć maksymalnie 5 głosów, niezależnie od liczby węzłów obserwacyjnych. W 2 centrach danych Apigee zaleca, aby mieć maksymalnie 9 głosów wyborczych (5 w jednym centrum danych i 4 w drugim). Następnie możesz dodać tyle węzłów, ile potrzeba, aby spełnić wymagania systemowe.

Uwagi na temat konserwacji

Konserwację ZooKeeper można przeprowadzać w w pełni sprawnym zespole bez przestojów, jeśli jest przeprowadzana w jednym węźle. Dbając o to, aby w danym momencie działał tylko 1 węzeł ZooKeeper, zawsze istnieje kworum liczby węzłów wyborczych umożliwiających wybór lidera.

Konserwacja wielu centrów danych

Podczas pracy z wieloma centrami danych pamiętaj, że zespół ZooKeeper nie rozróżnia centrów danych. Zbiory ZooKeeper wyświetlają wszystkie węzły ZooKeeper we wszystkich centrach danych jako jeden zbiór.

Lokalizacja węzłów wyborczych w danym centrum danych nie jest brana pod uwagę podczas wykonywania obliczeń na kworum. Poszczególne węzły mogą przechodzić w różnych centrach danych, ale jeśli w całym zbiorze zachowa się kworum, ZooKeeper będzie działać.

Konserwacja

W różnych momentach konieczne będzie usunięcie węzła ZooKeeper do celów konserwacji. Może to być węzeł wyborczy lub węzeł obserwacyjny. Na przykład może być konieczne uaktualnienie wersji Edge w węźle, komputer hostujący ZooKeeper może ulec awarii lub węzeł może być niedostępny z innej przyczyny, takiej jak błąd sieci.

Jeśli węzeł, który ulega awarii, jest węzłem obserwacyjnym, możesz spodziewać się niewielkiego pogorszenia wydajności zespołu ZooKeeper, dopóki go nie przywrócisz. Jeśli węzeł jest węzłem wyborczym, może to wpływać na funkcjonowanie zespołu ZooKeeper z powodu utraty węzła, który bierze udział w procesie wyborów lidera. Niezależnie od przyczyny wyłączenia węzła wyborcy ważne jest, aby utrzymać kworum dostępnych węzłów wyborczych.

Procedura konserwacji

Wszelkie procedury konserwacyjne możesz wykonać dopiero po upewnieniu się, że zespół ZooKeeper działa. Zakładamy tutaj, że węzły obserwacyjne działają i na czas konserwacji dostępna jest wystarczająca liczba węzłów wyborczych, aby zachować kworum.

Gdy te warunki są spełnione, zbiór ZooKeeper o dowolnym rozmiarze może tolerować utratę pojedynczego węzła w dowolnym momencie bez utraty danych ani znaczącego wpływu na wydajność. Oznacza to, że możesz swobodnie przeprowadzać konserwację każdego węzła w zbiorze, o ile znajduje się on w 1 węźle naraz.

Podczas konserwacji wykonaj tę procedurę, aby określić typ węzła ZooKeeper (lider, wyborca lub obserwator):

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

    Gdzie 2181 to port ZooKeeper. Dane wyjściowe powinny pojawić się w formularzu:

    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 zależności od konfiguracji węzła w wierszu Mode wyników dla węzłów powinny się pojawić observer, leader lub follower (co oznacza, że wyborca nie jest liderem) w zależności od konfiguracji węzła.

  3. Powtórz kroki 1 i 2 w każdym węźle ZooKeeper.

Podsumowanie

Najlepszym sposobem konserwacji zespołu ZooKeeper jest przeprowadzanie go po jednym węźle. Pamiętaj:

  • Aby zespół ZooKeeper działał, musisz w czasie prac konserwacyjnych utrzymać kworę węzłów wyborczych
  • Usunięcie węzła obserwatora nie wpływa na kworum ani na możliwość wyboru lidera
  • Kwoty są obliczane dla wszystkich węzłów ZooKeeper we wszystkich centrach danych
  • Kontynuuj konserwację na następnym serwerze, gdy poprzedni będzie już gotowy
  • Aby zbadać węzeł ZooKeeper, użyj polecenia nc