introducción básica
Supervisor es un sistema cliente / servidor que permite a los usuarios controlar muchos procesos en sistemas operativos similares a UNIX. Es una herramienta de gestión de procesos desarrollada en base al lenguaje Python.
El lado del servidor de Supervisor se llama supervisor, que es principalmente responsable de iniciar el subproceso administrado cuando se inicia, responder a los comandos del cliente, reiniciar el subproceso bloqueado o salir, registrar la salida del subproceso stdout y stderr, generar y procesar la vida ciclo del evento de subproceso. Puede configurar los parámetros relacionados en un archivo de configuración, incluido el estado de Supervisord y los atributos relacionados de cada subproceso que administra. El archivo de configuración generalmente se encuentra en /etc/supervisord.conf.
El cliente Supervisor se llama supervisorctl, que proporciona una interfaz similar a un shell (es decir, una línea de comandos) para utilizar las funciones proporcionadas por el servidor supervisor. A través de supervisorctl, los usuarios pueden conectarse al proceso del servidor supervisor, obtener el estado del proceso hijo controlado por el proceso del servidor, iniciar y detener el proceso hijo y obtener la lista de procesos en ejecución. El cliente se comunica con el servidor a través de un socket de dominio Unix o un socket TCP, y el servidor tiene un mecanismo de autenticación de credenciales de identidad, que puede mejorar la seguridad de manera efectiva. Cuando el cliente y el servidor están en la misma máquina, el cliente y el servidor comparten el mismo archivo de configuración /etc/supervisord.conf, y las configuraciones de los dos se distinguen por etiquetas diferentes.
Supervisor también proporciona una página web para ver y administrar el estado del proceso, esta función se usa menos.
Sitio web oficial: http://supervisord.org
Preparación del entorno de instalación
Entorno del sistema
[root @ nginx ~] # cat / etc / redhat-release
Versión de CentOS Linux 7.4.1708 (Core)
[root @ nginx ~] # uname -r
3.10.0-693.17.1.el7.x86_64
[root @ nginx ~] # python --version
Python 2.7.5
Si el entorno de Python no está instalado, puede usar yum install python -y para instalar
Requisitos de la plataforma
Supervisor puede ejecutarse en la mayoría de los sistemas Unix, pero no admite la ejecución en sistemas Windows.
Supervisor requiere Python 2.4 y superior, pero no es compatible con ninguna versión de Python 3.
Instalar el servicio de supervisorInstalar easy_install
[root @ nginx ~] # yum instalar python-setuptools-devel -y
Instalar supervisor
supervisor de easy_install
Una vez instalado el supervisor, se generarán tres programas de ejecución:
supervisado
# servicio demonio del supervisor (utilizado para recibir comandos de gestión de procesos)
supervisorctl
#Cliente (utilizado para comunicarse con el demonio y enviar instrucciones para el proceso de gestión)
echo_supervisord_conf
#Generar programa de archivo de configuración inicial
Crea un archivo de configuración
Generalmente, el archivo de configuración de inicialización del supervisor se puede generar ejecutando el programa echo_supervisord_conf
mkdir / etc / supervisor
echo_supervisord_conf> /etc/supervisor/supervisord.conf
[root @ ~] # ll /etc/supervisor/supervisord.conf
-rw-r - r-- 1 raíz raíz 9710 24 de enero 15:10 /etc/supervisor/supervisord.conf
Introducción a los parámetros del archivo de configuración[unix_http_server]
file = / tmp / supervisor.sock; archivo de socket UNIX, supervisorctl usará
; chmod = 0700; El modo del archivo de socket, el predeterminado es 0700
; chown = nadie: nogroup; El propietario del archivo de socket, formato: uid: gid
; [inet_http_server]; servidor HTTP, que proporciona una interfaz de gestión web
; puerto = 127.0.0.1: 9001
; La IP y el puerto que se ejecutan en el fondo de la administración web, si están abiertos a la red pública, debe prestar atención a la seguridad
; username = user; El nombre de usuario para iniciar sesión en el fondo de administración
; contraseña = 123; La contraseña para iniciar sesión en el fondo de administración
[supervisor]
logfile = / tmp / supervisord.log
; Archivo de registro, el valor predeterminado es $ CWD / supervisord.log
logfile_maxbytes = 50 MB
; El tamaño del archivo de registro se rotará si supera, el valor predeterminado es 50 MB, si se establece en 0, significa que el tamaño no está limitado
logfile_backups = 10; el número predeterminado de copias de seguridad de archivos de registro es 10, establecido en 0 significa que no hay copia de seguridad
loglevel = info; nivel de registro, información predeterminada, otros: depurar, advertir, rastrear
pidfile = / tmp / supervisord.pid; pid 文件
nodaemon = false; si se debe comenzar en primer plano, el valor predeterminado es falso, es decir, comenzar en modo demonio
minfds = 1024; El valor mínimo de descriptores de archivo que se pueden abrir, el valor predeterminado es 1024
minprocs = 200; El número mínimo de procesos que se pueden abrir, el valor predeterminado es 200
[supervisorctl]
serverurl = unix: ///tmp/supervisor.sock
; Conecte el supervisor a través del socket UNIX, la ruta es consistente con el archivo en la parte unix_http_server
; serverurl = http: //127.0.0.1: 9001
; Conectar supervisor a través de HTTP
[programa: xx]
; [programa: xx] es el parámetro de configuración del proceso administrado, xx es el nombre del proceso
comando = / opt / tomcat / bin / catalina.sh ejecutar
; Comando de inicio del programa
autostart = true; Se inicia automáticamente cuando se inicia el supervisor
startsecs = 10; No hay una salida anormal después de 10 segundos de inicio, significa que el proceso se inició normalmente, el valor predeterminado es 1 segundo
autorestart = true; reinicia automáticamente después de que el programa sale, valores opcionales: [inesperado, verdadero, falso], el valor predeterminado es inesperado, lo que significa que el proceso se reinicia después de ser eliminado inesperadamente
startretries = 3; el número de reintentos automáticos después de un error de inicio, el valor predeterminado es 3
user = tomcat; Qué usuario iniciar el proceso, el valor predeterminado es root
prioridad = 999; La prioridad de inicio del proceso, el valor predeterminado es 999, el valor es pequeño y la prioridad se inicia
redirect_stderr = true; redirige stderr a stdout, por defecto es falso
stdout_logfile_maxbytes = 20 MB; tamaño del archivo de registro de salida estándar, 50 MB predeterminado
stdout_logfile_backups = 20; El número de copias de seguridad del archivo de registro de stdout, el valor predeterminado es 10
; archivo de registro stdout, debe tenerse en cuenta que cuando el directorio especificado no existe, no puede iniciarse normalmente, por lo que debe crear el directorio manualmente (supervisord creará automáticamente el archivo de registro)
stdout_logfile = / opt / apache-tomcat-8.0.35 / logs / catalina.out
stopasgroup=false
; El valor predeterminado es falso, cuando se mata el proceso, si se debe enviar una señal de detención a este grupo de procesos, incluidos los procesos secundarios
killasgroup = falso
; El valor predeterminado es falso, envía una señal de interrupción al grupo de procesos, incluidos los procesos secundarios
[incluir] ; incluir otros archivos de configuración
archivos = relativo / directorio / *. ini
; Puede especificar uno o más archivos de configuración que terminen en .ini
Nota: en el archivo de configuración; es un comentario
Introducción a los comandos de uso comúnUna vez que supervisord se inicia correctamente, puede controlar el proceso a través del cliente supervisorctl para iniciar, detener y reiniciar. Ejecute el comando supervisorctl sin agregar parámetros, ingresará al terminal interactivo del cliente supervisor y enumerará todos los procesos actualmente administrados.
[root @ java-test ~] # supervisorctl
supervisor> ayuda
comandos predeterminados (escriba ayuda <tema>):
=====================================
agregar borrar fg abrir salir quitar reiniciar iniciar detener actualización
disponibilidad salir mantener pid recargar volver a leer estado de apagado versión final
Puede ver el uso y los parámetros de los comandos relacionados a través del comando de ayuda
Proceso de gestión de la configuraciónEl siguiente es un ejemplo de configuración del proceso de Tomcat:
[programa: tomcat]
comando = / usr / local / tomcat / bin / catalina.sh ejecutar
stdout_logfile = / usr / local / tomcat / logs / catalina.out
inicio automático = verdadero
autorestart = true
startsecs = 5
prioridad = 1
stopasgroup = verdadero
killasgroup = verdadero
Una vez completada la configuración, inicie el servicio
supervisor -c /etc/supervisor/supervisord.conf
Después del inicio, debe realizar las siguientes operaciones para actualizar el archivo de configuración
[root @ ~] # actualización de supervisorctl
[root @ ~] # estado supervisorctl
tomcat RUNNING pid 12223, tiempo de actividad 0:06:31
Comandos de terminal
estado supervisorctl
supervisorctl detener tomcat
supervisorctl start tomcat
supervisorctl reiniciar tomcat
Hasta ahora, la instalación relacionada y la introducción a la configuración ha terminado. Generalmente, en la producción real, no se recomienda escribir todas las configuraciones en el mismo archivo de configuración, pero se pueden escribir por separado.