Utilice middleware de código abierto: el middleware en entornos de computación en la nube adopta marcos de código abierto, que pueden reducir el tiempo de desarrollo e implementación y mejorar la eficiencia y confiabilidad del desarrollo.

Autor: Zen y el arte de la programación informática

1. Introducción

La computación en la nube es un nuevo modelo de computación distribuida con características únicas. Integra virtualización de recursos, escalamiento elástico y capacidades de pago por uso. Este nuevo modelo de computación distribuida permite a los ingenieros de software no preocuparse por el rendimiento del servidor al escribir aplicaciones, sino que solo deben centrarse en la aplicación en sí. Al mismo tiempo, los recursos informáticos proporcionados por la plataforma en la nube se pueden cargar según demanda, por lo que los usuarios no tienen que comprar costosos equipos de hardware.

El middleware en entornos de computación en la nube suele utilizar marcos de código abierto, como Apache Hadoop, Spark, Storm, etc. Estos marcos pueden reducir el tiempo de desarrollo e implementación para los desarrolladores de software y administradores de sistemas, y pueden resolver eficazmente problemas difíciles en las arquitecturas de software existentes. Por ejemplo, el uso de Hadoop como motor informático del clúster puede realizar fácilmente procesamiento de datos, análisis de datos, aprendizaje automático y cálculos de teoría de grafos; Spark proporciona un marco informático distribuido que puede ayudar a resolver el problema del procesamiento paralelo de datos masivos; Storm se especializa en Se utiliza para el procesamiento de flujos en tiempo real y es adecuado para procesar flujos de datos a escala de Internet.

Para aprovechar mejor las características de las plataformas de computación en la nube, los proveedores de servicios en la nube suelen lanzar su propio software de código abierto. Por ejemplo, Amazon AWS tiene el software Amazon EMR (Elastic MapReduce) de código abierto para administrar clústeres de Hadoop en Amazon Elastic Compute Cloud (EC2); Microsoft Azure también lanzó Azure HDInsight para admitir marcos como Apache Spark, Storm y HBase.

Sin embargo, para algunas plataformas de computación en la nube de nivel empresarial, como GCE de Google o Azure de Microsoft, su software de código abierto es principalmente para el público. Por lo tanto, cómo aprovechar al máximo el software de código abierto en estas plataformas puede aportar enormes beneficios. Este artículo explicará las ventajas del middleware de código abierto en entornos de computación en la nube y cómo utilizar estas herramientas en plataformas de nube de nivel empresarial.

2. Ventajas del middleware de código abierto en un entorno de computación en la nube En primer lugar, el middleware de código abierto en un entorno de computación en la nube puede reducir los costos y acortar el ciclo de desarrollo. En este punto, las herramientas de código abierto pueden ahorrar tiempo y dinero porque eliminan la necesidad de comprar e instalar un servidor. Además, los proveedores de servicios en la nube generalmente otorgan licencias comerciales para servicios de plataforma en la nube, lo que permite a las empresas utilizar los paquetes de software como servicio o software como servicio del proveedor de servicios en la nube, ahorrando así tiempo y energía en la implementación y operación y mantenimiento.

En segundo lugar, el software de código abierto ha pasado por años de optimización iterativa continua y tiene buena estabilidad y seguridad. Las herramientas basadas en software de código abierto son más fáciles de implementar actualizaciones de iteración rápida que el software comercial y pueden satisfacer las crecientes necesidades comerciales de la empresa.

En tercer lugar, el middleware de código abierto en un entorno de computación en la nube puede implementar, administrar y monitorear clústeres automáticamente, lo que puede simplificar enormemente el complejo trabajo de operación y mantenimiento. Dado que los proveedores de servicios en la nube proporcionan API o scripts de implementación automatizados, los usuarios pueden implementar automáticamente los componentes necesarios con una configuración simple, sin la necesidad de instalar o configurar servidores manualmente. Además, los proveedores de servicios en la nube también proporcionarán una variedad de herramientas para monitorear clústeres, como recopilación de registros, monitoreo de indicadores, diagnóstico de fallas, etc., para que los problemas del clúster se puedan descubrir y resolver de manera oportuna.

