-
Notifications
You must be signed in to change notification settings - Fork 29
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
☂️ Separate voter role that will help to do failover #148
Comments
In GitLab by @racktear on Aug 15, 2018, 13:38 removed milestone |
In GitLab by @filonenko-mikhail on Nov 8, 2018, 14:50 What do you think about moving this issue to entrps tracker? |
RFC v1У каждого инстанса есть две потребности:
Для этого мы добавляем в картридж новую роль координатора фейловера. При первом запуске координатор назначает лидерами те инстансы, которые Апи координатора: function acquire_lock(replicaset_uuid, instance_uuid)
return true/false
end
function release_lock(replicaset_uuid, instance_uuid)
return true/false
end
function subscribe()
-- По пушу рассылает клиентам свежие новости
box.session.push(active_leaders)
end
|
Я думаю у инстанса ровно 1 потребность - знать мастер он или реплика. Информацию об этом должен рассылать координатор (наоборот делать не надо, чтобы кластер не заспамил координатора и чтобы получать информацию асап). Отсутствие инфы от координатора может означать как проблемы сети, так и отсутствие координатора, но это ок - проявление инициативы здесь чревато, лучше инстансам ее не проявлять. Починку конфигуратора предлагаю пока делегировал админам. Я бы предложил идти инстансу к координатору на старте и регистрироваться у него с инфой следующего характера (replicaset_uuid, instance_uuid), первый подключившийся из репликасета становится мастером. |
RFC v2У каждого инстанса есть две потребности:
Для этого мы заводим две новые сущности - консистентное хранилище Король, получив эксклюзивные права на запись, начинает творить Все остальные инстансы в это время с некоторой периодичностью продолжают В свободное от соперничества время инстансы живут своей жизнью и Алгоритм короляПервым делом после назначения король выкачивает список лидеров из
ДополнительноЯ предлагаю всем инстансам запрашивать обновления лидеров не из консула, а с короля. Это позволит избежать переписывания лонгполлинга под каждое хранилище, и принципиально ни на что не влияет. О текущем короле все истансы по-прежнему узнают из хранилища, и авторитарность назначений лидеров не нарушается. |
This comment has been minimized.
This comment has been minimized.
This patch is necessary in context of #148 for upcoming failover changes. ### Failover configuration Clusterwide config schema is extended (preserving backward compatibility): ```yaml # topology.yml failover: true # old failover: # new mode: disabled | eventual | stateful coordinator_uri: "kingdom.com:4401" ``` Older setting `enabled = true` corresponds to the eventual failover mode as it used to. ### Lua API: - `cartridge.admin_enable/disable_failover` - **deprecated**, unchanged; - `cartridge.admin_get_failover` - **deprecated**, unchanged; - `cartridge.failover_get_params` - added, returns `{mode = ..., coordinator_uri = ...}`; - `cartridge.failover_set_params({mode = ..., coordinator_uri = ...})` - **added**, returns `true`; ### GraphQL API - `query {cluster {failover} }` - **deprecated**, unchanged; - `mutation {cluster {failover(enabled: true/false)} }` - **deprecated**, unchanged; - `query {cluster {failover_params {mode coordinator_uri} } }` - added; - `mutation {cluster {failover_params(mode: ..., coordinator_uri: ...) {mode coordinator_uri} } }` - added; Close #650
In GitLab by @racktear on Jul 5, 2018, 20:00
There should be a separate voter role that works like this:
The text was updated successfully, but these errors were encountered: