Lo que los programadores deben saber sobre la operación y el mantenimiento automatizados
Para un desarrollador, la operación y mantenimiento puede no ser su responsabilidad. Pero como desarrollador, no puede comprender todo el proceso de operación y mantenimiento automatizados. Porque para un sistema de información, el desarrollo, la operación y el mantenimiento están esencialmente integrados. Especialmente para algunas empresas pequeñas, el propio personal de operación y mantenimiento puede ser desarrolladores que se toman un tiempo libre para asumir funciones concurrentes.
La operación y el mantenimiento automatizados se encuentran esencialmente entre el desarrollo, la operación y el mantenimiento. Es la intersección de la operación, el mantenimiento y el desarrollo, e incluso requiere escribir mucho código en muchos casos. Por lo tanto, cualquier desarrollador debe tener conocimientos relevantes sobre operación y mantenimiento automatizados.
Un desarrollador bien comprendido, incluso si no realiza trabajos relacionados con la operación y el mantenimiento, aún puede saber qué es importante y qué se debe configurar al entregar el proyecto al personal de operación y mantenimiento, etc. Sin embargo, en el trabajo real, los desarrolladores a menudo dejan algunos obstáculos para el personal de operación y mantenimiento, cosas que solo él sabe pero el personal de operación y mantenimiento no. Como resultado, cuando el personal de operación y mantenimiento lo intentó muchas veces y descubrió que no funcionaba, encontraron al desarrollador. Después de investigar un poco, el desarrollador le dijo qué puerto debía usarse en un entorno determinado. Esto no sólo hace perder el tiempo al personal de operación y mantenimiento, sino que también aumenta la carga de trabajo de la comunicación.
Lo contrario también es cierto para algunos problemas en el sitio, si el personal de operación y mantenimiento no puede localizar el problema en el sitio. Es muy difícil para los desarrolladores reproducirlo. Por ejemplo, en una determinada empresa, el personal de operación y mantenimiento descubrió problemas en las instalaciones del cliente. Requirió mucho esfuerzo exportar los registros desde la intranet educada y enviarlos a los desarrolladores. Sin embargo, después de que los desarrolladores estudiaron cuidadosamente los registros, descubrieron que el problema se debía a una falla de la red. Obviamente, es imposible para los desarrolladores saber por qué la red no está conectada. Quizás no haya ningún cable de red conectado.
Así que hoy hablemos de lo que un programador necesita saber sobre la operación y el mantenimiento automatizados.
1. El concepto de operación y mantenimiento automatizados
Con el desarrollo continuo de la era de la información, los pocos servidores iniciales se han convertido en enormes centros de datos y el trabajo manual por sí solo ya no puede satisfacer las necesidades Requisitos técnicos, comerciales, de gestión y otros. Es posible que un solo personal de operación y mantenimiento configure manualmente varios servidores. Configurar cientos o miles de servidores es agotador y propenso a errores. Luego es necesario estandarizar, automatizar, optimizar estructuras, optimizar procesos, etc. para los trabajos de operación y mantenimiento. Reducir los costos del servicio de operación y mantenimiento desde todos los aspectos. Entre ellos, la automatización fue inicialmente ampliamente estudiada y aplicada como punto de partida para sustituir las operaciones manuales.
La llamada operación y mantenimiento automatizados significa utilizar una combinación de scripts y herramientas de terceros con una mínima intervención manual para garantizar el funcionamiento eficiente y estable del sistema empresarial 24 horas al día, 7 días a la semana. Este es el objetivo final de toda operación y mantenimiento de sistemas empresariales.
Según la madurez del desarrollo de la operación y el mantenimiento, la operación y el mantenimiento se pueden dividir aproximadamente en tres etapas:
(1) Depender de la implementación, operación y mantenimiento del software puramente manual y repetido
(2) Implementar y operar software de manera conveniente mediante la escritura de scripts;
(3) Usar herramientas de terceros para implementar y operar software de manera eficiente; Problemas que deben resolverse en la operación y el mantenimiento automatizados
En términos generales, la operación y el mantenimiento automatizados deben resolver los siguientes problemas: implementación y configuración automática, alerta temprana de riesgos, resolución de problemas durante el evento y posterior. -gestión de fallos.
3. Herramientas de uso común para operación y mantenimiento automatizados
Las herramientas de uso común para operación y mantenimiento automatizados incluyen las siguientes:
1. Ansible
Ansible es una herramienta automatizada de operación y mantenimiento desarrollada en base a Python. Integra las ventajas de muchas herramientas de operación y mantenimiento (puppet, cfengine, chef, func, fabric) y realiza funciones como la configuración del sistema por lotes y la implementación de programas por lotes. y ejecución por lotes de comandos.
Ansible tiene las siguientes características:
(1) Modularización: llama a módulos específicos para completar tareas especiales.
(2) Tres módulos clave: Paramiko (implementación de ssh en Python), PyYaml y jinja2 (lenguaje del módulo).
(3) Admite módulos personalizados y puede utilizar cualquier lenguaje de programación para escribir módulos.
(4) Basado en lenguaje Python.
(5) Implementación simple, basada en Python y SSH (instalado de forma predeterminada), sin agentes, sin necesidad de agentes y sin dependencia de KPI (no se requiere SSL).
(6) Seguridad, basada en OpenSSH
(7) Idempotencia: Ejecutar una tarea una vez tiene el mismo efecto que ejecutarla n veces, y no ocurrirán situaciones inesperadas debido a tareas repetidas. ejecución.
(8) Admite tareas de organización de libros de jugadas, formato YAML, tareas de organización y admite estructuras de datos enriquecidas.
(9) Una función de solución multicapa más potente.
2. Chef
Chef es una poderosa herramienta de automatización que puede implementar, reparar, actualizar y administrar servidores y aplicaciones en cualquier entorno.
Chef se divide principalmente en tres partes: Chef Server, Workstation y Chef Client. Los usuarios escriben libros de cocina en Workstation. Luego, cárguelo en Chef Server mediante el comando cuchillo. Finalmente, instale e implemente en Chef Client. Por lo tanto, escribir un libro de recetas juega un papel importante en toda la implementación automatizada.
Chef Server contiene todos los datos de configuración y almacena recetas, libros de cocina y metadatos que describen cada nodo en Chef-Client. Los detalles de configuración se proporcionan a los nodos a través de Chef-Client. Cualquier cambio realizado debe implementarse a través de Chef Server. Antes de enviar cambios, verifica que los nodos y las estaciones de trabajo estén emparejados con el servidor mediante claves de autorización y luego permite la comunicación entre las estaciones de trabajo y los nodos.
Las estaciones de trabajo se utilizan para interactuar con Chef-server y también con Chef-nodes. También se utiliza para crear libros de cocina. Las estaciones de trabajo son el lugar donde ocurren todas las interacciones, donde se crean, prueban e implementan los libros de recetas y donde se prueba el código en las estaciones de trabajo.
La herramienta de línea de comandos de Chef es donde se crean, prueban, implementan y cargan los libros de cocina en Chef Server a través de esta política.
Cuchillo se utiliza para interactuar con ChefNodes.
Test Kitchen se utiliza para verificar el código de Chef.
Chef-Repo es un repositorio en el que se crean, prueban y mantienen libros de cocina a través de la herramienta de línea de comandos de Chef.
Los nodos son administrados por Chef y cada nodo se configura instalando Chef-Client en él. ChefNodes es una máquina, como una nube física, un host en la nube, etc.
Chef-Client es responsable de registrar y autenticar Nodes, construir objetos Nodes y configurar Nodes.
Chef-Client se ejecuta localmente en cada Nodo para configurar ese Nodo.
Cookbook es una de las funciones básicas importantes del marco Chef. Cuando Chef Server se instala y se implementa en la máquina de destino, utiliza Runlist. La lista de ejecución contiene libros de recetas específicos, por lo que la tarea de implementación final de una máquina de destino recae en el libro de recetas. Para Cookbook, contiene múltiples componentes. Podemos entender simplemente Cookbook como un contenedor o como un paquete, que contiene recetas, archivos, plantillas, bibliotecas, metadatos y otra información. Esta información se utiliza para configurar nuestra máquina de destino.
3. Puppet
Puppet es un sistema de gestión de configuración centralizado para plataformas Linux y Unix. El llamado sistema de gestión de configuración sirve para gestionar archivos, usuarios, procesos, paquetes de software, etc. recurso. Se puede ejecutar en un servidor. Cada cliente se conecta al servidor a través de un certificado SSL, obtiene la lista de configuración de esta máquina y luego completa el trabajo de configuración según la lista. Por lo tanto, si el rendimiento del hardware es relativamente alto, miles de unidades. Se puede mantener y administrar la máquina es muy fácil, siempre que la configuración del cliente, la ruta del servidor y el software sean consistentes.
El cliente Puppet llamará al factor local y el factor detectará las variables comunes del host, como el nombre del host, el tamaño de la memoria, la dirección IP, etc. Puppetd luego envía esta información al servidor Puppet;
El servidor Puppet detecta el nombre de host del cliente, luego detecta la configuración del nodo correspondiente en el manifiesto y analiza este contenido, que se envía por facter. procesarse como variables;
El servidor Puppet solo puede analizar cuando coincide con el código asociado con el cliente Puppet. El análisis se divide en varios procesos. luego a El pseudocódigo en el medio se envía al cliente Puppet
El cliente Puppet ejecutará el pseudocódigo después de recibirlo y, una vez completada la ejecución, el resultado de la ejecución se enviará al servidor Puppet; ;
p>
El servidor Puppet luego escribe los resultados de la ejecución del cliente en el registro.
4. Saltstack
SaltStack es un conjunto de herramientas de operación y mantenimiento automatizadas C/S desarrolladas en base a Python. Es fácil de implementar, tiene buena escalabilidad, puede administrar fácilmente decenas de miles de servidores y es lo suficientemente rápido. Comunicación al servidor, en milisegundos. SaltStack proporciona un bus de comunicaciones de infraestructura dinámica para orquestación, ejecución remota, gestión de configuración y más. Su capa inferior utiliza comunicación pub/sub de cola de mensajes ZeroMQ, utiliza la emisión de certificados SSL para la gestión de autenticación y utiliza cifrado AES para la transmisión.
En la arquitectura saltstack, el servidor se llama Master y el cliente se llama Minion.
Tanto el Master como el Minion se ejecutan en modo demonio, siempre escuchando los puertos ret_port (aceptando solicitudes de minion) y Publish_port (publicando mensajes) definidos en el archivo de configuración. Cuando Minion se está ejecutando, se conectará automáticamente al puerto ret_port de la dirección maestra definido en el archivo de configuración para la autenticación de la conexión.
Además de la arquitectura C/S tradicional, saltstack también tiene una arquitectura llamada masterless, que no requiere la instalación de un servidor maestro separado. Solo necesita instalar el lado Minion en cada máquina. y luego use esto La máquina solo es responsable del modo de servicio del mecanismo de gestión de configuración de la máquina.
Saltstack proporciona las siguientes funciones:
(1) Ejecución remota: (ejecución por lotes de comandos) Cuando se ejecuta un comando en el maestro, se ejecutará en todos los minions.
(2) Gestión de configuración/gestión de estado: (Describa el estado que desea lograr, saltstack lo ejecutará)
(3) Gestión de la nube (nube): se utiliza para gestionar la nube hosts
(4) Basado en eventos: ejecución pasiva, se activa automáticamente cuando se alcanza un cierto valor
La comparación de estas cuatro herramientas automatizadas de operación y mantenimiento es la siguiente. son básicamente ansible y saltstack. Utilice más:
.