Informacje o konserwacji ZooKeeper

Edge for Private Cloud w wersji 4.19.01

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 Edge dla systemu produkcyjnego korzystają z 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 przykład:

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 ZK_HOSTS, aby wskazać, że węzeł jest węzłem obserwacyjnym, 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 Centrum danych 2:

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

Poniższe sekcje zawierają więcej informacji o węzłach lidera, wyborcy i obserwatora, a także kwestie związane z dodawaniem węzłów wyborczych i obserwatorów.

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ć

Uwagi na temat dodawania 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 zespół ZooKeeper mógł nadal działać, jeśli co najmniej 1 węzeł będzie niedostępny. 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.

Usuwanie węzła Zookeeper

Istnieje wiele powodów, dla których warto usunąć węzeł Zookeeper. Na przykład węzeł został uszkodzony lub został dodany do niewłaściwego środowiska.

W tej sekcji opisaliśmy, jak usunąć węzeł Zookeeper, gdy węzeł jest wyłączony i nieosiągalny.

Aby usunąć węzeł Zookeeper:

  1. Edytuj plik konfiguracji cichej konfiguracji i usuń adres IP węzła Zookeeper, który chcesz usunąć.
  2. Uruchom ponownie polecenie setup dla Zookeeper, aby ponownie skonfigurować pozostałe węzły ZooKeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Ponownie uruchom wszystkie węzły Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. 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
  5. Skonfiguruj ponownie 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
  6. Ponownie skonfiguruj wszystkie procesory wiadomości:
    /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
  7. Skonfiguruj ponownie 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
  8. Skonfiguruj ponownie 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 na temat konserwacji

Możesz przeprowadzić konserwację ZooKeeper na w pełni sprawnym zestawie bez przestojów, jeśli wykonano ją na 1 węźle naraz. 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 dopóki kworum zostanie zachowane w całym zbiorze, 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 się zepsuje, 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

Wykonuj procedury konserwacyjne 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 w węźle to polecenie nc, gdzie 2181 to port ZooKeeper:
    echo stat | nc localhost 2181

    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ł, w czasie prac konserwacyjnych musisz 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.