Etherpad-lite: ¿Existe una guía para configurar el equilibrio de carga?

Creado en 7 dic. 2016  ·  5Comentarios  ·  Fuente: ether/etherpad-lite

tl; dr;
Estamos viendo rarezas en nuestra configuración de carga equilibrada. Diferentes pads para el mismo PadID según el balanceador de carga que responda. ¿Hay documentos oficiales o confiables sobre el Etherpad de equilibrio de carga que no puedo encontrar?

La versión larga;
Entonces, la razón por la que pregunto es porque tenemos un sistema que usa un equilibrador de carga para varios servicios y el dominio etherpad se respalda en un solo servidor etherpad. El equilibrador de carga también es un único punto de terminación para https.

El problema que estamos viendo es que cuando probamos desde dispositivos móviles, parece que nos dirigieron a un balanceador de carga y los escritorios se dirigieron a través del otro. No sé la razón específica por la que este fue el caso. Sin embargo, el problema. Cada balanceador de carga entregó un documento diferente a pesar de tener el mismo PadID. La verificación de los registros mostró que solo se había creado una plataforma en este día también.

Apagamos el secundario y lo configuramos como una conmutación por error. Todos los dispositivos mostraban ahora el mismo documento, que era el de las máquinas de escritorio. Cuando apagamos el primario, forzando al secundario a actuar como falla, todos los dispositivos vieron el otro documento que vieron inicialmente los dispositivos móviles.

La rareza aquí es que comparten el mismo PadID.

He estado buscando cosas relacionadas con esto y todavía no me he encontrado con este problema específico. Encontré varias conversaciones sobre las pruebas de carga y algunas sobre el equilibrio de carga, pero las de equilibrio de carga nunca parecieron llegar a ninguna conclusión.

Como referencia, estoy involucrado en un proyecto que intenta implementar esto en un entorno de producción para colaborar en situaciones de emergencia. No soy un desarrollador de node.js, así que téngalo en cuenta cuando haga preguntas técnicas sobre esto. No me importa que me hagan preguntas que puedan parecer simples u obvias para un desarrollador de node.js, de hecho, es probable que sea necesario. También formo parte de un equipo y tengo un acceso muy limitado a los servidores de producción. Sin embargo, estoy en estrecho contacto con los administradores de sistemas que se encargan de ese lado de las cosas.

Question wontfix

Comentario más útil

SESSIONKEY.txt no pareció desempeñar ningún papel significativo.

Nos dimos cuenta de que el parámetro "head" tenía valores diferentes para cada servidor y que se utiliza en la construcción de la clave para el almacén de clave: valor .

