Edge for Private Cloud v. 4.16.09
Ансамбли 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 назначаются узлами voter. Это означает, что все узлы участвуют в выборе лидера 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 добавляется новый Message Processor. Эта информация записывается в лидер ZooKeeper. Все подписчики затем реплицируют данные.
At Edge installation time, you designate each ZooKeeper node as a voter or as an observer. Затем все узлы ZooKeeper, имеющие право голоса, выбирают лидера. Единственное требование для выбора лидера – наличие кворума функционирующих узлов голосования ZooKeeper. Кворум означает, что более половины всех узлов ZooKeeper, участвующих в голосовании, во всех центрах обработки данных функционируют.
Если кворум узлов-избирателей недоступен, лидер не может быть выбран. В этом случае ZooKeeper не сможет обрабатывать запросы. Это означает, что вы не можете сделать запрос к Edge Management Сервер, обрабатывать запросы 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 (лидер, голосующий или наблюдатель), выполните следующие действия:
- Если она не установлена на узле ZooKeeper, установите ее:
> sudo yum install nc - Выполните на узле следующую команду nc:
> echo stat | nc localhost 2181
где 2181 – порт ZooKeeper. Вы должны увидеть выходные данные в форме:
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
В строке Mode выходных данных для узлов вы должны увидеть observer, leader или follower (то есть голосующий, который не является лидером) в зависимости от конфигурации узла.
Примечание. В автономной установке Edge с одним узлом ZooKeeper для параметра Mode задано значение standalone. - Повторите шаги 1 и 2 на каждом узле ZooKeeper.
Сводка
Лучший способ выполнить обслуживание ансамбля ZooKeeper – выполнять его по одному узлу за раз. Помните:
- Во время обслуживания необходимо поддерживать кворум узлов голосования, чтобы обеспечить работоспособность ансамбля ZooKeeper.
- Отключение узла-наблюдателя не влияет на кворум или возможность выбора лидера.
- Кворум рассчитывается по всем узлам ZooKeeper во всех центрах обработки данных.
- Переходите к обслуживанию следующего сервера только после того, как предыдущий сервер будет запущен.
- Используйте команду nc для проверки узла ZooKeeper