TL; DR
¿Cuáles son los pasos para configurar un servicio HA-JNDI con una configuración HornetQ? Creo que la documentación está un poco dispersa. He leído los documentos aquí, pero no parece ilustrar en detalle.
Versión más larga:
Así que tenemos una configuración HornetQ JMS junto con JNDI. Tenemos 5 servidores que ejecutan la instancia maestra HornetQ JMS con servicio JNDI en cada uno. En cada uno de estos 5 servidores, también tenemos un esclavo ejecutándose para algún otro maestro HornetQ.
Para ilustrar:
Server A - HornetQa_master, JNDI, HornetQb_slave
Server B - HornetQb_master, JNDI, HornetQc_slave
Server C - HornetQc_master, JNDI, HornetQd_slave
Server D - HornetQd_master, JNDI, HornetQe_slave
Server E - HornetQe_master, JNDI, HornetQa_slave
Cada uno de estos servidores HornetQ sirve como middleware para nuestras diversas necesidades de back-end, lo que significa 5 servidores, 5 instancias maestras de HornetQ, 5 instancias esclavas de HornetQ y 5 servidores JNDI. Sin embargo, el problema con esta configuración es que si un servidor host (no solo el proceso, el host en sí mismo), dice A, se cae, idealmente el servicio debería recurrir al HornetQ que se ejecuta en el servidor E que aloja el esclavo HornetQ de A. Sin embargo, para continuar como maestro HornetQ, HornetQa_slave necesita hablar con el proceso JNDI que se ejecuta en el servidor A (supongo que replica los mensajes). Como el host A está inactivo, el HornetQa_slave que se ejecuta en E no tiene forma de hablar con el JNDI en A y, por lo tanto, no puede reanudarse como el proceso maestro.
Si el servicio JNDI hubiera estado altamente disponible, el proceso esclavo HornetQ podría reanudarse como maestro como se esperaba. ¿Podría alguien señalar amablemente los documentos o ilustrar en pasos simples cómo podríamos convertir nuestra configuración existente en un HA-JNDI? Por lo que vale, he leído varias fuentes , pero no parece ilustrar con mucho detalle cómo comenzar a configurar un HA-JNDI. Avíseme si necesita más información sobre nuestra configuración actual.
Respuestas:
Con la arquitectura descrita me parece difícil, porque de hecho necesitas reconfigurar al esclavo como maestro y luego tendrás una interrupción.
Puede hacer referencia al maestro no por el nombre de host, sino usando una dirección IP virtual , de modo que en caso de que el maestro esté inactivo, puede volver a configurar uno de los esclavos como maestro e iniciar la IP virtual para que no tenga que volver a configurar el resto de los esclavos (Para mantener HA incluso cuando el maestro está inactivo, desea tener 2 esclavos, de modo que pueda reiniciar uno de ellos como maestro y aún se esté ejecutando uno).
Otra forma de lograr el mismo resultado es con un nombre de host DNS específico para el maestro que puede reconfigurar para que apunte a una IP diferente si un host está inactivo. Como el DNS está en caché, estas entradas deberían estar mejor en el archivo 'hosts'.
Si 3 hosts por dominio HA es demasiado hardware, puede lograr esto más fácilmente con servidores virtuales sin la necesidad de comprar más hardware.
fuente