Топология кластера Picodata
В данном документе рассматриваются различные сценарии работы с кластером. Все они основаны на одном и том же принципе: запуске и объединении отдельных экземпляров Picodata в распределенный кластер. При этом сложность развертывания и поддержания работоспособности кластера зависит только от сложности его топологии.
Минимальный вариант кластера
Picodata может создать кластер, состоящий всего из одного экземпляра/инстанса. Обязательных параметров у него нет, что позволяет свести запуск к выполнению всего одной простой команды:
picodata run
Можно добавлять сколько угодно последующих инcтансов — все они будут подключаться к этому кластеру. Каждому интансу следует задать отдельную рабочую директорию (параметр --data-dir
), а также указать адрес и порт для приема соединений (параметр --listen
) в формате <HOST>:<PORT>
. Фактор репликации по умолчанию равен 1 — каждый инстанс образует отдельный репликасет. Если для --listen
указать только порт, то будет использован IP-адрес по умолчанию (127.0.0.1):
picodata run --data-dir i1 --listen :3301
picodata run --data-dir i2 --listen :3302
picodata run --data-dir i3 --listen :3303
Кластер на нескольких серверах
Выше был показан запуск Picodata на одном сервере, что удобно для тестирования и отладки, но не отражает сценариев полноценного использования кластера. Поэтому пора запустить Picodata на нескольких серверах. Предположим, что их два: 192.168.0.1
и 192.168.0.2
. Порядок запуска будет следующим:
На 192.168.0.1
:
picodata run --listen 192.168.0.1:3301
На 192.168.0.2
:
picodata run --listen 192.168.0.2:3301 --peer 192.168.0.1:3301
На что нужно обратить внимание:
Во-первых, для параметра --listen
вместо стандартного значения 127.0.0.1
надо указать конкретный адрес. Формат адреса допускает упрощения — можно указать только хост 192.168.0.1
(порт по умолчанию :3301
), или только порт, но для наглядности лучше использовать полный формат <HOST>:<PORT>
.
Значение параметра --listen
не хранится в кластерной конфигурации и может меняться при перезапуске инстанса.
Во-вторых, надо дать инстансам возможность обнаружить друг друга для того чтобы механизм discovery правильно собрал все найденные экземпляры Picodata в один кластер. Для этого в параметре --peer
нужно указать адрес какого-либо соседнего инстанса. По умолчанию значение параметра --peer
установлено в 127.0.0.1:3301
. Параметр --peer
не влияет больше ни на что, кроме механизма обнаружения других инстансов.
Параметр --advertise
используется для установки публичного IP-адреса и порта инстанса. Параметр сообщает, по какому адресу остальные инстансы должны обращаться к текущему. По умолчанию он равен --listen
, поэтому в примере выше не упоминается. Но, например, в случае --listen 0.0.0.0
его придется указать явно: