tengo esto en mente:base de datos para la redundancia utilizando una base de datos libre y una de Java con la aplicación web de Primavera y Hibernate
En cada servidor: (que todo se estableció idéntica)
- Una base de datos libre como MySQL o PostgreSQL.
- Tomcat 6.x para el alojamiento de aplicaciones Java basado en Servlet
- Hibernate 3.x como la herramienta ORM
- Spring 2,5 para la capa de negocio
- Wicket 1.3.2 para la capa de presentación
Coloco un equilibrador de carga en frente de los servidores y un balanceador de carga de reemplazo en caso de que mi equilibrador de carga primario se caiga.
Uso Terracotta para tener la información de sesión replicada entre los servidores. Si un servidor se cae, el usuario debería poder continuar su trabajo en otro servidor, idealmente como si nada hubiera sucedido. Lo que queda por "resolver" (ya que en realidad no lo he probado y, por ejemplo, no sé qué usar como equilibrador de carga) es la replicación de la base de datos que se necesita.
Si un usuario interactúa con la aplicación y la base de datos cambia, entonces ese cambio debe replicarse en los servidores de la base de datos en las otras máquinas servidoras. ¿Cómo debo hacer eso? ¿Debo usar MySQL PostgreSQL o algo más (que idealmente es gratis ya que tenemos un presupuesto limitado)? ¿Las otras cosas anteriores suenan sensatas?
Aclaración: Me centro para obtener una alta disponibilidad antes que nada y deseo poder agregar servidores y usarlos todos al mismo tiempo para obtener una alta escalabilidad.
Jeje, interesado en esto. He estado considerando casi el mismo arco (sin Hibernate/Wicket y sin terracota). PostgreSQL + pgpool parece ser mi mejor apuesta, necesito ejecutar algunos puntos de referencia ... – alex