Конфигурирование узла ZooKeeper#
В данном подразделе описывается конфигурирование ZooKeeper для запуска в качестве standalone-приложения на одной машине. Этот вид конфигурации не обеспечивает отказоустойчивости и не рекомендован для использования в промышленной эксплуатации.
Конфигурирование узла Apache ZooKeeper осуществляется в файле zookeeper.properties.
Минимальная конфигурация#
Пример конфигурационного файла zookeeper.properties для одного узла:
dataDir=/path/to/zookeeper-data
clientPort=2181
tickTime=2000
Шаги создания конфигурационного файла:
Для переменной
dataDirукажите путь к директории, в которую ZooKeeper будет сохранять файлы с данными, необходимыми ему для работы.Пример
dataDir=/var/log/kafka_2.11-0.9.0.0/zookeeper-dataДля переменной
clientPortукажите номер порта, к которому будут подключаться клиенты.Пример
clientPort=2181Для переменной
tickTimeукажите единицу измерения времени ZooKeeper — это время в миллисекундах, которое уходит на один «тик» или «такт» ZooKeeper.tickTimeнеявно используется в настройках для различных временных параметров ZooKeeper. Например, для временной настройкиinitLimit=10— это означает, чтоinitLimitбудет выполняться за10 * tickTimeмиллисекунд.Пример
tickTime=2000
Расширенная конфигурация#
Существует ряд дополнительных настроек, которые можно включить в конфигурационный файл:
maxClientCnxns— максимально допустимое количество соединений (на уровне сокетов), устанавливаемых клиентом (IP-адрес) с одним из серверов кластера ZooKeeper.Если значение равно нулю или настройка не указана в файле конфигураций, то количество одновременных подключений считается неограниченным.
Данная настройка позволяет предотвратить некоторые виды DoS-атак.
Пример
maxClientCnxns=0dataLogDir— позволяет выделить отдельную директорию для хранения транзакционного лога ZooKeeper. По умолчанию все транзакционные логи ZooKeeper (файлыlog.) хранятся вместе с файламиsnapshot., т. н. «снепшотами», в одной общей директорииdataDir.Свойство
dataLogDirможет быть использовано для сохранения транзакционных логов в памяти отдельного устройства, т. е. в памяти другого физического, а не логического диска, для достижения наилучшей производительности (за счет уменьшения нагрузки на диск).Пример
dataLogDir=/another/path/to/zookeeper-logsДанные ZooKeeper — это персистентные (неизменяемые) копии ZooKeeper-узлов (
znodes), хранимые соответствующим ансамблем на диске в виде файлов двух видов:Транзакционные логи (
transaction log) — это файлы с префиксомlog., в которые в последовательном порядке записываются все изменения, происходящие с ZooKeeper-узлами.Снепшоты (
snapshot) — это файлы с префиксомsnapshot.Когда файл транзакционного лога достигает определенного размера, создается копия текущего состояния всех ZooKeeper-узлов в виде снепшота. Этот снепшот заменяет все предыдущие логи.
Примечание
Устаревшие версии файлов транзакционных логов и снепшотов не удаляются с диска сервером ZooKeeper — эта задача полностью ложится на администратора ZooKeeper.
globalOutstandingLimit— ограничение времени, позволяющее регулировать количество обращений клиентов к серверу ZooKeeper. Поскольку клиенты отправляют запросы быстрее, чем сервер успевает их обработать, сервер может не справиться и израсходовать всю доступную память. По умолчанию число запросов, находящихся в обработке в некоторый момент времени, не превышает1000.Пример
globalOutstandingLimit=1000preAllocSize— размер блока лог-файлов транзакций. По умолчанию равен 64 Мбайт. Использование транзакционного лога минимизирует количество обращений к диску. Если снепшоты ZooKeeper создаются слишком часто, размер логов транзакций может не достигать 64 Мбайт. В таких ситуациях включение этого параметра позволяет оптимизировать расход объема дискового пространства.snapCount— число транзакций, которые будут записаны в лог транзакций после создания очередного снепшота (snapshot) — файла данных ZooKeeper. По умолчанию —100000.Чтобы предотвратить одновременное создание снепшота всеми серверами в кворуме, каждый сервер ZooKeeper сделает снепшот, когда количество транзакций в лог-файле транзакций достигнет случайного значения, сгенерированного во время выполнения в диапазоне [snapCount/2+1, snapCount].
Пример
snapCount =100000traceFile— файл трассировки в форматеtraceFile.year.month.day, в который будут записываться все запросы клиентов. Полезен в целях отладки. Побочный эффект — некоторый спад производительности.
Текущая используемая конфигурация#
Конфигурационный файл zookeeper.properties для ZooKeeper следующий:
dataDir=/tmp/kafka/zookeeper
clientPort=2181
maxClientCnxns=0