Об обслуживании ZooKeeper

Edge для частного облака v. 4.17.01

Ансамбли ZooKeeper спроектированы таким образом, чтобы оставаться функциональными без потери данных, несмотря на потерю одного или нескольких узлов ZooKeeper. Эту устойчивость можно эффективно использовать для обслуживания узлов ZooKeeper без простоя системы.

О ZooKeeper и Edge

В Edge узлы ZooKeeper содержат данные конфигурации о расположении и конфигурации различных компонентов Edge и уведомляют различные компоненты об изменениях конфигурации. Во всех поддерживаемых топологиях Edge для производственной системы указано использование как минимум трех узлов ZooKeeper.

Используйте свойства ZK_HOSTS и ZK_CLIENT_HOSTS в файле конфигурации Edge, чтобы указать узлы ZooKeeper. Например:

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

где:

  • ZK_HOSTS — указывает IP-адреса узлов ZooKeeper. IP-адреса должны быть указаны в одном и том же порядке на всех узлах ZooKeeper.

    В среде с несколькими центрами обработки данных перечислите все узлы ZooKeeper из всех центров обработки данных.
  • ZK_CLIENT_HOSTS — указывает IP-адреса узлов ZooKeeper, используемых только этим центром обработки данных. IP-адреса должны быть указаны в одном и том же порядке на всех узлах ZooKeeper в Центре обработки данных.

    В одной установке центра обработки данных это те же узлы, которые указаны в ZK_HOSTS. В среде с несколькими центрами обработки данных в файле конфигурации Edge для каждого центра обработки данных должны быть указаны только узлы ZooKeeper для этого центра обработки данных.

По умолчанию все узлы ZooKeeper обозначены как узлы избирателей . Это означает, что все узлы участвуют в выборе лидера ZooKeeper. Вы можете включить модификатор «:observer» в ZK_HOSTS, чтобы указать, что заметка является узлом наблюдателя , а не избирателя. Узел-наблюдатель не участвует в выборах лидера.

Обычно вы указываете модификатор «:observer» при создании нескольких пограничных центров обработки данных или когда один центр обработки данных имеет большое количество узлов ZooKeeper. Например, в Edge-установке с 12 хостами и двумя центрами обработки данных ZooKeeper на узле 9 в центре обработки данных 2 является наблюдателем:

Затем вы используете следующие настройки в файле конфигурации для центра обработки данных 1:

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

И для дата-центра

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

О лидерах, последователях, избирателях и наблюдателях

В многоузловой установке ZooKeeper один из узлов назначается ведущим . Все остальные узлы ZooKeeper обозначены как последователи . Хотя чтение может происходить с любого узла ZooKeeper, все запросы на запись перенаправляются лидеру. Например, в Edge добавлен новый процессор сообщений. Эта информация пишется руководителю ZooKeeper. Затем все последователи реплицируют данные.

Во время установки Edge вы назначаете каждый узел ZooKeeper избирателем или наблюдателем. Затем лидер избирается всеми голосующими узлами ZooKeeper. Единственным требованием для выборов лидера является наличие кворума функционирующих узлов голосования ZooKeeper. Кворум означает, что более половины всех проголосовавших узлов ZooKeeper во всех центрах обработки данных работоспособны.

Если нет кворума доступных узлов избирателей, ни один лидер не может быть избран. В этом случае Zookeeper не может обслуживать запросы. Это означает, что вы не сможете отправить запрос на Edge Management Server, обработать запросы Management API или войти в пользовательский интерфейс Edge, пока кворум не будет восстановлен.

Например, в одной установке центра обработки данных:

  • Вы установили три узла ZooKeeper.
  • Все узлы ZooKeeper являются избирателями.
  • Кворум — это два функционирующих узла избирателей.
  • Если доступен только один узел избирателя, ансамбль ZooKeeper не может функционировать.

В установке с двумя дата-центрами:

  • Вы установили по три узла ZooKeeper на каждый центр обработки данных, всего шесть узлов.
  • Центр обработки данных 1 имеет три узла для голосования.
  • Центр обработки данных 2 имеет два узла избирателей и один узел наблюдателя.
  • Кворум основан на пяти избирателях в обоих центрах обработки данных и, следовательно, представляет собой три функционирующих узла избирателей.
  • Если доступны только два или меньше узлов избирателей, ансамбль ZooKeeper не может функционировать.

Добавление узлов в качестве избирателей или наблюдателей

Ваши системные требования могут потребовать добавления дополнительных узлов ZooKeeper в вашу установку Edge. В документации по добавлению узлов ZooKeeper описано, как добавить дополнительные узлы ZooKeeper в Edge. При добавлении узлов ZooKeeper вы должны учитывать тип добавляемых узлов: избиратель или наблюдатель.

Вы хотите убедиться, что у вас достаточно узлов избирателей, чтобы в случае выхода из строя одного или нескольких узлов избирателей ансамбль ZooKeeper продолжал функционировать, то есть кворум узлов избирателей все еще оставался доступным. Добавляя узлы избирателей, вы увеличиваете размер кворума и, следовательно, можете допустить, что больше узлов избирателей будут отключены.

