From d08cdf2b147878c4af33d2079fa8b2945c171d52 Mon Sep 17 00:00:00 2001 From: Yaroslav Dynnikov <yaroslav.dynnikov@gmail.com> Date: Mon, 20 Jun 2022 13:02:42 +0300 Subject: [PATCH] docs: enhance topology rfc --- docs/topology.md | 151 +++++++++++++++++++++++------------------------ 1 file changed, 74 insertions(+), 77 deletions(-) diff --git a/docs/topology.md b/docs/topology.md index 921b991231..9d9e78fcb5 100644 --- a/docs/topology.md +++ b/docs/topology.md @@ -1,15 +1,4 @@ ---- -title: Topology RFC (v3.11) -tags: Picodata, RFC ---- - -## Topology RFC (v3.11 for Workgroups) - -*2022-06-17* - -*Yaroslav Dynnikov* - -*Alexander Tolstoy* +# Ð¢Ð¾Ð¿Ð¾Ð»Ð¾Ð³Ð¸Ñ ÐºÐ»Ð°Ñтера Picodata Ð’ данном документе раÑÑматриваютÑÑ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñценарии работы Ñ ÐºÐ»Ð°Ñтером. Ð’Ñе они оÑнованы на одном и том же принципе: запуÑке и объединении отдельных ÑкземплÑров Picodata в раÑпределенный клаÑтер. При Ñтом ÑложноÑÑ‚ÑŒ Ñ€Ð°Ð·Ð²ÐµÑ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð¾ÑпоÑобноÑти клаÑтера завиÑит только от ÑложноÑти его топологии. @@ -33,35 +22,35 @@ picodata run --data-dir i2 --listen :3302 picodata run --data-dir i3 --listen :3303 ``` -> Q: Ðужно ли Ð´Ð»Ñ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¾Ð³Ð¾ клаÑтера указывать параметр `--peer`? -> -> A: Ðто не обÑзательно, Ñ‚.к. по умолчанию `--peer` имеет такое же значение по умолчанию как и `--listen`: _127.0.0.1:3301_. - - ## КлаÑтер на неÑкольких Ñерверах Выше был показан запуÑк Picodata на одном Ñервере, что удобно Ð´Ð»Ñ Ñ‚ÐµÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ отладки, но не отражает Ñценариев полноценного иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтера. ПоÑтому пора запуÑтить Picodata на неÑкольких Ñерверах. Предположим, что их два: `192.168.0.1` и `192.168.0.2`. ПорÑдок запуÑка будет Ñледующим: Ðа `192.168.0.1`: ```shell -picodata run --listen 0.0.0.0 --advertise 192.168.0.1 +picodata run --listen 192.168.0.1:3301 ``` Ðа `192.168.0.2`: ```shell -picodata run --listen 0.0.0.0 --advertise 192.168.0.2 --peer 192.168.0.1 +picodata run --listen 192.168.0.2:3301 --peer 192.168.0.1:3301 ``` + Ðа что нужно обратить внимание: -Во-первых, Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° `--listen` вмеÑто Ñтандартного Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ `127.0.0.1` надо указать `0.0.0.0`. Порт указывать не обÑзательно (по умолчанию везде иÑпользуетÑÑ `:3301`). +Во-первых, Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° `--listen` вмеÑто Ñтандартного Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ `127.0.0.1` надо указать конкретный адреÑ. Формат адреÑа допуÑкает ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð¸Ñ â€” можно указать только хоÑÑ‚ `192.168.0.1` (порт по умолчанию `:3301`), или только порт, но Ð´Ð»Ñ Ð½Ð°Ð³Ð»ÑдноÑти лучше иÑпользовать полный формат `<HOST>:<PORT>`. -Значение параметра `--listen` не хранитÑÑ Ð² клаÑтерной конфигурации и может менÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸ перезапуÑке инÑтанÑа. +Значение параметра `--listen` не хранитÑÑ Ð² клаÑтерной конфигурации и может менÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸ перезапуÑке инÑтанÑа. Во-вторых, надо дать инÑтанÑам возможноÑÑ‚ÑŒ обнаружить друг друга Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы механизм [discovery](discovery.md) правильно Ñобрал вÑе найденные ÑкземплÑры Picodata в один клаÑтер. Ð”Ð»Ñ Ñтого в параметре `--peer` нужно указать Ð°Ð´Ñ€ÐµÑ ÐºÐ°ÐºÐ¾Ð³Ð¾-либо ÑоÑеднего инÑтанÑа. По умолчанию значение параметра `--peer` уÑтановлено в `127.0.0.1:3301`. Параметр `--peer` не влиÑет больше ни на что, кроме механизма Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… инÑтанÑов. -Параметр `--advertise` иÑпользуетÑÑ Ð´Ð»Ñ ÑƒÑтановки публичного IP-адреÑа инÑтанÑа. Параметр Ñообщает, по какому адреÑу оÑтальные инÑтанÑÑ‹ должны обращатьÑÑ Ðº текущему инÑтанÑу. По умолчанию он определÑетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки как `<HOSTNAME>:<LISTEN_PORT>`. +Параметр `--advertise` иÑпользуетÑÑ Ð´Ð»Ñ ÑƒÑтановки публичного IP-адреÑа и порта инÑтанÑа. Параметр Ñообщает, по какому адреÑу оÑтальные инÑтанÑÑ‹ должны обращатьÑÑ Ðº текущему. По умолчанию он равен `--listen`, поÑтому в примере выше не упоминаетÑÑ. Ðо, например, в Ñлучае `--listen 0.0.0.0` его придетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ñвно: + +```shell +picodata run --listen 0.0.0.0:3301 --advertise 192.168.0.1:3301 +``` -Значение параметра `--advertise` анонÑируетÑÑ ÐºÐ»Ð°Ñтеру при запуÑке инÑтанÑа. Его можно поменÑÑ‚ÑŒ при перезапуÑке инÑтанÑа или в процеÑÑе его работы командой `picodata set-advertise`. +Значение параметра `--advertise` анонÑируетÑÑ ÐºÐ»Ð°Ñтеру при запуÑке инÑтанÑа. Его можно поменÑÑ‚ÑŒ при перезапуÑке инÑтанÑа или в процеÑÑе его работы командой `picodata set-advertise`. ## Питомцы против Ñтада @@ -73,21 +62,46 @@ picodata run --instance-id barsik ЕÑли Ð¸Ð¼Ñ Ð½Ðµ дать, то оно будет Ñгенерировано автоматичеÑки в момент Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² клаÑтер. Ð˜Ð¼Ñ Ð¸Ð½ÑтанÑа задаетÑÑ Ð¾Ð´Ð¸Ð½ раз и не может быть изменено в дальнейшем (например, оно поÑтоÑнно ÑохранÑетÑÑ Ð² Ñнапшотах инÑтанÑа). Ð’ клаÑтере Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð¼ÐµÑ‚ÑŒ два инÑтанÑа Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ именем — второй инÑÑ‚Ð°Ð½Ñ Ñразу поÑле запуÑка получит ошибку при добавлении в клаÑтер. Тем не менее, Ð¸Ð¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ повторно иÑпользовать еÑли предварительно иÑключить первый инÑÑ‚Ð°Ð½Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем из клаÑтера. Ðто делаетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ `picodata expel barsik`. -## Ð ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¸ зоны доÑтупноÑти (failure domains) +## Группы и роли + +До Ñих пор раÑÑматриваемый клаÑтер был гомогенным. Ð’Ñе инÑтанÑÑ‹ были одинаковы по функциональноÑти — хранили данные, обрабатывали запроÑÑ‹. Ð’ промышленной ÑкÑплуатации Ñти роли почти вÑегда требуетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»ÑÑ‚ÑŒ, чтобы Ñффективнее иÑпользовать реÑурÑÑ‹ оборудованиÑ. Под хранение выделÑÑŽÑ‚ÑÑ Ñерверы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ объемом памÑти, Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ запроÑов Ñто не требуетÑÑ. + +Ð’ Picodata Ð´Ð»Ñ Ñтих целей Ñлужит понÑтие групп инÑтанÑов. ПринадлежноÑÑ‚ÑŒ инÑтанÑа той или иной группе задаетÑÑ Ð¿Ñ€Ð¸ добавлении в клаÑтер параметром `--group` и впоÑледÑтвии не может быть изменена. По умолчанию клаÑтер ÑоÑтоит из одной группы "common". -КоличеÑтво реплик наÑтраиваетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ `--init-replication-factor`. -Ðтот параметр играет роль только в момент инициализации клаÑтера. Bootstrap-лидер запиÑывает Ñто значение в конфигурацию клаÑтера (`replication-factor`). Ð’ дальнейшем значение `--init-replication-factor` игнорируетÑÑ. +ФункциональноÑÑ‚ÑŒ инÑтанÑов определÑетÑÑ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ ролей. Ðа данный момент ÑущеÑтвует две роли: -Отредактировать фактор репликации, Ñохраненный в конфигурации клаÑтера, можно командой `picodata set-replication-factor`. Редактирование конфигуарции ÑказываетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на вновь добавлÑемых инÑтанÑах, но не затрагивает уже работающие. +- storage — позволÑет хранить шардированные данные на инÑтанÑе. +- router — реализует логику доÑтупа к шардированным данным. -Ðтот параметр ÑоÑтавлÑет чаÑÑ‚ÑŒ конфигурации клаÑтера и обозначает *желаемое* количеÑтво реплик в каждом репликаÑете. +По умолчанию инÑÑ‚Ð°Ð½Ñ Ð¸ÑполнÑет обе роли одновременно, но его можно ограничить Ñвным указанием одной из них: + +``` +picodata run --role storage +picodata run --role router +``` + +Важно то, что обе Ñти роли отноÑÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к шардированию. Так, отключение роли storage ничем не мешает хранить данные локально. + +Также инÑÑ‚Ð°Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð¾ запуÑтить без ролей вовÑе, в результате чего он будет функционировать иÑключительно как не-шардированное локальное хранилище: + +``` +picodata run --no-role +``` -При добавлении инÑтанÑа фактор репликации будет запиÑан в конфигурацию клаÑтера, но такой Ñценарий позволÑет изменÑÑ‚ÑŒ его только в Ñторону увеличениÑ. При Ñтом, ÑохранÑетÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ÑŒ уменьшить фактор репликации Ð´Ð»Ñ Ð²Ð½Ð¾Ð²ÑŒ добавлÑемых инÑтанÑов командой `picodata set-replication-factor`(Ñ ÑƒÐ¶Ðµ работающими инÑтанÑами ничего не произойдет). +Ð’Ñе инÑтанÑÑ‹ в группе имеют одинаковый набор ролей и одинаковый фактор репликации. + +## Ð ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¸ зоны доÑтупноÑти (failure domains) + +КоличеÑтво инÑтанÑов в репликаÑете определÑетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼ переменной `replication_factor`. Внутри группы инÑтанÑов иÑпользуетÑÑ Ð¾Ð´Ð¸Ð½ и тот же `replication_factor`. + +Ð”Ð»Ñ ÐµÐµ инициализации Ñлужит параметр `--init-replication-factor`. Ðтот параметр играет роль только в момент ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ (Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ инÑтанÑа). Ð’ Ñтот момент значение из аргументов командной Ñтроки запиÑываетÑÑ Ð² конфигурацию клаÑтера. Ð’ дальнейшем значение параметра `--init-replication-factor` игнорируетÑÑ. + +Отредактировать фактор репликации, Ñохраненный в конфигурации клаÑтера, можно командой `picodata set-replication-factor`. Редактирование конфигурации ÑказываетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на вновь добавлÑемых инÑтанÑах, но не затрагивает уже работающие. По мере уÑÐ»Ð¾Ð¶Ð½ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð³Ð¸Ð¸ возникает еще один Ð²Ð¾Ð¿Ñ€Ð¾Ñ â€” как не допуÑтить Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² репликаÑет инÑтанÑов из одного и того же датацентра. Ð”Ð»Ñ Ñтого введен параметр `--failure-domain` — _зона доÑтупноÑти_, Ð¾Ñ‚Ñ€Ð°Ð¶Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ðº физичеÑкого Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñервера, на котором выполнÑетÑÑ Ð¸Ð½ÑÑ‚Ð°Ð½Ñ Picodata. Ðто может быть как датацентр, так и какое-либо другое обозначение раÑположениÑ: регион (например, `eu-east`), Ñтойка, Ñервер, или ÑобÑтвенное обозначение (blue, green, yellow). Ðиже показан пример запуÑка инÑтанÑа Picodata Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ зоны доÑтупноÑти: ``` -picodata run --replication-factor 2 --failure-domain region=us,zone=us-west-1 +picodata run --init-replication-factor 2 --failure-domain region=us,zone=us-west-1 ``` Добавление инÑтанÑа в репликаÑет проиÑходит по Ñледующим правилам: @@ -104,31 +118,11 @@ picodata run --replication-factor 2 --failure-domain region=us,zone=us-west-1 ДобавлÑемый инÑÑ‚Ð°Ð½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ обладать тем же набором параметров, которые уже еÑÑ‚ÑŒ в клаÑтере. Ðапример, инÑÑ‚Ð°Ð½Ñ `dc=msk` не Ñможет приÑоединитьÑÑ Ðº клаÑтеру Ñ `--failure-domain region=eu/us` и вернет ошибку. -## Группы инÑтанÑов - -Иногда бывает так, что в разных репликаÑетах хочетÑÑ Ð¸Ñпользовать разный фактор репликации или ограничить размер хранимых данных. КлаÑÑичеÑкий пример — разделение клаÑтера на узлы Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ (`storage`) и узлы маршрутизации (`router`). - -Такое разделение делаетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ логичеÑкой группировки инÑтанÑов по разным функциональным группам. Ðто делаетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ `--instance-group`. По умолчанию инÑтанÑÑ‹ добавлÑÑŽÑ‚ÑÑ Ð² неÑвную группу `"default"`, но пользователь может Ñоздать Ñколько угодно новых групп, перечиÑлив их в переменной `PICODATA_AVAILABLE_INSTANCE_GROUPS` подобным образом: - -```bash -export PICODATA_AVAILABLE_INSTANCE_GROUPS=\ -"name=storage:replication-factor=3,"\ -"name=router:storage-weight=0" -``` - -Теперь при запуÑке инÑтанÑов можно будет указать группу: - -``` -picodata run --instance-group router -``` - -Ðаличие групп не ограничивает Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² Ñоздании новых. Как и в Ñлучае Ñ `--replication-factor`, новые группы можно добавлÑÑ‚ÑŒ вмеÑте Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ новых инÑтанÑов. - ## КейÑ: два датацентра по две реплики -Picodata ÑтараетÑÑ Ð½Ðµ объединÑÑ‚ÑŒ в один репликаÑет инÑтанÑÑ‹, у которых Ñовпадает Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один домен. Ðо иногда Ñто прÑмо таки необходимо. Чтобы ограничить Picodata в беÑконечном Ñоздании репликаÑетов, можно воÑпользоватьÑÑ Ñ„Ð»Ð°Ð³Ð¾Ð¼ `--max-replicaset-count` (по умолчанию `inf`). +Picodata ÑтараетÑÑ Ð½Ðµ объединÑÑ‚ÑŒ в один репликаÑет инÑтанÑÑ‹, у которых Ñовпадает Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один домен. Ðо иногда Ñто вÑе же необходимо. Чтобы ограничить Picodata в беÑконечном Ñоздании репликаÑетов, можно воÑпользоватьÑÑ Ñ„Ð»Ð°Ð³Ð¾Ð¼ `--max-replicaset-count` (по умолчанию `inf`). -Как и `--replication-factor`, параметр `--max-replicaset-count` можно назначать разным Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… групп репликаÑетов. +Как и `--init-replication-factor`, параметр `--max-replicaset-count` может быть разным Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… групп. Как и другие параметры, `--max-replicaset-count` редактируетÑÑ Ð² любой момент: @@ -147,22 +141,27 @@ Picodata ÑтараетÑÑ Ð½Ðµ объединÑÑ‚ÑŒ в один реплика Мы перечиÑлили доÑтаточно много разнобразных параметров, некоторые из которых делают команду запуÑка доÑтаточно длинной. ВмеÑто отдельных команд можно иÑпользовать файл конифгурации. Пример: -<h5 a><strong><code>c1.toml</code></strong></h5> +<h5 a><strong><code>storage.toml</code></strong></h5> -``` -[[available-replicaset-groups]]: -name = "storage" +```toml +group = "storages" max-replicaset-count = 30 replication-factor = 4 +roles = ["storage"] +``` -[[available-replicaset-groups]] -name = "router" -storage-weight = 0 +<h5 a><strong><code>storage.toml</code></strong></h5> + +```toml +group = "routers" +roles = ["router"] ``` -Пример запуÑка инÑтанÑа Picodata c иÑпользованием файла конфигурации: + +Пример запуÑка клаÑтера Picodata c иÑпользованием файла конфигурации: ``` -picodata run --cfg custom-config.toml +picodata run --cfg storage.toml --listen :3301 +picodata run --cfg router.toml --listen :3302 ``` ## ДинамичеÑкое переключение голоÑующих узлов в Raft (Raft voter failover) @@ -185,13 +184,12 @@ picodata run --cfg custom-config.toml *env*: `PICODATA_DATA_DIR` *default*: `.` - `--listen` : Socket bind address. *env*: `PICODATA_LISTEN` *default*: `localhost:3301` - -`--peer <[host][:port]>` + +`--peer <[host][:port],...>` : Address of other instance(s). *env*: `PICODATA_PEER` *default*: `localhost:3301` @@ -199,8 +197,7 @@ picodata run --cfg custom-config.toml `--advertise <[host][:port]>` : Address the other instances should use to connect to this instance. *env*: `PICODATA_ADVERTISE` -*default*: `%hostname%:%listen_port%` -:hammer_and_wrench:: ЕÑли `%listen% == "0.0.0.0"`, то надо подÑтавлÑÑ‚ÑŒ `%hostname%`. Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾ умолчанию вÑегда проÑто `%listen%`. +*default*: `%listen%` `--cluster-id <name>` : Name of the cluster. The instance will refuse to join the cluster with a different name. @@ -211,31 +208,31 @@ picodata run --cfg custom-config.toml : Name of the instance. *env*: `PICODATA_INSTANCE_ID` *default*: `i%raft_id%`, e.g. `i1`, `i42`, etc. -:hammer_and_wrench:: Ðадо придумать, как идентифицировать каждого клиента в больших наборах (advertise?). ID генерируетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при обработке запроÑа. `--failure-domain <key=value,...>` -: Comma-separated list describing physical location of the server. Each domain is a key-value pair. Until max replicaset count is reached, picodata will never put two instances with a common failure domain in the same replicaset. Instead, new replicasets will e created. They'll be filled with other instances until desired replication factor is satisfied. +: Comma-separated list describing physical location of the server. Each domain is a key-value pair. Until max replicaset count is reached, picodata will avoid putting two instances into the same replicaset if at least one key of their failure domains has the same value. Instead, new replicasets will be created. Replicasets will be populated with instances from different failure domains until the desired replication factor is reached. *env*: `PICODATA_FAILURE_DOMAIN` *default*: *none* -:hammer_and_wrench:: ОбъÑÑнить правила "common failure domain". -`--replicaset-group <name>` -: Name of the replicaset group. It's an error to run instance with a group changed. -*env*: `PICODATA_REPLICASET_GROUP` +`--group <name>` +: Name of the instance group. It's an error to run instance with a group changed. +*env*: `PICODATA_GROUP` *default*: `default` -:hammer_and_wrench: Зачем Ñто? Без картинки, поÑÑнÑющей архитектуру клаÑтера, объÑÑнить Ñложновато. + +`--role <name,...>` +: Valid roles are `"storage"` and `"router"`. +*env*: `PICODATA_ROLE` +*default*: `storage,router` `--init-replication-factor <number>` -: Total number of replicas (copies of data) for each replicaset in the current group. +: Total number of replicas (copies of data) for each replicaset in the current group. It's only accounted upon the group creation (adding the first instance in the group), and ignored aftwerwards. *env*: `PICODATA_INIT_REPLICATION_FACTOR` *default*: `1` -:hammer_and_wrench: УчитываетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при Ñоздании группы. Потом игнорируетÑÑ. `--init-storage-weight <number>` -: Proportional capacity of current instance. Common for each instance in the current group. +: Proportional capacity of current instance. Common for each instance in the current group. Only valid for instances with "storage" role enabled. *env*: `PICODATA_INIT_STORAGE_WEIGHT` *default*: `1` -:hammer_and_wrench: УчитываетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при Ñоздании группы. Потом игнорируетÑÑ. `--max-replicaset-count` : Maximum number of replicasets in the current group. -- GitLab