ActiveMQ alta disponibilidad balanceo de carga +

MQ es todo en un sistema de bus de mensajes del sistema distribuido, hay que tratar de garantizar el funcionamiento normal de mq en un entorno de producción, por lo general utilizan maestro-esclavo, cuelga maestro esclavo puede garantizar la máxima seguir trabajando, pero sólo maestro -slave aunque sólo sea para garantizar una alta disponibilidad, balanceo de carga no se puede hacer, ya que si la carga es demasiado grande mq colgar, maestro-esclavo no puede resolver este problema, debe configurar el equilibrio de carga

activemq despliegue de maestro-esclavo

  1. implementación Master-Slave sistema de archivos compartido, basado en un directorio de almacenamiento de datos compartida, corredor de múltiples Sistema de archivos compartidos de almacenamiento, que tomó el control del archivo de almacenamiento que es dueño
  2. modo compartido de bases de datos maestro-esclavo, basado en una base de datos compartida, con una primera similares
  3. replicado de manera LevelDB tienda, basada empleado del zoológico + LevelDB. LevelDB Google es una kv base de datos de alto rendimiento. Esta es la única manera de añadir después ActiveMQ5.9, el principio es el uso de la coordinación ZooKeeper elegir a un nodo como un maestro, el nodo intermediario master seleccionado conexiones de cliente abierto y acepta. Si el maestro de colgar, obtener los datos de más de esclavo se convierte en maestro. Después de la recuperación nodo re-hang se puede añadir a la red y está conectado en el modo maestro-esclavo.

Los dos primeros para asegurar una alta disponibilidad y el rendimiento del sistema de archivos o base de datos compartida para garantizar una alta disponibilidad mq, a veces no es fácil de cumplir con lo anterior, se utiliza una tercera vía para construir un cluster maestro-esclavo.

medio ambiente

Dado que sólo tenemos dos anfitriones, vamos a configurar un maniquí de prueba racimos maestro-esclavo en cada host, y luego volver a conectarse entre sí para completar los dos grupos de equilibrio de carga

 

jdk : jdk8
zookeeper: 3.2
activemq: 5.15
主机1:192.168.0.103  
主机2:192.168.0.104 

Crear un clúster maestro-esclavo

pasos:

  1. Descargar -> unpack -> Copia 3 copias ActiveMQ (5.9 o posterior) para asegurarse de que no hay ningún problema que corre solo

2. Modificar la persistencia de la forma en que cada activemq

 

vi  ACTIVEMQ_HOME/conf/activemq.xml

El kahadb predeterminado modificado de la siguiente manera, empleado del zoológico agrupar lo hice, muy problemático el uso directo de un único punto no afecta Zookeeper

 

//directoryleveldb数据保存路径
//bind 服务端口
//replicas表示master-slave集群中节点个数
//zkAddress依次指定三台服务器的ip和ZooKeeper的监听端口
//zkPah在zookeeper中注册的节点路径
//hostname为每一台服务器的ip地址,三台服务器根据实际情况修改
<persistenceAdapter>
     <replicatedLevelDB directory="${activemq.data}/leveldb"  replicas="3"
    bind="tcp://0.0.0.0:62621"
    zkAddress="localhost:2181,localhost:2182,localhost:2183"
    hostname="localhost"
    zkPath="/activemq/leveldb-stores"/> 
</persistenceAdapter>

3. Modificar el puerto de servicio TCP activemq
Esta configuración también ACTIVEMQ_HOME / conf / activemq.xml, por defecto 61616, la misma máquina no se puede repetir, de lo contrario el conflicto de puertos, estoy aquí para el 61616, 61617, 61618
4. Modificar el puerto embarcadero
activemq ejecutar el servicio utilizando el embarcadero ACTIVEMQ_HOME modificador / conf / jetty.xml tres puertos no se puede garantizar la misma
forma secuencial a 8161, 8162, 8163

  1. Comienzan empleado del zoológico, comienzan tres casos activemq
  2. Verificar
    de entrada del cliente Zookeeper
    ejecutar: ls / activemq / LevelDB-tiendas
    Ver nodo encontró tres nodos en / ActiveMQ / LevelDB-tiendas, una para cada servicio activemq

    image.png


    Ver los datos de cada nodo, que no elegidos nula es el maestro, para el esclavo es nulo

    image.png