Cuarto, el middleware de código abierto en entornos de computación en la nube es muy flexible. Con el software de código abierto, los usuarios pueden elegir libremente las versiones de los componentes, la configuración de funciones y el entorno operativo que utilizan. Por ejemplo, los usuarios pueden elegir el sistema de almacenamiento del clúster Spark a través de software de código abierto y elegir el sistema HDFS o S3 más compatible. Además, el software de código abierto también se puede personalizar y desarrollar de acuerdo con diferentes escenarios comerciales. Por ejemplo, el módulo Spark MLlib adecuado para tareas de predicción de clics publicitarios puede reemplazar el módulo de análisis estadístico del software comercial.

3. Implementación de middleware de código abierto en un entorno de computación en la nube Este capítulo describirá en detalle el proceso de implementación de middleware de código abierto en un entorno de computación en la nube. Primero, este artículo explicará los conceptos básicos y la arquitectura del middleware de código abierto. Luego, se presentarán los métodos de implementación del software de código abierto de uso común: Apache Hadoop, Apache Storm y Apache Spark. Finalmente, se presentará el uso básico de Ansible, la herramienta de implementación automatizada para software de código abierto.

3.1 Descripción general del middleware de código abierto

En el entorno de la computación en la nube, el middleware de código abierto es un campo tecnológico ampliamente utilizado. En esta sección, se presentarán brevemente los conceptos y la arquitectura relacionados del middleware de código abierto.

3.1.1 Concepto de software intermedio

El middleware es un componente del sistema de software que se encuentra entre el cliente y el servidor y es responsable de completar la comunicación, coordinación e integración entre los dos. Por lo general, consta de uno o más módulos de software, incluida la capa de interfaz de red, la capa de mensajería, el administrador de transacciones, el motor de reglas comerciales, etc. El middleware también incluye funciones en varios aspectos, como grupo de conexiones de bases de datos, sistema de caché, gestión de configuración, gestión de seguridad, asignación de recursos, gestión de implementación, etc.

En un entorno de computación en la nube, el middleware normalmente consta de tres partes: infraestructura como servicio (IaaS), plataforma como servicio (PaaS) y software como servicio (SaaS). La siguiente figura muestra la arquitectura de estos tres servicios.

La capa IaaS es responsable de proporcionar servicios de infraestructura como recursos informáticos, redes y almacenamiento. Los usuarios pueden configurar y administrar servidores por sí mismos, incluida la implementación, administración de sistemas operativos, configuración de hardware y mantenimiento de software, hardware, redes, etc.

La capa PaaS proporciona un entorno de desarrollo de software, un entorno operativo de middleware, una base de datos y otros servicios de plataforma operativa. Los usuarios pueden utilizar directamente el marco de middleware proporcionado por la plataforma para el desarrollo y la implementación. La plataforma puede proporcionar varios marcos de middleware, como colas de mensajes, bases de datos, gestión de configuración, sistemas de almacenamiento en caché, mecanismos de seguridad, etc.

La capa SaaS proporciona servicios de software de aplicaciones. Los usuarios pueden suscribirse a servicios en línea, utilizar los servicios de software proporcionados y acceder a ellos a través de navegadores, aplicaciones móviles, etc. El software proporcionado por los proveedores de servicios en la nube a menudo implica una lógica empresarial compleja: los usuarios no necesitan considerar los detalles del software subyacente y pueden completar el trabajo correspondiente simplemente usando la interfaz.

3.1.2 Arquitectura de software intermedio

El middleware de código abierto en entornos de computación en la nube a menudo se construye basándose en el modelo de computación distribuida. La siguiente figura muestra la arquitectura de middleware de código abierto comúnmente utilizada:

Flujo de datos

En un modelo de computación distribuida, los datos fluyen a través de la capa de transporte. En la arquitectura de middleware tradicional, la cola de mensajes se utiliza para recibir y almacenar datos del cliente y, una vez que la aplicación los procesa, los envía a otro middleware o al destino final. Sin embargo, en un entorno de computación en la nube, los datos generalmente no están conectados directamente, sino que se transmiten a través de múltiples nodos, por lo que la cola de mensajes no puede manejar bien este tipo de transmisión de datos. Por lo tanto, el middleware de código abierto en entornos de computación en la nube suele utilizar otros métodos para el flujo de datos, como flujos de almacenamiento, flujos de eventos, llamadas RPC, etc.

Computación distribuída

Una característica importante del middleware de código abierto es el modelo informático distribuido. En este modelo, los usuarios envían tareas a diferentes nodos y el middleware es responsable de asignar tareas a diferentes nodos informáticos para su ejecución. Las tareas que se ejecutan en nodos informáticos pueden realizar procesamiento de datos, aprendizaje automático, cálculos de teoría de grafos, etc. de forma distribuida. Por lo tanto, el middleware de código abierto en entornos de computación en la nube puede resolver eficazmente problemas de computación de big data con grandes cantidades de datos y tareas intensivas.

Diseño modular

La arquitectura del middleware de código abierto es altamente modular. La arquitectura de middleware típica se muestra en la figura. Consta de varios módulos, como cola de mensajes, motor informático, agente de servicio, almacenamiento, programador y componentes de red. Cada módulo se puede implementar de forma independiente y cooperar entre sí para formar un sistema de middleware completo.

3.2 Métodos de implementación de Hadoop, Storm y Spark

Esta sección presentará los métodos de implementación del software de código abierto de uso común: Apache Hadoop, Apache Storm y Apache Spark.

Método de implementación de Hadoop

Hadoop es un marco informático distribuido de código abierto. Su infraestructura consta de HDFS, MapReduce y YARN. HDFS es un sistema de archivos distribuido que se utiliza para almacenar datos. MapReduce es un modelo informático distribuido para el procesamiento de datos. YARN es un sistema de gestión de recursos para la gestión unificada de recursos del clúster. El método de implementación de Hadoop es el siguiente:

  1. Instalar paquetes de dependencia. Todos los módulos de Hadoop requieren la instalación de paquetes de dependencia como Java, Python y SSH.

  2. Configure el archivo de configuración hadoop-env.sh. Este archivo define las variables del entorno de ejecución de Hadoop.

  3. Crea las carpetas necesarias. Cree la carpeta /etc/hadoop para guardar la configuración de todos los archivos relacionados con Hadoop.

  4. Modifique el archivo de configuración core-site.xml. Configure las direcciones predeterminadas de HDFS y YARN, así como algunos otros elementos de configuración comunes.

  5. Modifique el archivo de configuración hdfs-site.xml. Configure la dirección del nodo del nombre HDFS, la cantidad de réplicas, la cantidad de copias de seguridad, el tamaño del bloque, etc.

  6. Cree un inicio de sesión ssh sin contraseña en todos los nodos. Asegúrese de que la clave privada SSH exista para todos los nodos.

  7. Configure el archivo de configuración mapred-site.xml. Configure la asignación de recursos, los directorios de entrada y salida de los trabajos de MapReduce, etc.

  8. Configure el archivo de configuración Yarn-site.xml. Configure la política de asignación de recursos de YARN y la información de configuración de la cola.

  9. Configurar el archivo maestro. Especifique la dirección IP del nodo maestro.

  10. Configurar el archivo esclavos. Especifique la dirección IP del nodo informático.

  11. Inicie los procesos NameNode y DataNode. Inicie los procesos NameNode y DataNode en el nodo maestro y el nodo informático de HDFS respectivamente.

  12. Inicie los procesos ResourceManager y NodeManager. Inicie los procesos ResourceManager y NodeManager en el nodo maestro de YARN y el nodo informático respectivamente.

  13. Pruebe si Hadoop está funcionando correctamente. Inicie el programa cliente, conéctese al clúster de Hadoop y ejecute comandos de prueba simples, como ls, mkdir, cat, etc. Si la prueba es exitosa, significa que el clúster de Hadoop se implementó exitosamente.

Cómo implementar Storm

Storm es una plataforma informática distribuida en tiempo real de código abierto. Su arquitectura básica consta de Nimbus, Supervisor y Worker. Nimbus es un clúster independiente responsable de programar y ejecutar la topología. Supervisor es un proceso que se ejecuta en cada máquina y es responsable de monitorear y recuperar fallas de la topología que se ejecuta en el clúster. Worker es un proceso JVM que se ejecuta en cada máquina y es responsable de realizar tareas específicas.

El método de implementación de Storm es el siguiente:

  1. Instalar paquetes de dependencia. Storm requiere la instalación de JDK, Maven, Zookeeper y otros paquetes de dependencia.

  2. Configure el archivo de configuración storm.yaml. Este archivo define los principales parámetros de Storm.

  3. Crea las carpetas necesarias. Cree la carpeta /var/log/storm para guardar los archivos de registro de Storm.

  4. Cargue el archivo de configuración storm.yaml en el nodo nimbus.

  5. Inicie el proceso Zookeeper en el nodo nimbus.

  6. Inicie el proceso principal de Storm en el nodo nimbus.

  7. Inicie el proceso de supervisor de Storm en el nodo supervisor.

  8. Inicie el proceso de trabajo de Storm en el nodo supervisor.

  9. Pruebe si Storm está funcionando correctamente. Inicie el programa cliente, conéctese al clúster Storm y ejecute topologías de prueba simples, como WordCount, contador Bolt, etc. Si la prueba es exitosa, significa que el clúster Storm se implementó exitosamente.

