Recuperación del tiempo de inactividad del clúster espejo de RabbitMQ, equilibrio de carga y actividad múltiple en salas de ordenadores
Motivo: en el proceso de desarrollo del proyecto real, necesita utilizar RabbitMQ para implementar la función de cola de mensajes, pero no está satisfecho después de implementar esta función. Ahora que la ha aprendido una vez, debe hacerlo. profundiza. Conócela, comprende la estructura de un contenido relevante y mejora.
RabbitMQ En un clúster espejo, las máquinas son en realidad paralelas y todos los nodos se replican entre sí
Descripción del escenario:
A es el maestro
B es un esclavo
A se está ejecutando normalmente, pero B está inactivo. Solo necesita iniciar B y B se unirá automáticamente al clúster
A se está ejecutando normalmente. , pero B está caído. B se unirá automáticamente al clúster
Si tanto A como B están inactivos, siempre que A comience antes que B
Si tanto A como B están inactivos, A no comenzará Incluso si. B se inicia, B no se puede iniciar directamente
Tanto B como C se unen al clúster, donde A es el maestro, y B y C deben olvidarse del clúster de A, y B y C no se pueden iniciar
B y C se unen a A como maestro, mientras que B y C deben ser olvidados del grupo de A, y B y C no pueden comenzar
A es el maestro, pero B y C no pueden start
A es el esclavo. C No se puede iniciar
RabbitMQv3.2 proporciona un parámetro de comando para borrar el nodo del clúster fuera de línea, lo que significa que el nodo no puede iniciar
HAProxy es un equilibrador de carga que proporciona alta disponibilidad (anteriormente La mayoría de ellos usan Nginx, es muy fácil lograr el equilibrio de carga con el proxy inverso ascendente), HAProxy puede proporcionar un equilibrio de carga basado en TCP/IP y se puede utilizar para lograr un equilibrio de carga basado en TCP/IP.
Ventajas:
1. Trabajando por encima de la séptima capa de la red, puede crear algunas estrategias de desvío para aplicaciones http, como apuntar a nombres de dominio, estructuras de directorios, etc., y sus reglas regulares son mejores que HAProxy, es más potente y flexible y, por lo tanto, es, con diferencia, el más popular.
2. Nginx depende poco de la estabilidad de la red y, en teoría, se puede hacer ping a través de la función de carga.
3. La instalación y configuración de Nginx es relativamente simple y las pruebas también son relativamente convenientes. Básicamente, puede imprimir registros de errores.
4. Puede soportar una alta presión de carga y es estable. Si el hardware no es malo, generalmente puede admitir decenas de miles de concurrencias.
5. Nginx puede detectar fallas internas del servidor a través del puerto, como devolver códigos de estado, tiempos de espera, etc. en función del servidor que procesa las páginas web y volver a enviar la solicitud de devolución de error a otro nodo.
6. No sólo es un excelente software de equilibrador de carga/proxy inverso, sino que también es un potente servidor de aplicaciones web. Se puede utilizar como página web estática y servidor de imágenes, y tiene buena estabilidad en entornos de mucho tráfico.
7. Puede utilizarse como proxy inverso de nivel medio.
Desventajas:
1. El alcance de la aplicación es pequeño y solo admite los protocolos http, https y correo electrónico.
2. La verificación de estado del servidor back-end solo admite la detección basada en puertos y no admite la detección de URL.
3. Hay relativamente pocas estrategias de equilibrio de carga: sondeo, peso , IP_hash, url_hash
HAProxy
Ventajas:
1. HAProxy admite hosts virtuales y puede funcionar en las capas 4 y 7 (admite múltiples segmentos de red) p>
2. Las ventajas de HAProxy pueden compensar algunas deficiencias de Nginx, como la compatibilidad con la retención de sesiones y la guía de cookies; también admite la obtención del estado del servidor URL especificado mediante la detección del backend;
3. HAProxy es similar a LVS, es solo un software de equilibrio de carga puramente en términos de eficiencia, HAProxy tendrá una mejor velocidad de equilibrio de carga que Nginx y también será mejor que Nginx en procesamiento concurrente; .
4. HAProxy admite el reenvío de equilibrio de carga del protocolo TCP, el equilibrio de carga de la lectura de MySQL, la detección y el equilibrio de carga de los nodos MySQL de back-end.
5. HAProxy tiene muchas estrategias de equilibrio de carga. Ahora HAProxy tiene los siguientes ocho algoritmos de equilibrio de carga
Desventajas:
1. No es compatible con POP/SMTP. protocolo
2. No es compatible con el protocolo SPDY
3. No es compatible con la función de almacenamiento en caché HTTP. Muchos proyectos lb de código abierto ahora tienen más o menos capacidades de almacenamiento en caché HTTP.
4. Recargar la función de configuración requiere reiniciar el proceso. Aunque también hay un reinicio suave, no es tan fluido y amigable como la recarga de Nginx.
5. La compatibilidad con el modo multiproceso no es lo suficientemente buena
HAProxy + Keepalived (nodo de equilibrio de carga para lograr alta disponibilidad)
Coloque el contenido del archivo de configuración anterior en /etc /haproxy/haproxy.cfg
Inicie HAProxy
Después de una activación exitosa, puede ir a la consola para verificar
Cree un canal de datos a través de la federación configuración
En este momento, debe definir un nodo ascendente (nodo 166) y un nodo descendente (nodo 167). La alianza se envía en una dirección, lo que equivale a. enviar el mensaje a un intercambio ascendente y luego reenviarlo a la cola descendente
1. Cree un centro de conmutación y una cola en el nodo descendente y vincule la clave de enrutamiento para recibir datos
2. Cree una regla de alianza ascendente en el nodo descendente para sincronizar los datos con el nodo ascendente
3. No hay datos en el estado de federación del nodo descendente, por lo que necesitamos para crear una política para garantizar que el canal esté conectado
4. Ingrese al menú Política del nodo descendente. El patrón es una expresión regular, lo que significa que todos los intercambios y colas que comienzan con abajo coinciden
5. En este momento, puede ver las reglas de intercambio y cola.
6. En el menú de estrategia del nodo descendente, Pattern es una expresión regular.
8.
El centro de conmutación de redirección que se muestra en gris no puede enviar mensajes. Si se van a enviar, se enviarán al centro de conmutación de enlace descendente.
Este centro de conmutación de redireccionamiento no puede El mensaje se envía y, si se envía, se enviará al centro de conmutación descendente.
9. Enviamos un mensaje al centro de intercambio descendente en el nivel ascendente para realizar pruebas.
Puedes ver este mensaje en el nivel descendente
10. Porque el nivel ascendente Y el nodo es solo una estación de tránsito. Si las órdenes ascendentes y ea también quieren enviar mensajes en el intercambio descendente, ¿qué debemos hacer?
Simplemente establezca la relación vinculante localmente
¡No crea que simplemente completar la función todos los días es suficiente! ¡Este tipo de pensamiento no está permitido!