También se pueden descargar las herramientas de visualización zookeeper:
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip ;
ejecutar ZooInspector \ build \ cuidador del zoológico-dev- ZooInspector.jar puede ver los datos del nodo

ps: sólo se aceptan solicitudes maestro, esclavo no acepta la solicitud, no se puede utilizar la interfaz administrativa

Configurar el equilibrio de carga

  1. Hemos construido un cluster buena una, puede utilizar el comando scp para copiar un archivo a otro de tres activemq puede conseguir otro host de clúster

 

#activemqCluster  是我本机的activemq 集群安装目录
scp -r  activemqCluster  [email protected]:/soft
  1. Enlace Cluster 2 (configuración antes persistenceAdapter etiqueta) en el grupo activemq.xml 1:

 

<networkConnectors>
    <networkConnector uri="static:(tcp://192.168.0.103:61616,tcp://192.168.0.103:61617,tcp://192.168.0.103:61618)" duplex="false"/>
</networkConnectors>
  1. clúster Link 1 (configuración antes de etiqueta persistenceAdapter) en el grupo 2 activemq.xml en:

 

<networkConnectors>
    <networkConnector uri="static:(tcp://192.168.0.104:61616,tcp://192.168.0.104:61617,tcp://192.168.0.104:61618)" duplex="false"/>
</networkConnectors>

Esta realización ActiveMQ clúster de equilibrio de carga de alta disponibilidad.
Proyecto activemq configurado dirección debe decir:
conmutación por error :( tcp: //192.168.0.103: 61616, tcp: //192.168.0.103: 61617, tcp: //192.168.0.103: 61618) el Aleatorizar = falso?
O:
conmutación por error: ( tcp: //192.168.0.104: 61616, tcp: //192.168.0.104: 61617, tcp: //192.168.0.104: 61618) el Randomize = false?

prueba

1. Prueba de maestro-esclavo, el maestro fuera (61616), 61617, y automáticamente cambiar al reconectar el maestro (integridad de los datos no se puede garantizar cuando se cambia) de nuevo para cerrar un servicio de 61.617, más de la mitad de colgar, el servicio no está disponible, el cliente se bloquea ya no pueden enviar mensajes

 

image.png

  1. El equilibrio de carga de prueba
    arquitectura final es el maestro-esclavo se comunican unos con otros dos grupos, dos grupos pueden consumir los mensajes de los demás, pero si se bloquea el cliente se inscribe el cluster del lado del cliente está conectado todavía no puede enviar un mensaje, que el activemq simplemente no balanceo de carga de consumo de equilibrio de carga, alta disponibilidad está garantizada por el maestro-esclavo.

     

     

    Hemos puesto en marcha dos servicios al consumidor el mismo nombre de la cola para escuchar
    mq direcciones están configuradas

 

failover:(tcp://192.168.0.103:61616,tcp://192.168.0.103:61617,tcp://192.168.0.103:61618)?randomize=false
和:
failover:(tcp://192.168.0.104:61616,tcp://192.168.0.104:61617,tcp://192.168.0.104:61618)?randomize=false

Después de iniciar el envío de mensajes mantenido a agruparse 104, los consumidores pueden encontrar dos mensajes enviados al grupo de consumidores 104, pero el registro de impresión algunas diferencias, 103 grupos de servicios de consumo conectados conectados a la pantalla 104 por Matser FailoverTransport

image.png

 


Hasta el momento, el equilibrio de carga de alta disponibilidad + creó se ha completado.
En una nota final, la prueba encontró que el consumo en el mensaje interruptor maestro-esclavo todavía puede ser un problema, no es infalible
 

https://blog.csdn.net/suifeng629/article/details/93210416

Publicado 40 artículos originales · ganado elogios 57 · Vistas de 250.000 +

Supongo que te gusta

Origin blog.csdn.net/With__Sunshine/article/details/105314329
Recomendado
Clasificación