Método de implementación de Spark

Spark es un marco informático distribuido de código abierto. Su arquitectura básica consta de controlador, ejecutor, administrador de clústeres, programador, programador DAG, iniciador de tareas, servicio aleatorio y interfaz de usuario web. El controlador es un proceso responsable de ejecutar los trabajos del usuario. El ejecutor es un proceso JVM que se ejecuta en cada nodo del clúster y es responsable de ejecutar los trabajos. Cluster Manager es un proceso responsable de administrar los recursos del clúster y programar la ejecución del trabajo.

El método de implementación de Spark es el siguiente:

  1. Instalar paquetes de dependencia. Spark requiere la instalación de JDK, Scala, sbt y otros paquetes dependientes.

  2. Configure el archivo de configuración spark-env.sh. Este archivo define las variables del entorno de ejecución de Spark.

  3. Configure el archivo de configuración spark-defaults.conf. Este archivo define los parámetros predeterminados para los trabajos de Spark.

  4. Crea las carpetas necesarias. Cree la carpeta /usr/local/spark para guardar la configuración de los archivos relacionados con Spark.

  5. Establezca la variable de entorno SPARK_HOME. Agregue la variable SPARK_HOME en /etc/profile o ~/.bashrc para apuntar al directorio de instalación de Spark.

  6. Establezca la variable de entorno JAVA_HOME. Agregue la variable JAVA_HOME en /etc/profile o ~/.bashrc para apuntar al directorio de instalación de JDK.

  7. Configure la variable de entorno SPARK_MASTER. Agregue la variable SPARK_MASTER en ~/.bash_profile para que apunte al nombre de host del nodo maestro.

  8. Configure el inicio de sesión sin contraseña SSH para el nodo Supervisor. Asegúrese de que exista la clave privada SSH del nodo supervisor.

  9. Descargue el paquete de software Spark en todos los nodos informáticos.

  10. Inicie el proceso maestro de Spark en el nodo Supervisor.

  11. Inicie el proceso Spark Slave en el nodo Supervisor.

  12. Inicie los procesos de ejecución de Spark en todos los nodos informáticos.

  13. Pruebe si Spark está funcionando correctamente. Inicie el programa cliente, conéctese al clúster Spark y ejecute trabajos de prueba simples, como Pi Estimation, WordCount, etc. Si la prueba es exitosa, significa que el clúster Spark se implementó exitosamente.

Uso básico de Ansible

Ansible es una herramienta de automatización de TI de código abierto que se puede utilizar para implementar, administrar y configurar automáticamente clústeres de computadoras. Se basa en el protocolo SSH y admite la gestión por lotes de una gran cantidad de computadoras remotas. El método de implementación de Ansible es el siguiente:

  1. Instalar ansible. Ansible está desarrollado en Python, por lo que primero debe instalar Python.

  2. Instale sshpass. sshpass es una herramienta en Linux que se utiliza para ejecutar comandos ssh en el shell.

  3. Genere un par de claves SSH. Utilice el comando ssh-keygen para generar un par de claves.

  4. Copie el par de claves SSH en el nodo de destino. Copie el par de claves generado en el directorio ~/.ssh/ del nodo de destino.

  5. Configure la información del nodo de destino en el archivo del libro de jugadas ansible. Configure el archivo de inventario para que enumere la dirección IP o el nombre de host del nodo de destino.

  6. Configure la información de la tarea en el archivo del libro de jugadas ansible. Configure playbooks y defina las tareas a realizar, como instalar software, crear usuarios, copiar archivos, ejecutar scripts, etc.

  7. Ejecute el libro de jugadas ansible. Ejecute el comando ansible-playbook en el nodo de destino, ejecute el archivo de libro de jugadas especificado y complete la implementación y administración automatizadas del nodo de destino.

Supongo que te gusta

Origin blog.csdn.net/universsky2015/article/details/133502334
Recomendado
Clasificación