Skip to content

Rewrite the description of box.cfg.replication #2811

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Tracked by #2802
vlalykin opened this issue Apr 5, 2022 · 7 comments
Open
Tracked by #2802

Rewrite the description of box.cfg.replication #2811

vlalykin opened this issue Apr 5, 2022 · 7 comments
Labels
factual error Factual error in functionality description replication [area] Related to Replication

Comments

@vlalykin
Copy link

vlalykin commented Apr 5, 2022

the documentation is incorrect: https://www.tarantool.io/ru/doc/latest/reference/configuration/#cfg-replication-replication

en:

Since version 1.7.4. If replication is not an empty string, the instance is considered to be a Tarantool replica. The replica will try to connect to the master specified in replication with a URI (Universal Resource Identifier)

ru:

Для версий от 1.7.4. и выше. Если replication не содержит пустую строку, экземпляр считается репликой. Реплика попытается подключиться к мастеру, указанному в параметре replication по URI (унифицированному идентификатору ресурса)

this is wrong.

en:
however, in fact, in the cluster, both on the master and on the replica, the value 'replication' does not contain an empty string (it contains a list of all members of the replica-set)

ru:
на самом деле, в кластере, как на мастере, так и на реплике, значение 'replication' не содержит пустую строку (там содержится список всех членов replica-set)

@vlalykin vlalykin added the bug Something isn't working label Apr 5, 2022
@kyukhin kyukhin added the teamD label Apr 15, 2022
@patiencedaur patiencedaur transferred this issue from tarantool/tarantool Apr 18, 2022
@patiencedaur patiencedaur added factual error Factual error in functionality description replication [area] Related to Replication 2sp behavior change [nature] Сhange in existing behavior labels Apr 18, 2022
@rindblack15
Copy link
Contributor

rindblack15 commented Apr 19, 2022

After talking with Sergey P., it was decided to close the ticket.
"значение 'replication' не содержит пустую строку (там содержится список всех членов replica-set)" - the statement is incorrect, "box.cfg.replication" may not contain all replica-set members, a common situation.

@vlalykin
Copy link
Author

текущая формулировка "Если replication не содержит пустую строку, экземпляр считается репликой" не верна. А именно: мастер содержит непустую строку (простейший кластер). По словам Alexander.Turenko (из команды mail.ru), В качестве критерия, реплика это или нет, должно использоваться box.cfg.read_only

Привожу переписку:

Victor.Lalykin: так все таки, на мастере box.cfg.replication nil или не nil ???
Alexander.Turenko: Обычно box.cfg.replication везде одинаковый, а у мастера ставится флаг box.cfg{read_only = true/false}.

@veod32
Copy link
Collaborator

veod32 commented Apr 19, 2022

@sergepetrenko @Totktonada Сергей, Саша, можете прокомментировать по переписке выше?

@veod32 veod32 reopened this Apr 19, 2022
@sergepetrenko
Copy link
Contributor

sergepetrenko commented Apr 20, 2022

@veod32

Короче, этот кусок в документации написан плохо. И то, как было, не до конца точно, и то, как предлагается.
Обычно box.cfg.replication == {список uri всех нод в репликасете}
Но никто не запрещает сделать box.cfg.replication пустым.

Говорить, что мастер - тот, у кого пустой box.cfg.replication не до конца правильно. Это действительно так (нода с пустым box.cfg.replication будет считать себя мастером), но, как мы договорились выше, чаще всего box.cfg.replication ни у кого не пустой. Тогда (по умолчанию, если box.cfg.read_only или, например, box.cfg.election_mode не трогать ) будет мультимастер. Каждая нода будет writeable и каждая нода будет мастером для остальных.

Я думаю, в доку стоит добавить пример настройки:
На всех box.cfg.replication = {список uri всех нод в кластере} , и при этом на мастере box.cfg.read_only = false, а на репликах box.cfg.read_only = true.
Надо ещё упомянуть, что указывать всех в box.cfg.replication рекомендуется.

Для контраста ещё стоит показать, что конфиг когда все реплики подключены звездой к одному мастеру (то есть у них в box.cfg.replication стоит master_uri, а у мастера - пустая строка) тоже возможен.

@vlalykin
Copy link
Author

Чем больше примеров, тем лучше.
Но цель поднятия этого вопроса - это четкий критерий мастер/реплика. Такой критерий очень нужен.
Например, роль в момент отработки изменения конфигурации должна понять, запускать (или завершать) задачу или нет. Вот, скажем, событие (метод) stop в роли не получает никаких вх. параметров, а надо знать, мастер это или реплика.

@veod32
Copy link
Collaborator

veod32 commented Apr 20, 2022

Накину еще в эту тему: у нас есть большая глава в документации, посвященная репликации
https://www.tarantool.io/en/doc/latest/book/replication/

В частности, раздел про настройку, с объяcнениями и примерами конфигурации
https://www.tarantool.io/en/doc/latest/book/replication/repl_bootstrap/

Там есть такие комментарии к параметрам:

  • the box.cfg() replication parameter defines the URIs at which all instances in the replica set can accept connections. It includes the replica’s URI as well, although the replica is not a replication source right now. This parameter is mandatory only for master-master or full-mesh cluster setups.

  • the read_only = false parameter setting enables data-change operations on the instance and makes the instance act as a master, not as a replica. That is the only parameter setting in our instance files that will differ.

@patiencedaur patiencedaur changed the title something is wrong in documentation Rewrite the description of box.cfg.replication Apr 21, 2022
@patiencedaur patiencedaur added rewrite [nature] Revise existing text for structure/phrasing/terms 3sp and removed behavior change [nature] Сhange in existing behavior 2sp labels Apr 21, 2022
@patiencedaur
Copy link
Contributor

Will be done in the scope of Replication tech debt.

@veod32 veod32 removed bug Something isn't working rewrite [nature] Revise existing text for structure/phrasing/terms teamD labels Mar 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
factual error Factual error in functionality description replication [area] Related to Replication
Projects
None yet
Development

No branches or pull requests

6 participants