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:
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:
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:
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:
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.
. vmstat es una herramienta para ver el uso de la memoria virtual. Formato general: vmstat [-V] [
1.Linux OS versión: RedHat AS 52. Configuración del entorno de red: Host (Linux): IP: 192.168.1.1
kernel de Linux es muy estable, pero aún así inevitablemente se encontrará con una situación de ch
Para garantizar el funcionamiento normal del sistema Linux y resolver con precisión los diversos pro
Temporización precisa e hibernación bajo Linux
Interserver VPS ovz architecture asume que VPN
Exchange2010 borrar y reinstalar
Subsistema vecino de la pila de protocolos de linux (descripción general 1)
Creación del sistema de archivos Linux integrado con busybox
Linux ve a los usuarios en línea y expulsa a los usuarios
Linux elimina automáticamente N días antes de la copia de seguridad
La diferencia entre git pull y git fetch
Principio de Rsync y tutoriales básicos
Linux editor de texto de pantalla completa VI instrucciones de uso tutorial básico
Modo PASV de Vsftp (transferencia en modo pasivo) y modo de puerto
Cómo entrar en modo de seguridad de computadora Win7
Win10 9926 cómo desbloquear la bandeja del reloj para ver el nuevo diseño de la interfaz
El sonido de Win10 no se puede ajustar cómo hacerlo El volumen de Win10 no puede ajustar la solución
¿Qué quiere hacer exactamente Win8? La versión cambia para ver las intenciones de Microsoft
Cómo agregar posición de índice al sistema Win8 para mejorar la eficiencia de búsqueda
Menú del botón derecho sobre Win10 Cómo administrar
Win10 Redstone Preview 14267 actualizó el resumen de actualización de Win10 Redstone Preview 14267
Consejos de configuración de sonido y audio del sistema WinXP
Win7 batch delete C disco log log file method
La forma correcta de eliminar completamente la impresora del sistema Win7