El shell de Linux implementa el servicio HTTP

  

Escenario de requisito


Uso del servidor proxy HAProxy para equilibrar la carga Mysql es una solución común. Para mejorar la facilidad de uso, cuando hay un problema con Mysql, como el servidor Si falla, o se interrumpe la replicación de datos, es mejor informar a HAProxy de inmediato y luego detener el reenvío de sus solicitudes.

HAProxy ¿Cómo puedo saber si hay un problema con Mysql?

Solucionar ideas

(1) Escriba un script de shell para verificar el estado de mysql y luego muestre el resultado, por ejemplo, cuando el estado es normal, devuelva el código de estado 200 y la información correcta; de lo contrario, devuelva el código de estado 503 y Mensaje de error

(2) Implemente un servicio HTTP. Después de solicitar la conexión, llame al script de verificación anterior y devuelva el resultado de la verificación

(3) HAProxy accede al servicio HTTP de acuerdo con la información del resultado devuelto. Para determinar si este mysql está disponible

¿Cómo implementar rápida y fácilmente un servicio HTTP que pueda llamar shell scripts?

La solución más general es xinetd

xinetd es el demonio de Linux, el nombre completo es demonio interent extendido, el demonio de red extendido

xinetd puede abrir un puerto y esperar la conexión Puede decirle a xinetd qué secuencia de comandos debe ejecutar. Cuando entra una conexión, xinetd ejecutará la secuencia de comandos y luego devolverá directamente el contenido de la salida de la secuencia de comandos

HAProxy -> xinetd -> mysql-check script, HAProxy obtendrá Información de estado de MySQL


caso de configuración de xinetd


La siguiente implementación de un ejemplo simple de xinetd, abra el puerto 9200, devuelva un script de prueba Contenido de salida

Si no hay xinetd en la máquina, instálelo primero. Bajo centos7, puede usar el comando yum install xinetd

(1) secuencia de comandos de prueba

#! /Bin /bash

echo `uptime |  Egrep -o 'up ([0-9] +) días' |  Awk '{print $ 2}' `

Este script se usa para generar el número actual de días en línea del servidor

Agregar permisos ejecutables al script con chmod + x

(2) Xinetd service

Por ejemplo, el nombre del servicio es helloworld, el nombre del archivo es /etc/xinetd.d/helloworld, y el contenido es

service helloworld

{

disable = No

puerto = 9200

socket_type = flujo

protocol = tcp

wait = no

usuario = root

server = /root/test.sh

server_args = test

}

puerto Especifica el puerto para escuchar en

servidor especifica el script para ejecutar < Br>

(3) Únase a la lista de servicios

Modificar /etc /services

Encuentre la ubicación del puerto 9200, comente el original, agregue el servicio helloworld

Helloworld 9200 /tcp

# wap-wsp 9200 /tcp

# wap-wsp 9200 /udp

(4) Reiniciar xinetd

centos El comando de reinicio es:

systemctl restart xinetd.service

(5) Prueba

Prueba con nc y telnet respectivamente

nc localhost 9200


telnet localhost 9200


El contenido de ejecución del script se puede imprimir correctamente, complete el ejemplo

Copyright © Conocimiento de Windows All Rights Reserved