Implementación del clúster de balanceo de carga de alta disponibilidad de MyCat

_Implementación de clúster de equilibrio de carga de alta disponibilidad de MyCat (HAProxy+Keepalived+MyCat)

 

 

Preguntas a abordar en este curso:

 

1. Versión de software

Sistema operativo: CentOS-6.6-x86_64
Versión JDK: jdk1.7.0_72
Versión Keepalived: keepalived-1.2.18.tar.gz
Versión HAProxy: haproxy-1.5.16.tar.gz
Versión MyCat: Mycat-server-1.4-release- 20151019230038-linux.tar.gz
Versión de MySQL: mysql-5.6.26.tar.gz

2. Planificación del entorno de implementación

nombre IP nombre de la CPU configuración
Servidor HAProxy 1 VIP:192.168.175.220|192.168.175.202 mini2 (maestro predeterminado) -
Servidor HAProxy 2 VIP:192.168.1.220|192.168.175.203 mini3 (Copia de seguridad predeterminada) -
Anfitrión 1 de MyCat 192.168.175.200 Huachao -
Anfitrión 2 de MyCat 192.168.175.201 mini1 -
Nodo maestro de MySQL 192.168.175.200 Huachao -
Nodo esclavo de MySQL 192.168.175.201 mini1 -

3. El diagrama de la arquitectura de implementación del clúster de equilibrio de carga de alta disponibilidad de MyCat es el siguiente:

Arquitectura de separación de clústeres de alta disponibilidad de MySQL

Explicación gráfica:
(1) HAProxy logra la alta disponibilidad y el equilibrio de carga del clúster de múltiples nodos de MyCat, mientras que la propia alta disponibilidad de HAProxy se puede lograr a través de Keepalived. Por lo tanto, HAProxy y Keepalived deben instalarse en el host HAProxy al mismo tiempo. Keepalived es responsable de adelantar el vip (ip virtual) para el servidor. Después de que el vip se adelanta, se puede acceder al host a través de la ip original o directamente a través de el vip (virtual) .
(2) Keepalived se adelanta a vip con prioridad, que está determinada por el atributo de prioridad en la configuración de keepalived.conf. Pero, en general, el servicio Keepalived en cualquier host que comience primero tomará el vip, incluso si es un esclavo, siempre que comience primero, puede tomarlo (preste atención para evitar la preferencia de recursos Keepalived).
(3) HAProxy es responsable de distribuir las solicitudes de VIP a los nodos del clúster MyCat, que desempeña una función de equilibrio de carga. Al mismo tiempo, HAProxy también puede detectar si MyCat está vivo y HAProxy solo reenviará la solicitud al MyCat superviviente.
(4) Si un servidor en el clúster de alta disponibilidad Keepalived+HAProxy deja de funcionar, Keepalived en otro servidor en el clúster se adelantará inmediatamente al VIP y se hará cargo del servicio. En este momento, el nodo HAProxy que se adelantó al VIP puede continuar proporcionar servicios.
(5) Si un servidor MyCat está inactivo, HAPorxy no reenviará la solicitud al MyCat inactivo, por lo que MyCat aún está disponible. En resumen: HAProxy implementa la alta disponibilidad y el equilibrio de carga de MyCat, y Keepalived implementa la alta disponibilidad de HAProxy.

4. Despliegue del nodo 2 de HAProxy

Host HAProxy 2 (edu-haproxy-02, 192.168.175.201) Consulte el curso anterior "Arquitectura de alta disponibilidad - Sección 16 -
Implementación de clúster MyCat (HAProxy+MyCat)" para la implementación punto a punto y la configuración correspondiente.
Preste atención al ajuste del archivo de configuración:
al implementar varios nodos, los valores de configuración del nodo y la descripción en el archivo de configuración haproxy.cfg deben ajustarse en consecuencia.
Página de información de estado del nodo 1 de HAProxy: http://192.168.175.202:48800/admin-status

Página de información de estado del nodo 2 de HAProxy: http://192.168.175.203:48800/admin-status

