Cómo migrar Weblogic de una máquina virtual a un contenedor

  
 

A medida que crece la demanda de soluciones de PaaS y DevOps, podemos ver que las aplicaciones heredadas que se ejecutan en máquinas virtuales o que se ejecutan directamente en el metal se enfrentan a una serie de obstáculos en la práctica. El proceso de descomposición y migración es muy complejo. A menudo, para obtener los beneficios del modo PaaS o CaaS, los propietarios de las aplicaciones deben rediseñar la arquitectura de la aplicación.

En este artículo, analizaremos los desafíos específicos de migrar aplicaciones heredadas de Java que se ejecutan en máquinas virtuales a plataformas basadas en contenedores. Usando Oracle WebLogic Server como un caso, mostraremos los pasos específicos del proceso de descomposición y los resultados de la migración.

Movimiento para migrar al contenedor

Al comparar las aplicaciones Java EE en la era del metal, la virtualización de hardware ha sido un gran paso adelante. Nos da la capacidad de resolver el aislamiento entre varias aplicaciones y mejorar la utilización del hardware. Sin embargo, los hipervisores utilizan una gran cantidad de CPU y memoria en el host, y cada máquina virtual requiere un sistema operativo completo, una pila TCP y un sistema de archivos.

Cada máquina virtual tiene una memoria fija, y solo un subconjunto de hipervisores puede redistribuir la memoria para ejecutar máquinas virtuales con la ayuda de un mecanismo de generación de memoria. Entonces, para escalar el futuro de la aplicación, reservamos algunos recursos en cada máquina virtual, pero estos recursos no se utilizan completamente. Al mismo tiempo, estos recursos no pueden ser compartidos por otros programas debido a la falta de aislamiento adecuado entre las instancias dentro de una máquina virtual.

El contenedor se puede ejecutar con solo una pequeña cantidad de recursos y CPU a través del kernel del sistema operativo, la pila TCP, el sistema de archivos y otros recursos del sistema del host compartido, lo que mejora aún más el rendimiento y la utilización de recursos. .

Hay dos tipos de contenedores: mdash; — contenedores de aplicaciones y contenedores del sistema. Normalmente, un contenedor de aplicaciones se ejecuta como un solo proceso. Un contenedor de sistema es como un sistema operativo completo, que puede realizar todas las funciones del sistema operativo en un solo contenedor, como systemd, SysVinit y otros procesos como openssh, crond y syslogd generados por openrc. Ambos tipos de contenedores son muy útiles en diferentes escenarios de uso y no desperdician la memoria en procesos de administración redundantes, ya que suelen consumir menos memoria que las máquinas virtuales. Sin embargo, la migración de aplicaciones heredadas de Java solo puede requerir una gran cantidad de refactorización de aplicaciones mediante contenedores del sistema.

A diferencia de las máquinas virtuales, es fácil modificar las restricciones en los recursos de contenedor de la instancia en ejecución sin reiniciar. Además, estos recursos que no se consumen dentro de los límites restringidos se comparten automáticamente con otros contenedores en el mismo nodo físico.

Además, los contenedores también son muy útiles para el desarrollo, ya que utilizan un enfoque ágil para crear, empaquetar y probar aplicaciones para acelerar el inicio de la aplicación y aumentar la escalabilidad de la aplicación.

Estos recursos que no se utilizan en máquinas físicas pueden ser fácilmente extendidos o utilizados por nuevos contenedores de aplicaciones. Dado el mayor aislamiento de los contenedores, diferentes tipos de aplicaciones pueden ejecutarse en el mismo nodo físico sin afectarse entre sí. Estos pueden promediar 3-10 veces la utilización de los recursos de infraestructura existentes.

¿Qué es la descomposición?

En el proceso de migración, la descomposición del programa es la parte básica, que puede ayudar a dividir grandes aplicaciones de un solo bloque en pequeños bloques lógicos, y puede ejecutarse de forma independiente. El programa

La figura muestra un proceso simple de descomposición aplicado al migrar de una máquina virtual a un contenedor:


Ejecutando el legado de Java en una máquina virtual Aplicaciones

Hay un viejo dicho en el desarrollo de programas de software: el software heredado es bueno, solo el software antiguo que aún se está ejecutando. Veamos más de cerca cómo funciona en Oracle Weblogic Server.

Estructura de Oracle Weblogic Server en máquinas virtuales

Cuando se ejecuta en una máquina virtual, Weblogic Server contiene tres tipos de instancias:

  • Administration Server.
  • Administrador de nodos.
  • Servidor administrado.

    El servidor de administración es el nodo central a través del cual puede configurar y administrar el clúster. Todos los recursos en. Agrega o elimina nodos administrados al conectarse al Administrador de Nodos. El nodo gestionado ejecuta aplicaciones web, EJB, servicios web y otros recursos.

    Por lo general, un administrador de nodos y varios servidores de servicio administrados se ejecutan en cada máquina virtual, y un servidor de administración administra todas las instancias en todas las máquinas virtuales.

    Expandiendo WebLogic a través de máquinas virtuales

    Ahora imagine que necesita escalar su clúster durante las horas pico de tráfico, y se agregarán nuevos servidores administrados a la máquina virtual para manejar la creciente carga hasta No hay asignación de recursos.

    Pero cuando el tráfico sigue creciendo y el número de instancias de servicios administrados actualmente es insuficiente para manejar la carga, se debe agregar una nueva máquina virtual para manejar el crecimiento del programa.

    La extensión típica de WebLogic a través de múltiples máquinas virtuales implica tres pasos:

  • Proporcionar una nueva máquina virtual con las plantillas de Weblogic Server configuradas de antemano
  • En un nuevo virtual Inicie un administrador de nodos en la máquina y conéctese al servidor de administración
  • Agregue un nuevo servidor administrado para manejar parte de la creciente carga empresarial


    Luego, esta extensión Los pasos se repiten, y el arranque virtual recién agregado inicia más servidores administrados hasta que el recurso se restringe.



    La desventaja de ejecutar WebLogic en una máquina virtual

    La ejecución de Oracle WebLogic de esta manera es un método de utilización de recursos muy bajo. A continuación, se describen algunos recursos. O puntos no utilizados:

  • Cada máquina virtual requiere un sistema operativo completo, una pila TCP y un sistema de archivos, lo que requiere una gran cantidad de CPU y memoria en el host.
  • La asignación de estos recursos no está muy fragmentada. En algunos escenarios, todos debemos preparar una máquina virtual completa cuando solo necesitamos agregar un servidor administrado.
  • Si agrega CPU adicional o simplemente aumenta la memoria cuando una máquina virtual no tiene suficientes recursos, debe reiniciar toda la máquina virtual.
  • Cada máquina virtual requiere un administrador de nodos para agregar o quitar nodos administrados, lo que consume recursos adicionales y agrega una configuración compleja adicional.
  • Las instancias que se ejecutan en la misma máquina virtual pueden afectar el rendimiento de las demás debido a la falta de aislamiento. Por este motivo, no podemos mezclar y combinar diferentes aplicaciones en la misma máquina virtual.
  • La portabilidad de las máquinas virtuales se limita a un proveedor, por lo que hay una serie de problemas cuando queremos migrar de una nube a otra.
  • Empaquetar e implementar CI /CD en una máquina virtual puede ser muy lento y complicado.

    Migración de una máquina virtual a un contenedor

    En estos días, hemos encontrado varios servidores y marcos de aplicaciones excelentes diseñados para ejecutar microservicios en contenedores, como Spring Boot, WildFly Swarm. , Payara Micro, etc. En cualquier caso, hay una serie de diseños de servidores que se ejecutan en máquinas virtuales, como Oracle WebLogic Server, y la tarea de migrar instancias de este tipo a contenedores es más complicada. Por eso nos preocupa más este tema.

    Descomposición del servidor WebLogic

    La descomposición de estos días es una tarea bastante fácil con la ayuda de los contenedores Docker. Primero, debemos preparar una imagen de contenedor con WebLogic Server.
    (El espejo está disponible en el repositorio oficial de Oracle).

    Cuando la plantilla de Docker está lista, especificamos cada instancia en un contenedor separado: un servidor de administración y el número requerido de servidores administrados.

    Aquí, abandonamos el administrador de nodos para agregar y eliminar nodos administrados.

    Después de migrar a un contenedor, la instancia del servidor administrado se puede agregar y eliminar automáticamente a través de la plataforma de organización de contenedores y una serie de scripts WSLT, al igual que el nodo de administración.

    De esta manera, obtenemos una estructura de clúster de servidor de Weblogic muy simple.

    Debido a que los contenedores son más fáciles de configurar o clonar desde cero, el proceso de expansión horizontal se vuelve muy preciso y suave. Además, cada contenedor se puede iniciar o detener rápidamente casi sin tiempo de inactividad. Los contenedores son mucho más ligeros en comparación con las máquinas virtuales, por lo que la programación de contenedores consume menos tiempo que la programación de máquinas virtuales.

    Los beneficios de ejecutar WebLogic en un contenedor

    Aunque migrar una aplicación a un contenedor es un desafío, pero si sabe cómo administrarlo, puede obtener los siguientes beneficios:

  • Cada contenedor elimina la necesidad de un sistema operativo completo e independiente, y la pila TCP y el sistema de archivos pueden reducir el uso de los recursos del sistema (CPU y memoria).
  • Simplifique la escala horizontal eliminando Node Manager de la topología del clúster.
  • La capacidad de compartir recursos no utilizados a través de contenedores puede automatizar la escala vertical y puede reconfigurarse sin reiniciar, muy fácil.
  • Mejore la utilización de la infraestructura mediante el uso de contenedores separados para ejecutar diferentes aplicaciones en la misma máquina física.
  • Desbloqueo de las restricciones de migración de diferentes proveedores de la nube a través de la portabilidad del contenedor.

    Puede usar la misma forma para ayudar a desglosar otras capas de su aplicación, o para aplicar otros servicios de aplicación Java EE. En el siguiente tema, describiremos cómo manejar todo el proceso de datos descompuestos a través de un caso específico.

  • Copyright © Conocimiento de Windows All Rights Reserved