私の理解が正しければ、あなたはマシンに値を共有させたいと考えており、その値を永遠に同じにしたくはありません。理想的には、保管しないことをお勧めします。
したがって、「最初の」マシンが起動時にランダムな値を生成するようにします (/dev/random など、可能なエントロピーを使用します。安全な値が必要なく、起動時に作成するのに十分なエントロピーがない場合)。とにかく、時間か何かを使用して)、他のすべての人にそれを伝えます。新しいマシンがクラスターに参加すると、クラスター内に既に存在する 1 つのマシンから値を見つけることができる必要があります。マシンがドロップアウトしても違いはありません。
「最初」のマシンはどれ?そうですね、常にあるマシンを他のマシンより先に起動し、値を生成するまでの時間を与えることができるのであれば、自明なアルゴリズムを使用できます。
1) 他のマシンを探します。見つけたら、その値を聞いてください。2) 見つからない場合は、自分で値を生成します。
複数のマシンが同時に起動している場合は、それらの中でどれが「リーダー」であるかを決定する必要があります。自分で 1 つを選択することで、これを行うことができます (たとえば、マシンは、管理インターフェイスを介して特定の接続を受信するとすぐに、自分自身を「リーダー」と宣言します。起動時に、各マシンは、この接続を取得するか、別のマシンから別のマシンが別の接続を受信するまで待機します)。マシンがリーダーです)。トークン リングで自動的に実行するのは簡単です: MAC アドレスが最小のマシンまたはリーダーであるマシン。しかし、もはや誰もトークンリングを使用していません...
信頼性の低いネットワークの反対側では、すべてのマシンが合計でいくつになるかを知っていない限り、それが可能かどうかさえわかりません (その場合、トークンリングと同じですが、すべてのマシンが互いに話し合うまで誰がリーダーかはわかった)。イーサネットの妥当な範囲内で想定できる信頼性の高いブロードキャストを使用すると、最適なアルゴリズムがどこかに公開されていると確信していますが、それが何であるかは忘れてしまいます (知っていたとしても)。誰もがリーダーだと思う人を定期的に放送していると思います(まだ良いリーダーを見ていない場合は、自分の主張を含めて). それを十分に長く(約1インターバル)聞いていれば、リーダーが誰であるかがわかり、シードを使い始めることができます.
値がシークレットの場合、明らかにクラスター内の通信は安全でなければなりません。ネットワーク アーキテクチャによっては、無料で入手できる場合もあります。