Skip to content
Snippets Groups Projects
topology.md 19.71 KiB

Топология кластера 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 его придется указать явно: