
Llevo unos días jugando con soluciones de alta disponibilidad y hasta ahora encuentroUCARPmuy útil para la conmutación por error de IP.
Es muy simple y hace el trabajo.
Estaba pensando en dar un paso más:
siel enrutadorque conecta los dos nodos que comparten la misma IPenviaría TODOS los paquetes a ambos nodos(en todo momento), entonces podríalograr un equilibrio de carga mucho mayor.
Es como una solución "maestro-maestro" en lugar de "maestro-copia de seguridad".
Las IP de origen son divisibles.
Elgrupo de redundancia, digamos que dos de esos nodos comparten una IP ("virtual"), como se dijo.
Mientras ambos estén activos, simplemente dividirán la IP de origen (su número simple) del cliente y sabrán cómo reaccionar.
Por ejemplo, el Nodo1 toma las IP que se dividen por 2.
El Nodo2 toma el resto.
Un cliente inicia una conexión TCP/IP (a través de la IP compartida).
El enrutador que conecta ambos nodos envía esta solicitud a ambos.
Si la IP del cliente se divide perfectamente entre 2 entonces el Nodo1 responde.
En este punto, el Nodo2 lo ignora porque conoce el Nodo1.
Si un nodo falla, por ejemplo el Nodo1, el otro (Nodo2) lo detecta; normalmente,¡Como lo hace UCARP de todos modos!
En ese momento, Node2 comenzaría a atender al resto de clientes.
Cuando el Nodo1 regrese, el Nodo2 dejará de responder solicitudes SYN (primeros pasos del inicio de la conexión TCP/IP) provenientes de una IP divisible por 2, lo que permitirá que el Nodo1 continúe sirviendo.
Un posible problema podría surgir en la dirección del enrutador: Necesita enviar cada paquete entrante a X nodos en el grupo de redundancia. Carga de red interna (más) alta.
Otro posible problemaes que cada nodo prácticamente recibe muchos paquetes, incluso aquellos que no "quiere".
Con los enrutadores/tarjetas de red actuales, veo esto como un precio muy pequeño en comparación con el beneficio demuy alta disponibilidad.
Sin mencionar que en tal casoutilizar el 100% de mis recursos (en el buen sentido)en lugar de tener uno o más servidores "en espera" que no hacen más que "en espera".
Mi pregunta exacta es:
1) ¿Existe ya tal solución? (código abierto, software gratuito, basado en Linux).
2) ¿Puede un enrutador admitir tal cosa? ¿Qué estándares debería apoyar? ¿Qué le preguntaría a un proveedor de DS/VPS con respecto a esta capacidad?
De todas formas estas son algunas de mis reflexiones respecto a este tema. Me encantaría recibir una respuesta concisa respaldada por enlaces y algunas palabras. Obviamente, más que eso es bienvenido :)
Respuesta1
No creo que esto sea posible/factible. Definitivamente no existe porque su uso es muy limitado en comparación con los enfoques estándar.
El principal problema que veo es rastrear cada paquete IP que entra y sale y sincronizar el estado de la pila de IP en ambas computadoras de una manera que sea completamente transparente para la aplicación. ¿Cómo se "simula" una aplicación en el nodo 1 haciendo el trabajo pero sin responder, o retomando mágicamente el estado de un nodo 2? No puede simplemente continuar la comunicación tcp de una aplicación nocde 1 sin... una programación especial.