p.ej
`eth1

pad: 58483aee8a6dd9.65340416 | {"atext": {"text": "Test \ n \ nUntest? \ n \ n \ n", "attribs": " 4 + 4 5 | 4 + b | 1 + 1"}, "pool": { "numToAttrib": {"0": ["autor", "a.kFcgC1Xr1xVyK6VP"], "1": ["autor", "a.KokfEaKFHuLOrj8Q"], "2": ["autor", "a.XqjPbBqDZM7WEI "]," 3 ": [" autor "," a.UTXpIyYgqxjhQBJN "]," 4 ": [" autor "," a.6adq2JkT7Yv40gBK "]," 5 ": [" autor "," a.vPuSKAf3Gx2voZlH "] }, "nextNum": 6}, "head": 95, "chatHead": - 1, "publicStatus": falso, "passwordHash": null, "SavedRevisions": []}

eth2

pad: 58483aee8a6dd9.65340416 | {"atext": {"text": "Prueba \ n \ nPrueba \ n \ nWTH \ n \ n ... \ n \ n \ n", "atributos": " 4 + 4 5 | 8 + i | 1 +1 "}," grupo ": {" numToAttrib ": {" 0 ": [" autor "," a.kFcgC1Xr1xVyK6VP "]," 1 ": [" autor "," a.KokfEaKFHuLOrj8Q "]," 2 " : ["autor", "a.XqjPbBqDZM7WEIv6"], "3": ["autor", "a.UTXpIyYgqxjhQBJN"], "4": ["autor", "a.6adq2JkT7Yv40gBK"], "5": [ "author", "a.VImJzfCalZs11fia"]}, "nextNum": 6}, "head": 105, "chatHead": 0, "publicStatus": false, "passwordHash": null, "SavedRevisions": []}
'

Estamos a punto de renunciar al equilibrio de carga y optar por un enfoque de conmutación por error. La alta disponibilidad es nuestro objetivo principal.

Sin embargo, sería bueno tener una declaración oficial de los líderes del proyecto sobre esto. Les ahorrará a los demás mucho tiempo buscando la respuesta.

Todos 5 comentarios

Hola, @Unifex , parece que cada instancia de Etherpad tiene su propia base de datos. ¿Están usando una base de datos remota para almacenar los pads? ¿Tiene acceso a settings.json en la carpeta raíz de Etherpad? ¿Podría decirnos la configuración de la base de datos en ese archivo?

No conozco ningún documento sobre el equilibrio de carga para Etherpad y no sé si está preparado para replicar sus cambios a través de diferentes bases de datos para la redundancia, por lo que tal vez tener una base de datos para cada instancia es lo que hace que tenga este comportamiento.

Hola @lpagliari ,

Gracias por la respuesta. Solo un aviso. Mi respuesta menos rápida se debe a vivir en el futuro y la mayor parte del mundo duerme mientras estamos aquí en Nueva Zelanda.

Creo que solo tenemos una base de datos. Definitivamente solo tenemos un servidor de base de datos para ello. Presenté una solicitud con los administradores de sistemas para verificar que este sea el caso. Espero encontrar que uno apunta al servidor de base de datos y el otro está mal configurado (el dirtyDB predeterminado todavía está en su lugar tal vez ...)

Debería tener una respuesta en media hora.

Gracias de nuevo por la respuesta.

Saludos,
Oro

Bien, acabo de recibir una respuesta y ambos servidores con equilibrio de carga están apuntando a la misma base de datos en los mismos servidores de base de datos. Verificamos en el servidor de Postgres y podemos ver ambos servidores con una conexión a la base de datos. Le pregunté al administrador de sistemas que también examinara el archivo settings.json y son iguales. Fue un paso más allá y comprobó el hash en el archivo y son idénticos.

Sin embargo, lo que hemos notado es que APIKEY.txt son iguales en ambos, pero SESSIONKEY.txt son diferentes.

Mirando eso ahora.

SESSIONKEY.txt no pareció desempeñar ningún papel significativo.

Nos dimos cuenta de que el parámetro "head" tenía valores diferentes para cada servidor y que se utiliza en la construcción de la clave para el almacén de clave: valor .

p.ej
`eth1

pad: 58483aee8a6dd9.65340416 | {"atext": {"text": "Test \ n \ nUntest? \ n \ n \ n", "attribs": " 4 + 4 5 | 4 + b | 1 + 1"}, "pool": { "numToAttrib": {"0": ["autor", "a.kFcgC1Xr1xVyK6VP"], "1": ["autor", "a.KokfEaKFHuLOrj8Q"], "2": ["autor", "a.XqjPbBqDZM7WEI "]," 3 ": [" autor "," a.UTXpIyYgqxjhQBJN "]," 4 ": [" autor "," a.6adq2JkT7Yv40gBK "]," 5 ": [" autor "," a.vPuSKAf3Gx2voZlH "] }, "nextNum": 6}, "head": 95, "chatHead": - 1, "publicStatus": falso, "passwordHash": null, "SavedRevisions": []}

eth2

pad: 58483aee8a6dd9.65340416 | {"atext": {"text": "Prueba \ n \ nPrueba \ n \ nWTH \ n \ n ... \ n \ n \ n", "atributos": " 4 + 4 5 | 8 + i | 1 +1 "}," grupo ": {" numToAttrib ": {" 0 ": [" autor "," a.kFcgC1Xr1xVyK6VP "]," 1 ": [" autor "," a.KokfEaKFHuLOrj8Q "]," 2 " : ["autor", "a.XqjPbBqDZM7WEIv6"], "3": ["autor", "a.UTXpIyYgqxjhQBJN"], "4": ["autor", "a.6adq2JkT7Yv40gBK"], "5": [ "author", "a.VImJzfCalZs11fia"]}, "nextNum": 6}, "head": 105, "chatHead": 0, "publicStatus": false, "passwordHash": null, "SavedRevisions": []}
'

Estamos a punto de renunciar al equilibrio de carga y optar por un enfoque de conmutación por error. La alta disponibilidad es nuestro objetivo principal.

Sin embargo, sería bueno tener una declaración oficial de los líderes del proyecto sobre esto. Les ahorrará a los demás mucho tiempo buscando la respuesta.

Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Gracias por sus aportaciones.

¿Fue útil esta página
0 / 5 - 0 calificaciones