Si entiendo correctamente, quiere que las máquinas compartan un valor, y no desea que el valor sea el mismo para siempre. Idealmente, preferiría no almacenarlo.
Por lo tanto, haga que la "primera" máquina genere un valor aleatorio al inicio, (usando la entropía que pueda, como/dev/random. Si no necesita un valor seguro, y no tiene suficiente entropía en inicio para crear uno de todos modos, use el tiempo o lo que sea) y comuníquelo a todos los demás. A medida que las máquinas nuevas se unen al clúster, es necesario que puedan encontrar el valor de una máquina que ya está en el clúster. Las máquinas que abandonan no hacen diferencia.
¿Qué máquina es la "primera"? Bueno, si siempre puede arrancar una máquina antes que otras, y darle tiempo para llegar al punto de generar un valor, entonces puede usar el algoritmo trivial:
1) Busque otras máquinas. Si encuentra uno, pregúntele el valor. 2) Si no encuentra uno, genere el valor usted mismo.
Si varias máquinas se están iniciando a la vez, deben decidir entre ellas cuál es el "líder". Puede hacer esto eligiendo uno usted mismo (por ejemplo, una máquina se declara "líder" tan pronto como recibe una conexión particular a través de la interfaz de administración: al inicio cada máquina espera hasta que recibe esta conexión, o escucha desde otra máquina que la otra la máquina es el líder). Es trivial hacerlo automáticamente en un anillo de token: la máquina con la menor dirección MAC o lo que sea líder. Pero nadie usa token ring más ...
En el extremo opuesto de una red no confiable, no estoy seguro de que sea posible, a menos que todas las máquinas sepan cuántas habrá en total (en cuyo caso es como el token ring, excepto que todos hablan entre ellos hasta que hayan descubierto quién es el líder). Con la transmisión confiable, que es lo que puede asumir dentro de límites razonables en Ethernet, estoy seguro de que hay un algoritmo óptimo publicado en alguna parte, pero olvido lo que es (si es que alguna vez lo supe). Supongo que todo el mundo difunde a quién creen que es el líder a intervalos regulares (incluido su propio reclamo si aún no han visto uno mejor). Una vez que hayas escuchado eso durante el tiempo suficiente (aproximadamente un intervalo), sabrás quién es el líder y podrás comenzar a usar la semilla.
Si el valor es un secreto, obviamente la comunicación dentro del clúster debe ser segura. Es posible que lo obtenga de forma gratuita, dependiendo de la arquitectura de la red.
¿Puede explicarnos cuál sería el objetivo de esto? A menos que todos y cada uno de los miembros de la granja hagan la misma secuencia de generaciones de números aleatorios, se saldrán de la "sincronización", entonces, ¿cuál es el punto? – cletus
esa es EXACTAMENTE mi pregunta. El servidor 'A' crea una sal aleatoria, lo que hace que algo se mezcle. El resultado va al cliente El cliente responde a la granja (pasando el ha), pero golpea el servidor 'B'. El servidor 'B' necesita generar el mismo hash (usando la misma sal) para compararlo con los datos hash del cliente. –