Если я правильно понимаю, вы хотите, чтобы машины имели общее значение, и вы не хотите, чтобы это значение всегда было одним и тем же. В идеале вы бы предпочли не хранить его.
Итак, пусть «первый» компьютер генерирует случайное значение при запуске (используя любую энтропию, например, / dev / random. Если вам не нужно безопасное значение и у вас недостаточно энтропии при запуске) чтобы создать его в любом случае, использовать время или что-то еще) и передать его всем остальным. По мере того как новые машины присоединяются к кластеру, они должны быть в состоянии найти значение от одной машины, уже находящейся в кластере. Выпадающие машины не имеют значения.
Какая машина "первая"? Что ж, если вы всегда можете загрузить одну машину раньше, чем другие, и дать ей время добраться до точки генерации значения, тогда вы можете использовать тривиальный алгоритм:
1) Ищите другие машины. Если вы найдете один, спросите его значение.
2) Если вы не нашли его, сгенерируйте значение самостоятельно.
Если несколько машин запускаются одновременно, им необходимо решить между собой, кто является «лидером». Вы можете сделать это, выбрав один самостоятельно (например, машина объявляет себя «лидером», как только она получает определенное соединение через интерфейс администратора: при запуске каждая машина ожидает, пока не получит это соединение или не услышит от другой машины, что другая машина машина лидер). Это просто сделать автоматически на кольце токенов: машина с наименьшим MAC-адресом или лидером. Но никто больше не использует Token Ring ...
С противоположной стороны ненадежной сети, я не уверен, что это даже возможно, если только все машины не знают, сколько их будет в общей сложности (в этом случае это просто как токен, за исключением того, что все они общаются с каждым другие, пока они не выяснили, кто лидер). С надежной трансляцией, которую вы можете предположить в разумных пределах для Ethernet, я уверен, что где-то опубликован оптимальный алгоритм, но я забываю, что это такое (если я когда-либо знал). Я предполагаю, что все транслируют, кто, по их мнению, является лидером через регулярные промежутки времени (включая их собственные заявления, если они еще не видели лучшего). Как только вы услышите это достаточно долго (примерно через один интервал), вы узнаете, кто является лидером, и вы можете начать использовать семя.
Если значение является секретным, то очевидно, что связь внутри кластера должна быть безопасной. Вы можете получить это бесплатно, в зависимости от архитектуры сети.