Skip to content
Snippets Groups Projects
Commit df449785 authored by Alexander Tolstoy's avatar Alexander Tolstoy
Browse files

Merge branch '83-expel' into 'main'

feat: expel node

See merge request picodata/picodata/docs!40
parents 6303b0f2 df708c8b
No related branches found
No related tags found
1 merge request!40feat: expel node
Pipeline #11165 passed
......@@ -197,6 +197,44 @@ picodata run --cfg router.toml --listen :3302
Количество голосующих узлов в кластере не настраивается и зависит только от общего количества инстансов. Если инстансов 1 или 2, то голосующий узел один. Если инстансов 3 или 4, то таких узлов три. Для кластеров с 5 или более инстансами — пять голосующих узлов.
Подробнее о запуске Picodata в командной строке см. разделе [Описание параметров запуска](../cli)
## Удаление инстансов из кластера (expel)
Удаление — это принятие кластером решения, что некий инстанс больше не является участником кластера. После удаления кластер больше не будет ожидать присутствия инстанса в кворуме, а сам инстанс завершится. При удалении текущего лидера будет принудительно запущен выбор нового лидера.
### Удаление инстанса с помощью консольной команды
```bash
picodata expel --instance-id <instance-id> [--cluster-id <cluster-id>] [--peer <peer>]
```
где `cluster-id` и `instance-id` — данные об удаляемом инстансе, `peer` — любой инстанс кластера.
Пример:
```bash
picodata expel --instance-id i3 --peer 192.168.100.123
```
В этом случае на адрес `192.168.100.123:3301` будет отправлена команда `expel` с `instance-id = "i3"` и стандартным значением `cluster-id`. Инстанс на `192.168.100.123:3301` найдет лидера и отправит ему команду `expel`. Лидер отметит, что указанный инстанс удален; остальные инстансы получат эту информацию через Raft. Если удаляемый инстанс запущен, он завершится, если не запущен — примет информацию о своем удалении при запуске и затем завершится. При последующих запусках удаленный инстанс будет сразу завершаться.
### Удаление инстанса из консоли Picodata с помощью Lua API
В консоли запущенного инстанса введите следующее:
```lua
picolib.expel(<instance-id>)
```
например:
```lua
picolib.expel("i3")
```
Будет удален инстанс `i3`. Сам инстанс `i3` будет завершен. Если вы находитесь в консоли удаляемого инстанса — процесс завершится, консоль будет закрыта.
<!--
## Configuration reference
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment