Серверная работа Zookeeper имеет два режима: автономный режим (автономный), режим арбитража (кворум), автономный режим буквально: один сервер предоставляет услуги. В режиме кворума есть набор серверов zookeeper, которые могут реплицировать данные между собой и одновременно обслуживать клиентов. Кластер zookeeper, упомянутый в заголовке, работает в режиме кворума, который также фактически используется в производственной среде.
В кластере, чтобы заставить зависнуть любой узел, не влияя на согласованность данных всего кластера, формула для количества узлов в кластере равна 2n+1, если только зависание не больше n (под узлом здесь понимается зоопарк server). , то есть серверный процесс, на котором работает zookeeper). Для демонстрации этого примера будут запущены 3 процесса сервера zookeeper.
Установить
существуетЗагрузка с официального сайтаСжатый пакет zookeeper обычно представляет собой сжатый пакет tar. После загрузки используйте tar -xvf для его распаковки. После распаковки сценарий оболочки для запуска команды zookeeper находится в каталоге bin:
настроить
Чтобы запустить 3 процесса сервера zookeeper, создайте новый каталог для хранения данных о запуске и конфигурации этих 3 процессов, таких как z1, z2, z3. Создайте каталог данных в этих трех каталогах для хранения данных при запуске процесса 1. Содержимое myid в z2 равно 2, содержимое myid в z3 равно 3), и, наконец, в них встроен файл конфигурации, оканчивающийся на .cfg. три каталога.
Файл конфигурации в каталоге z1 называется z1.cfg и содержит следующее:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z1所在目录的全路径)/data
clientPort=2981
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
Файл конфигурации в каталоге z2 называется z2.cfg и имеет следующее содержимое:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z2所在目录的全路径)/data
clientPort=2982
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
Конфигурационный файл в каталоге z3 называется Z3.cfg, содержимое следующее:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=$(z3所在目录的全路径)/data
clientPort=2983
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
tickTime: временной интервал для поддержания контрольных сигналов между серверами или между клиентом и сервером, то есть контрольный сигнал отправляется каждый tickTime в миллисекундах. Это также единица времени в zookeeper.Все время в zookeeper основано на этой единице времени и настраивается в целых кратных единицах. Например, минимальное время ожидания для сеанса равно 2*tickTime.
initLimit и syncLimit: оба указывают количество тактовых импульсов для соединения, и конкретное значение можно пока игнорировать.
dataDir: каталог, в котором zookeeper сохраняет данные.По умолчанию в этом каталоге также сохраняются файлы журналов, созданные zookeeper.
clientPort: порт, по которому клиент подключается к серверу. Zookeeper будет прослушивать этот порт и принимать запрос доступа клиента.
сервер.N: ХХХХ:P1:P2. Где N представляет номер сервера, XXXX представляет собой IP-адрес сервера, а P1 и P2 — два номера TCP-порта, которые используются для арбитража и выборов Learder соответственно. Номер сервера также соответствует содержимому файла myid, сконфигурированного выше.Например, содержимое myid в каталоге z1 выше равно 1, а здесь это server.1.
запускать
Запустите три процесса zookeeper отдельно и используйте только что созданный файл конфигурации при запуске
Старт z1:
sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh start $(z1所在目录的全路径)/z1.cfg
Запуск z2:
sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh start $(z2所在目录的全路径)/z2.cfg
Запуск z3:
sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh start $(z3所在目录的全路径)/z3.cfg
Когда вы видите следующую информацию, это означает, что процесс zookeeper запущен
Вышеупомянутое предназначено для запуска сервера с помощью команды запуска zkServer.sh.Вы можете использовать команду состояния zkServer.sh для просмотра состояния сервера, например
sh $(zookeeper压缩包解压后的全路径)/bin/zkServer.sh status $(z2所在目录的全路径)/z2.cfg
Вы увидите результат:
илиВзяв в качестве примера мою локальную машину, мы можем видеть, что эти три процесса на самом деле являются одним лидером и двумя последователями.
Подключение клиента
Подключите zookeeper к zkCli.sh,
sh $(zookeeper压缩包解压后的全路径)/bin/zkCli.sh -server 127.0.0.1:2981,127.0.0.1:2982,127.0.0.1:2983
Номера портов, такие как 2981, являются значениями clientPort в файле конфигурации .cfg, упомянутом выше. Вывод консоли CONNECTED указывает на успешное подключение:
Затем вы можете использовать такие команды, как ls create delete в консоли.