Однако добавление дополнительных узлов избирателей может отрицательно повлиять на производительность записи, поскольку операции записи требуют, чтобы кворум согласовал лидера. Время, необходимое для определения лидера, зависит от количества узлов избирателей, которое увеличивается по мере добавления новых узлов избирателей. Следовательно, вы не хотите делать все узлы избирателями.

Вместо добавления узлов избирателей вы можете добавить узлы наблюдателей. Добавление узлов-наблюдателей увеличивает общую производительность чтения системы без увеличения накладных расходов на выбор лидера, поскольку узлы-наблюдатели не голосуют и не влияют на размер кворума. Следовательно, если узел-наблюдатель выйдет из строя, это не повлияет на способность ансамбля выбирать лидера. Однако потеря узлов-наблюдателей может привести к снижению производительности чтения ансамбля ZooKeeper, поскольку для обслуживания запросов данных доступно меньше узлов.

Apigee рекомендует иметь в одном дата-центре не более пяти избирателей независимо от количества узлов-наблюдателей. Apigee рекомендует иметь в двух дата-центрах не более девяти избирателей (пять в одном дата-центре и четверо в другом). Затем вы можете добавить столько узлов-наблюдателей, сколько необходимо для требований вашей системы.

Рекомендации по техническому обслуживанию

Обслуживание ZooKeeper может выполняться на полностью функционирующем ансамбле без простоев, если оно выполняется на одном узле одновременно. Убедившись, что только один узел ZooKeeper не работает в любой момент времени, вы можете гарантировать, что всегда существует кворум узлов избирателей, доступных для избрания лидера.

Обслуживание в нескольких центрах обработки данных

При работе с несколькими центрами обработки данных помните, что ансамбль ZooKeeper не различает центры обработки данных. Сборки ZooKeeper рассматривают все узлы ZooKeeper во всех центрах обработки данных как один ансамбль.

Расположение узлов избирателей в данном центре обработки данных не является фактором, когда ZooKeeper выполняет расчеты кворума. Отдельные узлы могут отключаться в разных центрах обработки данных, но пока сохраняется кворум во всем ансамбле, ZooKeeper остается работоспособным.

Последствия технического обслуживания

В разное время вам придется отключать узел ZooKeeper для обслуживания: либо узел избирателя, либо узел наблюдателя. Например, вам может потребоваться обновить версию Edge на узле, может произойти сбой компьютера, на котором размещен ZooKeeper, или узел может стать недоступным по какой-либо другой причине, например из-за сетевой ошибки.

Если вышедший из строя узел является узлом-наблюдателем, то можно ожидать небольшого снижения производительности ансамбля ZooKeeper до тех пор, пока узел не будет восстановлен. Если узел является узлом избирателя, это может повлиять на жизнеспособность ансамбля ZooKeeper из-за потери узла, который участвует в процессе выборов лидера. Независимо от причины выхода из строя узла избирателя, важно поддерживать кворум доступных узлов избирателя.

Процедура обслуживания

Вам следует рассматривать возможность выполнения любой процедуры обслуживания только после того, как убедитесь, что ансамбль ZooKeeper работает. Это предполагает, что узлы-наблюдатели работоспособны и что во время обслуживания доступно достаточно узлов избирателей для сохранения кворума.

Когда эти условия соблюдены, ансамбль ZooKeeper произвольного размера может допустить потерю одного узла в любой точке без потери данных или существенного влияния на производительность. Это означает, что вы можете выполнять обслуживание любого узла в ансамбле, если он выполняется только на одном узле за раз.

В рамках выполнения обслуживания используйте следующую процедуру, чтобы определить тип узла ZooKeeper (лидер, избиратель или наблюдатель):

  1. Если он не установлен на узле ZooKeeper, установите nc:
    > sudo yum install nc
  2. Выполните следующую команду nc на узле:
    > статистика эха | NC локальный хост 2181

    Где 2181 — порт ZooKeeper. Вы должны увидеть вывод в форме:
    Версия Zookeeper: 3.4.5-1392090, построена 30.09.2012 17:52 GMT
    Клиенты: /abcd:xxxx[0](в очереди=0,получено=1,отправлено=0)
    Задержка мин/сред/макс: 0/0/0
    Получено: 1
    Отправлено: 0
    Подключения: 1
    Выдающиеся: 0
    Zxid: 0xc00000044
    Режим: последователь
    Количество узлов: 653


    В строке «Режим » выходных данных узлов вы должны увидеть наблюдателя , лидера или последователя (то есть избирателя, который не является лидером) в зависимости от конфигурации узла.

    Примечание . В автономной установке Edge с одним узлом ZooKeeper для режима установлено значение «автономный» .
  3. Повторите шаги 1 и 2 на каждом узле ZooKeeper.

Краткое содержание

Лучший способ обслуживания ансамбля ZooKeeper — выполнять его по одному узлу за раз. Помнить:

  • Вы должны поддерживать кворум узлов голосования во время обслуживания, чтобы ансамбль ZooKeeper оставался работоспособным.
  • Удаление узла наблюдателя не влияет на кворум или возможность выбирать лидера.
  • Кворум рассчитывается для всех узлов ZooKeeper во всех центрах обработки данных.
  • Продолжайте обслуживание следующего сервера после того, как предыдущий сервер заработает.
  • Используйте команду nc для проверки узла ZooKeeper.