Skip to content
Snippets Groups Projects

deploy.md: tier tutorial

Merged Alexander Kurdakov requested to merge kusancho/tier_tutorial into main
+ 134
31
# Создание кластера
В данном разделе приведена информация по развертыванию кластера Picodata
из нескольких инстансов. Описанный способ предназначен в первую очередь
из нескольких инстансов для разных сценариев.
Описанные способы предназначены в первую очередь
для локального использования при разработке. О промышленной эксплуатации
читайте в разделе [Развертывание кластера через Ansible].
[Развертывание кластера через Ansible]: ../tutorial/deploy_ansible.md
## Файл конфигурации {: #config }
## Простой кластер {: #simple_cluster }
### Файл конфигурации {: #simple_cluster_config }
Для развертывания кластера используйте следующий файл конфигурации:
???+ example "my_cluster.md"
???+ example "my_cluster.yml"
```yaml
cluster:
cluster_id: my_cluster
tier:
default:
replication_factor: 2
can_vote: true
default_replication_factor: 2
instance:
peer:
- 127.0.0.1:3301
audit: false
shredding: false
tier: default
log:
level: info
format: plain
destination: null
memtx:
memory: 67108864
memory: 64M
checkpoint_count: 2
checkpoint_interval: 3600.0
vinyl:
memory: 134217728
cache: 134217728
memory: 128M
cache: 128M
```
Вы можете скопировать в файл этот образец или сгенерировать свой файл
@@ -46,14 +45,14 @@
Для примера мы запустим кластер из 4 инстансов на локальном сетевом
интерфейсе `127.0.0.1`. Приведенный набор параметров явно задает имя
кластера "cluster_id", имя тира "default" и фактор репликации 2. В
кластера "cluster_id" и фактор репликации 2. В
данном примере файл конфигурации используется для запуска всех
инстансов.
[picodata config default]: ../reference/cli.md#config_default
[Описание файла конфигурации]: ../reference/config.md
## Скрипты инстансов {: #instance_scripts }
### Скрипты инстансов {: #simple_cluster_scripts }
Создайте скрипты запуска для инстансов, указав в них путь к общему файлу
конфигурации (в примере он находится в той же директории, что и сами
@@ -75,7 +74,7 @@
```
??? example "i2"
```
```shell
#!/bin/bash
export PICODATA_CONFIG_FILE="my_cluster.yml"
@@ -88,7 +87,7 @@
```
??? example "i3"
```
```shell
#!/bin/bash
export PICODATA_CONFIG_FILE="my_cluster.yml"
@@ -101,7 +100,7 @@
```
??? example "i4"
```
```shell
#!/bin/bash
export PICODATA_CONFIG_FILE="my_cluster.yml"
@@ -128,27 +127,128 @@
<!--
TBD:
## Кластер на нескольких серверах
## Кластер из нескольких тиров
-->
## Репликация и зоны доступности (failure domains) {: #failure_domains }
## Кластер из нескольких тиров {: #multi_tier_cluster }
### Установка фактора репликации {: #replication_factor}
Тир — это группа инстансов, объединенных по функциональному назначению.
При создании кластера [количество реплик (инстансов)][rep_factor] в
репликасете определяется параметром запуска [--init-replication-factor]
или переменной `PICODATA_INIT_REPLICATION_FACTOR`. Указанное значение
присваивается всему кластеру при запуске первого инстанса и затем
хранится в виде параметра `replication_factor` в [файле
конфигурации](../reference/config.md).
В рамках отдельных тиров данные
[шардируются](../overview/description.md#sharding) независимо друг от
друга. Для каждой шардированной таблицы определена принадлежность
конкретному тиру.
Изменить фактор репликации для уже созданного
кластера нельзя.
На каждом тире запускаются свои
[сервисы](../tutorial/plugins.md#services) плагинов.
[--init-replication-factor]: ../reference/cli.md#run_init_replication_factor
[--failure-domain]: ../reference/cli.md#run_failure_domain
[--advertise]: ../reference/cli.md#run_advertise
[rep_factor]: ../overview/glossary.md#replication_factor
Конфигурация инстансов (выделяемая память и т.д.) и фактор репликации
также настраивается на уровне тиров.
<!--
Круто было бы здесь иллюстрацию иметь.
-->
Набор тиров, равно как и принадлежность инстансов тирам, определяется на
момент [развертывания кластера][cluster_bootstrap] и в дальнейшем не
изменяется. Каждый инстанс принадлежит ровно одному тиру.
[cluster_bootstrap]: ../overview/glossary.md#bootstrap
#### Файлы конфигурации {: #multi_tier_cluster_config }
Следующий пример показывает запуск кластера, состоящий из двух тиров —
compute и storage. Создайте отдельные файлы конфигурации для каждого из
тиров:
???+ example "compute.yml"
```yaml
cluster:
cluster_id: multi_tier_cluster
tier:
compute:
replication_factor: 1
can_vote: true
storage:
replication_factor: 2
can_vote: false
instance:
tier: compute
peer:
- 127.0.0.1:3301
memtx:
memory: 64M
```
??? example "storage.yml"
```yaml
cluster:
cluster_id: multi_tier_cluster
tier:
compute:
replication_factor: 1
can_vote: true
storage:
replication_factor: 2
can_vote: false
instance:
tier: storage
peer:
- 127.0.0.1:3301
memtx:
memory: 1024M
```
#### Скрипты инстансов {: #multi_tier_cluster_scripts }
Создайте скрипты запуска для каждого из инстансов. В данном примере
создается один compute инстанс и 2 storage. Инстансы storage образуют
один репликасет.
???+ example "compute_1"
```shell
#!/bin/bash
export PICODATA_CONFIG_FILE="compute.yml"
export PICODATA_INSTANCE_ID="compute_1"
export PICODATA_DATA_DIR="./data/multi_tier_cluster/compute_1"
export PICODATA_LISTEN="127.0.0.1:3301"
export PICODATA_HTTP_LISTEN="127.0.0.1:8080"
export PICODATA_PG_LISTEN="127.0.0.1:5432"
picodata run
```
??? example "storage_1"
```shell
#!/bin/bash
export PICODATA_CONFIG_FILE="storage.yml"
export PICODATA_INSTANCE_ID="storage_1"
export PICODATA_DATA_DIR="./data/multi_tier_cluster/storage_1"
export PICODATA_LISTEN="127.0.0.1:3302"
picodata run
```
??? example "storage_2"
```shell
#!/bin/bash
export PICODATA_CONFIG_FILE="storage.yml"
export PICODATA_INSTANCE_ID="storage_2"
export PICODATA_DATA_DIR="./data/multi_tier_cluster/storage_2"
export PICODATA_LISTEN="127.0.0.1:3303"
picodata run
```
## Зоны доступности (failure domains) {: #failure_domains }
<!-- Отредактировать фактор репликации, сохраненный в конфигурации кластера, можно командой `picodata set-replication-factor`. Редактирование конфигурации сказывается только на вновь добавляемых инстансах, но не затрагивает уже работающие. -->
@@ -197,6 +297,9 @@ picodata run --init-replication-factor 2 --failure-domain region=us,zone=us-west
относиться к одному региону и, следовательно, не попадут в один
репликасет.
[--failure-domain]: ../reference/cli.md#run_failure_domain
[--advertise]: ../reference/cli.md#run_advertise
## Удаление инстанса (expel) {: #expel }
Данная процедура позволяет исключить инстанс из состава кластера.
Loading