5. Introducción a Keepalived (sitio web oficial: http://www.haproxy.org/ )

  Keepalived es un servidor de alto rendimiento de alta disponibilidad o solución de espera en caliente. Keepalived se puede utilizar para evitar fallas de un solo punto del servidor. Al cooperar con Haproxy, puede lograr una alta disponibilidad de los servicios front-end web.
  Keepalived se basa en el protocolo VRRP y utiliza el protocolo VRRP para lograr una alta disponibilidad (HA). El protocolo VRRP (Protocolo de redundancia de enrutador virtual) es un protocolo que se utiliza para implementar la redundancia del enrutador. El protocolo VRRP virtualiza dos o más dispositivos de enrutador en un solo dispositivo y proporciona IP de enrutador virtual (uno o más) externamente. , si el enrutador que realmente posee esta IP externa funciona normalmente, es la MASTER, o se elige a través de un algoritmo. MASTER implementa varias funciones de red para la IP del enrutador virtual, como solicitud ARP, ICMP y reenvío de datos, etc., otros dispositivos no poseen la IP virtual y el estado es RESPALDO. Excepto para recibir la información de notificación de estado VRRP de MASTER , no se realiza ninguna comunicación externa Función de Internet. Cuando el host falla, BACKUP asumirá las funciones de red del MASTER original.
  El protocolo VRRP usa datos de multidifusión para transmitir datos VRRP. Los datos VRRP usan una dirección MAC de fuente virtual especial para enviar datos en lugar de la dirección MAC de su propia tarjeta de red. Cuando VRRP se está ejecutando, solo el enrutador MAESTRO envía regularmente información de notificación VRRP, lo que indica que el MASTER está funcionando normalmente y la IP del router virtual (grupo), BACKUP solo recibe datos VRRP y no envía datos, si no se recibe información de notificación del MASTER dentro de un cierto período de tiempo, cada BACKUP se declarará como MASTER, enviar información de notificación y volver a ejecutar el estado de elección MAESTRO.

6. Instalación de Keepalived (192.168.1.191, 192.168.1.192)

Dirección de descarga de Keepalive

  1. Cargue o descargue keepalived (keepalived-1.2.18.tar.gz) al directorio /usr/local/src

  2. Se requiere descomprimir e instalar Openssl para instalar keepalived
    # yum install gcc gcc-c++ openssl openssl-devel
    # cd /usr/local/src
    # tar -zxvf keepalived-1.2.18.tar.gz
    # cd keepalived-1.2.18
    # ./configure --prefix=/usr/local/keepalived
    # make && make install
  1. Instale keepalived como un servicio del sistema Linux: debido a que
    la ruta predeterminada de keepalived no está instalada (la ruta predeterminada es /usr/local), una vez completada la instalación, es necesario realizar algunos trabajos. Copie el
    archivo de configuración predeterminado en la ruta predeterminada.
    # mkdir /etc/keepalived
    # cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    la secuencia de comandos del servicio keepalived a la dirección predeterminada
    # cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
    # cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    # ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
    # ln -s /usr/local/keepalived/sbin/keepalived /sbin/
    para establecer el inicio del servicio keepalived
    # chkconfig keepalived on

  2. Modificar el archivo de configuración de Keepalived
    (1) Archivo de configuración del nodo MASTER (192.168.175.202)

# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
## keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP
router_id edu-haproxy-01 ## 标识本节点的字条串,通常为 hostname
}
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。
## 如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。
## 如果脚本执行结果非 0,并且 weight 配置的值小于 0,则优先级相应的减少。
## 其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh" ## 检测 haproxy 状态的脚本路径
interval 2 ## 检测时间间隔
weight 2 ## 如果条件成立,权重+2
}
## 定义虚拟路由, VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state BACKUP ## 默认主设备( priority 值大的)和备用设备( priority 值小的)都设置为 BACKUP,
## 由 priority 来控制同时启动情况下的默认主备,否则先启动的为主设备
interface eth1 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth1
virtual_router_id 91 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用,
## 相同的 VRID 为一个组,他将决定多播的 MAC 地址
priority 120 ## 节点优先级,值范围 0-254, MASTER 要比 BACKUP 高
nopreempt ## 主设备( priority 值大的)配置一定要加上 nopreempt,否则非抢占也不起作用
advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s
## 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111 ## 真实生产,按需求对应该过来
}
## 将 track_script 块加入 instance 配置块
track_script {
chk_haproxy ## 检查 HAProxy 服务是否存活
}
## 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
192.168.175.220 ## 虚拟 ip,可以定义多个,每行一个
}
}

