
Leading the Way: Payara Platform Community 7 Beta Now Fully Jakarta EE 11 Certified
We’re excited to announce that Payara Platform Community 7 Beta application server is now fully certified as Jakarta EE 11 […]
Continuando con nuestra serie de introducción, este blog va a demostrar como configurar un cluster sencillo de dos instancias mediante Hazelcast.
See here for the original version in English language.
A diferencia de un entorno de desarrollo, donde un sólo servidor es necesario para servir de “prueba de concepto”, en producción es normalmente necesario buscar la forma más confiable de hospedar tu aplicación a través de múltiples máquinas redundantes para garantizar la confiabilidad del servicio y permitir la escalabilidad en el futuro. Con Payara Server, es posible crear fácilmente y añadir instancias a clusters utilizando Hazelcast, haciendo muy fácil la configuración de una aplicación distribuida.
Para seguir este tutorial vas a necesitar:
Nuestro primer paso es crear un nodo SSH. Para más detalles sobre qué es un nodo SSH, y porque vamos a usarlo aquí, lee este blog.
Una vez se han cumplido los requisitos, nuestro primer paso para crear un cluster será configurar nuestra segunda máquina Ubuntu (‘computer2’) con su propia instalación de Payara Server y la forma de comunicar con nuestra máquina Ubuntu original (‘computer’). Como ambas máquinas funcionan con un sistema operativo GNU/Linux, y requerimos control total de la segunda máquina, vamos a crear un nodo SSH en la máquina computer2. Como parte de la creación del nodo, vamos a utilizar una característica muy útil de Payara Server, su habilidad para crear un archivo zip de sí mismo e instalarlo en un nodo remoto (lo que nos garantiza que ambas instalaciones son iguales y nos ahorra tiempo).
A alto nivel, los pasos para configurar computer2 son los siguientes:
Para recibir tráfico SSH, computer2 necesita tener un servidor SSH escuchando. La máquina virtual Ubuntu que voy a utilizar no tiene un servidor SSH instalado por defecto, por lo que vamos a instalar un servidor OpenSSH de los repositorios de Ubuntu con el siguiente comando:
sudp apt install openssh-server
Para versiones de Ubuntu anteriores a 16.04, el comando será ‘apt-get install’
Después de instalar el servidor OpenSSH, este debería iniciarse automáticamente. Ejecutando ‘netstat -lnt | grep 22’ se debería mostrar que el puerto 22, el puerto por defecto para SSH, está ahora abierto y escuchando tráfic
Ahora que tenemos SSH configurado en la segunda máquina Ubuntu podemos crear de forma segura el nuevo nodo. En la vista de Nodos de la consola de administración, clicar en el botón Nuevo ‘New’.
Ahora tenemos que rellenar las propiedades del nuevo nodo:
Con el formulario completado, pulsa el botón OK. No te preocupes si ves un aviso diciendo “Se ha detectado un proceso de larga duración”, hay una pequeña pausa mientras se realiza una copia de tu instalación de Payara Server y la instala en la segunda máquina Ubuntu.
Una vez que la instalación de Payara Server ha sido transferida de forma segura, y el nodo ha sido creado, serás devuelto a la vista de Nodos.
Con nuestro nodo remoto configurado, tenemos la base. Ahora vamos a configurar dos instancias, una en cada nodod, las cuales alojarán nuestra aplicación desplegada. Vamos a hacer el cluster con nuestras instancias utilizando Hazelcast en lugar del cluster basado en Shoal heredado, lo que quiere decir que vamos a necesitar crear dos instancias ‘locales’ que compartirán la misma configuración. Primero necesitaremos crear una nueva configuración que ambas van a referenciar para que, como en un cluster heredado, podamos hacer una sóla vez los cambios y afecten a ambas instancias.
Para crear una nueva configuración para nuestro cluster Hazelcast, hacer clic en el elemento ‘Configuraciones’ en el menú del lateral izquierdo para ir a la página Configuraciones, en ella hacer clic en el botón ‘Nuevo…’ para crear una configuración nueva para nuestro cluster.
En toda instalación de Payara Server exisitirán dos configuraciónes:
Como no queremos añadir modificaciones accidentalmente en la configuración del DAS, vamos a copiar la default-config y renombrarla como cluster-config.
Aceptar la configuración por defecto seleccionada y guardar la nueva configuración.
Ahora, vamos a crear instancias que utilizaran nuestra configuración. Para crear una instancia en la máquina local, clicar en ‘Nuevo’ en la página Instancias del Servidor Locales,
On the New Standalone Server Instance page, create the instance as shown below:
Pulsar ‘OK’ para terminar de crear nuestra primera instancia.
Podemos repetir el mismo proceso anterior para crear una instancia en el nodo remoto simplemente referenciando a la máquina remota de la siguiente manera:
Pulsar ‘OK’ para crear nuestra segunda y última instancia y volver a la página de Instancias Locales. Ahora deberías tener dos instancias marcadas como ‘Detenida‘. Selecciona ambas utilizando las cajas de selección a su izquierda e inícialas.
Con nuestras instancias iniciadas y referenciando a la misma configuración, cualquier cambio en cluster-config será aplicado en ambas instancias, así como cualquier otra instancia que creemos referenciando a la configuración cluster-config.
Para habilitar Hazelcast en cluster-config, navegar hacia abajo en el árbol del menú ‘Configuraciones’ y expandir ‘cluster-config’.
Hacer clic en la pestaña Hazelcast, marcar la caja de selección ‘Habilitado’ y guardar los cambios.
Podemos dejar el resto de las configuraciones en los valores por defecto, aunque esto depende de que la comunicación de multidifusión UDP sea posible en nuestra red. Si tienes algún problema con el descubrimiento automático de Hazelcast, la multidifusión UDP es una de las cosas a verificar.
Si has habilitado Hazelcast con la opción Dinámico habilitado, deberías ver los mensajes de registro mostrando la inicialización de Hazelcast y los dos miembros descubriéndose unos a otros. Para ver tu cluster Hazelcast, selecciona “Dominio” en el árbol de páginas, y selecciona la pestaña “Hazelcast” y finalmente la subpestaña “Miembros del Cluster” para ver la pestaña Miembros del Cluster Hazelcast. Aquí puedes ver todos los miembros del cluster, junto con las aplicaciones desplegadas en ellos.
Ahora tenemos nuestras instancias configuradas, y Hazelcast indica que están enlazadas correctamente en cluster, los que significa que podemos probarlo!
Preparando la aplicación de ejemplo de Payara
El repositorio de Ejemplos de Payara en Github está repleto de proyectos que demuestran características específicas disponibles para Payara Server. Nosotros utilizaremos la aplicación rest-jcache para demostrar como Hazelcast distribuye fácilmente los datos, pero primero, tenemos que descargarla y prepararla.
Para descargar y construir el repositorio necesitarás Git y Maven instalados. Ambos están disponibles en los repositorios de Ubuntu y se pueden instalar con el siguiente comando:
sudo apt install git maven |
Clonar el repositorio de Ejemplos de Payara en la primera máquina Ubuntu con el siguiente comando:
git clone https://github.com/Payara/Payara-Examples |
Maven descargará automáticamente las dependencias del proyecto y lo construirá: la aplicación web compilada será almacenada como un fichero WAR dentro del directorio target:
Ahora que tenemos nuestra aplicación de prueba preparada, podemos desplegarla!
Para probar la habilidad de caché distribuida de nuestro cluster, desplegaremos la aplicación en toda las instancias del cluster y añadiremos algunos datos para demostrar como podemos modificar los datos dentro de todo el cluster al mismo tiempo editando los valores en la caché de una sola instancia local.
Primero, seleccionar la página “Aplicaciones” en el árbol de páginas y hacer clic en “Desplegar…”.
Después, subir la aplicación construida utilizando el botón “Buscar…, asegurándote de que añades ambas instancias del cluster en el listado de “Destinos Seleccionados”:
Payara Server se encargará de distribuir la aplicación a las instancias que hayamos seleccionado como destinos.
La aplicación rest-jcache utiliza las anotaciones de la API JCache en los métodos REST JAX-RS y escucha en el extremo de la “caché”. Todas las peticiones GET, PUT y DELETE están soportadas:
Primero demostraremos como la secunda máquina Ubuntu tiene el valor por defecto “helloworld” para, editando el valor almacenado dentro de la primera máquina Ubuntu, mostrar cómo Hazelcast hará disponible automáticamente la entrada de caché para todos los miembros del cluster.
curl “http://<IP_Remota>:<Puerto_de_Instancia_Remota>/rest-jcache-1.0-SNAPSHOT/webresources/cache?key=payara”
Como puedes ver, actualmente no hay valor almacenado para “payara” por lo que obtenemos el valor por defecto en respuesta desde la segunda instancia.
2. Añadir un nuevo valor para la clave “payara” en la instancia local
Podemos añadir un valor para la clave “payara” desde nuestra primera instancia con el siguiente comando:
curl -H “Accept: application/json” -H “Content-Type: application/json” -X PUT -d “badassfish” “http://<IP_Local>:<Puerto_de_Instancia_Local>/rest-jcache-1.0-SNAPSHOT/webresources/cache?key=payara”
Gracias a la cache de Hazelcast, este par clave-valor actualizado será distribuido inmediatamente a todas las instancias de nuestro cluster.
3. Recupera el nuevo valor de la instancia remota
Seremos capaces de ver este nuevo valor inmediatamente cuando volvamos a ejecutar nuestro comando inicial en la segunda instancia:
curl “http://<IP_Remota>:<Puerto_de_Instancia_Remota>/rest-jcache-1.0-SNAPSHOT/webresources/cache?key=payara”
Y aquí lo tenemos, un cluster funcionando con Payara Server, potenciado por Hazelcast! Ahora tenemos nuestro cluster listo, podemos empezar a desplegar nuestras aplicaciones y aprovechando al máximo nuestra nueva escalabilidad, así como configurando nuestro cluster para realizar balanceo de carga y manejar apropiadamente las sesiones que se tratarán en próximos blogs.
See here for the original version in English language.
{{cta(‘a591925d-60f3-4d12-9da6-6123459ccf71’)}}
Share:
We’re excited to announce that Payara Platform Community 7 Beta application server is now fully certified as Jakarta EE 11 […]
Enterprise Java applications power global commerce, healthcare, government and countless other industries. These systems must be scalable, secure and […]
May 2025 marks a monumental milestone in software development: Java turns 30. The impact of this language on the […]