Size: a a a

2021 March 23

AB

Alex Bubnov in pro.elixir
Laura Grechenko
Всем привет. Подскажите, пожалуйста, в raft должны быть заранее известны все ноды. А если нода добавляется динамически - нужно обновлять все ноды или только новая нода должны знать всех других? Как решается это проблема при использовании докера?
про какой именно рафт речь, rabbitmq/ra?
источник

LG

Laura Grechenko in pro.elixir
Alex Bubnov
про какой именно рафт речь, rabbitmq/ra?
Да, про ra
источник

AB

Alex Bubnov in pro.elixir
Laura Grechenko
Да, про ra
мы еще не разобрались, в процессе.
по идее, новая нода должна знать хотя бы одну старую и иметь возможность к ней подцепиться, а дальше - dynamic cluster membership в доках ra
источник

LG

Laura Grechenko in pro.elixir
Alex Bubnov
мы еще не разобрались, в процессе.
по идее, новая нода должна знать хотя бы одну старую и иметь возможность к ней подцепиться, а дальше - dynamic cluster membership в доках ra
Спасибо, посмотрю
источник

AB

Alex Bubnov in pro.elixir
Laura Grechenko
Спасибо, посмотрю
как на это сверху ляжет докер - это интересный вопрос, но если брать максимально стандартную конфигурацию - надо экспортировать(-p докера) порт epmd, выставить inet_dist_listen_min/inet_dist_listen_max в vm.args релиза на какой-то определенный рейндж, и этот рейндж тоже экспортировать.
источник

LG

Laura Grechenko in pro.elixir
Alex Bubnov
мы еще не разобрались, в процессе.
по идее, новая нода должна знать хотя бы одну старую и иметь возможность к ней подцепиться, а дальше - dynamic cluster membership в доках ra
Получается чтобы добавить новую ноду динамически на одной из нод нужно выполнить ra:add_member/2 ?
источник

AB

Alex Bubnov in pro.elixir
Laura Grechenko
Получается чтобы добавить новую ноду динамически на одной из нод нужно выполнить ra:add_member/2 ?
в доках пишут примерно так, да, но - часть про ra пишу не я, и поэтому сам не проверил, нужно это делать на уже запущенной ноде кластера, или можно на подключающейся
источник

LG

Laura Grechenko in pro.elixir
Alex Bubnov
в доках пишут примерно так, да, но - часть про ra пишу не я, и поэтому сам не проверил, нужно это делать на уже запущенной ноде кластера, или можно на подключающейся
Спасибо. Да, про то как это в докер делать пока совсем не представляю)
источник

AB

Alex Bubnov in pro.elixir
Laura Grechenko
Спасибо. Да, про то как это в докер делать пока совсем не представляю)
у меня лично апи dynamic cluster membership вызывает пока больше вопросов, оно очень мутное
источник

AB

Alex Bubnov in pro.elixir
Laura Grechenko
Спасибо. Да, про то как это в докер делать пока совсем не представляю)
с докером всё более-менее понятно - если брать стандартный конфиг интерконнекта, нужно чтобы
1 - хостнеймы нод  резолвились в правильные адреса
2 - на этих адресах висел epmd и был доступен из соседнего контейнера
3 - между контейнерами были открыты порты интерконнекта, лучше фиксированные через inet_dist_listen_min/max

это вроде бы главное, если я ничего не забыл
источник

AB

Alex Bubnov in pro.elixir
Alex Bubnov
у меня лично апи dynamic cluster membership вызывает пока больше вопросов, оно очень мутное
что-то я чем дальше о нем думаю, тем меньше оно мне кажется рабочим вариантом

https://github.com/rabbitmq/ra-kv-store/blob/master/src/ra_kv_store_app.erl#L60
%% only the smallest node declares a cluster

%% Repeated startup attempts will fail even if the cluster is formed, has elected a leader
%% and is fully functional.
{ok, ServersStarted, _ServersNotStarted} = ra:start_cluster(ClusterName, Machine, ServerIds),


у меня складывается такая картина в голове, что в ra предполагается, что основной конфиг кластера всё же статический, а dynamic membership - это для случаев расширения без остановки
источник

LG

Laura Grechenko in pro.elixir
Alex Bubnov
что-то я чем дальше о нем думаю, тем меньше оно мне кажется рабочим вариантом

https://github.com/rabbitmq/ra-kv-store/blob/master/src/ra_kv_store_app.erl#L60
%% only the smallest node declares a cluster

%% Repeated startup attempts will fail even if the cluster is formed, has elected a leader
%% and is fully functional.
{ok, ServersStarted, _ServersNotStarted} = ra:start_cluster(ClusterName, Machine, ServerIds),


у меня складывается такая картина в голове, что в ra предполагается, что основной конфиг кластера всё же статический, а dynamic membership - это для случаев расширения без остановки
Да, у нас ожидается, что ноды будут добавляться динамически. Может быть подойдет и основной конфиг + динамически.. Буду пробовать
источник

LG

Laura Grechenko in pro.elixir
Потом напишу, как получилось или не получилось )
источник

RB

Roman Berdichevskii in pro.elixir
Laura Grechenko
Спасибо. Да, про то как это в докер делать пока совсем не представляю)
А вы на докер перешли?
источник

LG

Laura Grechenko in pro.elixir
Roman Berdichevskii
А вы на докер перешли?
Привет. Не, это я на новое место перешла)
источник

RB

Roman Berdichevskii in pro.elixir
Laura Grechenko
Привет. Не, это я на новое место перешла)
Аа, тогда ясно 😄
источник
2021 March 24

V

V in pro.elixir
Котаны, кто знает, Enum.map под капотом выполняется параллельно?
источник

MG

Max Gorin in pro.elixir
нет
источник

Е

Евгений in pro.elixir
V
Котаны, кто знает, Enum.map под капотом выполняется параллельно?
Нет
источник

V

V in pro.elixir
А for?
источник