(2) Archivo de configuración del nodo BACKUP (192.168.175.203):
# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
router_id edu-haproxy-02
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 91
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.175.220
}
}

Atención especial: si el modo no preventivo no tiene efecto, después de que se recupere el nodo defectuoso de Keepalived, volverá a activarse el vip preventivo, por lo que existe el riesgo de que se
desconecte el flash debido al cambio de vip (explicación en video). De acuerdo con la configuración anterior, se configura el modo no preventivo Keepalived. La configuración y los puntos de atención son los siguientes:

(1) El estado del dispositivo maestro y el dispositivo esclavo están configurados como RESPALDO
(2) No configure mcast_src_ip ( la dirección IP local) en el dispositivo maestro y el dispositivo esclavo)
(3) El dispositivo maestro predeterminado (nodo Keepalived con un valor de prioridad alto) debe configurarse con no preferencia, de lo contrario, la no preferencia no funcionará
. 224.0.0.18 es
la comunicación IP de las comprobaciones de estado del maestro y
# iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
# iptables -I OUTPUT -o eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
la copia de seguridad) (eth0 es el nombre del dispositivo de la tarjeta de red del host, y el servidor en el entorno de producción puede usar una tarjeta de red independiente para manejar la multidifusión y la detección de latidos, etc.) Reinicie el firewall
# service iptables save
:
# service iptables restart

  1. Escriba el script de detección de estado de Haproxy /etc/keepalived/haproxy_check.sh (ya configurado en keepalived.conf)
    El script requiere: si haproxy deja de ejecutarse, intente iniciarlo
    ; la ip virtual establecida en la máquina de RESPALDO. El contenido es el siguiente:
    # mkdir -p /usr/local/keepalived/log
    # vi /etc/keepalived/haproxy_check.sh
#!/bin/bash
START_HAPROXY="/etc/rc.d/init.d/haproxy start"
STOP_HAPROXY="/etc/rc.d/init.d/haproxy stop"
LOG_FILE="/usr/local/keepalived/log/haproxy-check.log"
HAPS=`ps -C haproxy --no-header |wc -l`
date "+%Y-%m-%d %H:%M:%S" >> $LOG_FILE
echo "check haproxy status" >> $LOG_FILE
if [ $HAPS -eq 0 ];then
echo $START_HAPROXY >> $LOG_FILE
$START_HAPROXY >> $LOG_FILE 2>&1
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
echo "start haproxy failed, killall keepalived" >> $LOG_FILE
killall keepalived
fi
fi

Después de guardar, otorgue permiso de ejecución al script:
# chmod +x /etc/keepalived/haproxy_check.sh

  1. 启动 Keepalived
    # service keepalived start
    Iniciando keepalived: [ OK ]

Comando de administración del servicio Keepalived:
Detener: service keepalived stop
Iniciar: service keepalived start
Reiniciar: service keepalived restart
Ver estado:service keepalived status

7. Prueba de alta disponibilidad de Keepalived + Haproxy

  1. Apague Haproxy en 192.168.1.191, Keepalived lo reiniciará
    # service haproxy stop

  2. Deshabilite Keepalived en 192.168.1.191, VIP (192.168.1.190) será reemplazado por 192.168.1.192
    # service keepalived stop

    imagen.png


    Después de detener Keepalived, el VIP (192.168.1.190) en la interfaz de red del nodo 192.168.1.191 desaparecerá

    imagen.png


    Para ver el MAC correspondiente al VIP en este momento, use el comando CMD para verlo en Windows:

    imagen.png


    Significa que el VIP se desplazó al host físico 192.168.1.192 en este momento
    y luego accedió al clúster de Haproxy a través del VIP, y el acceso también es 192.168.1.192
    http://192.168.1.190:48800/admin-status

Supongo que te gusta

Origin blog.csdn.net/zxl2016/article/details/106272892
Recomendado
Clasificación