Arquitectura de clúster LVS + Construcción de clúster de alta disponibilidad mantenida

antecedentes

En esta era de TI altamente basada en información, el sistema de producción, las operaciones comerciales, las ventas y el soporte, y la administración diaria de las empresas dependen cada vez más de la información y los servicios informáticos, lo que ha aumentado enormemente la demanda de aplicaciones de tecnología de alta disponibilidad (HA). Para proporcionar sistemas informáticos o servicios de red continuos e ininterrumpidos.

1.Descripción general mantenida

1.1 Introducción a la herramienta Keepalived

Una herramienta de comprobación de estado especialmente diseñada para LVS y HA:

  • Admite conmutación por error automática (conmutación por error);
  • Admite verificación de estado del nodo (verificación de estado);
  • Sitio web oficial: http://www.keepalived.org/

Inserte la descripción de la imagen aquí

1.2 Principio de implementación de Keepalived

  • Keepalived adopta el protocolo de copia de seguridad en caliente VRRP (Protocolo de redundancia de enrutamiento virtual) para realizar la función de copia de seguridad en caliente de múltiples máquinas del servidor Linux en el software.
    Inserte la descripción de la imagen aquí

Análisis de principio:

VRRP (Protocolo de redundancia de enrutamiento virtual) es una solución de respaldo para enrutadores

  • Está compuesto por varios enrutadores: un grupo de espera activa, que proporciona servicios externos a través de una dirección IP virtual compartida;
  • Solo hay un enrutador principal en cada grupo de reserva activa para proporcionar servicios al mismo tiempo, y los otros enrutadores están en un estado redundante;
  • Si el enrutador actualmente en línea falla, otros enrutadores asumirán automáticamente la dirección IP virtual de acuerdo con la prioridad establecida y continuarán brindando servicios

1.3 Instalación y puesta en marcha de Keepalived

  • Cuando se aplica en el entorno de clúster LVS, también se necesita la herramienta de administración ipvsadm;
  • YUM instala Keepalived;
  • Habilite el servicio Keepalived.

2.Caso mantenido

2.1 Análisis de caso

  • En las aplicaciones empresariales, un solo servidor corre el riesgo de un solo punto de falla en la aplicación;
  • Una vez que ocurre un solo punto de falla, los servicios empresariales se interrumpirán, causando un gran daño.

Inserte la descripción de la imagen aquí

2.2 Explicación del caso

  • La conmutación por error de la copia de seguridad en caliente de sistema dual se realiza mediante la deriva de la dirección IP virtual, que es adecuada para varios servidores de aplicaciones;
  • Realice una copia de seguridad en caliente de sistema dual basada en servicios web
    Dirección de derivación: 192.168.70.200
    Servidores principales y en espera: 192.168.70.9, 192.168.70.10
    Servicios de aplicación proporcionados: Web
    Inserte la descripción de la imagen aquí

3. Configurar el servidor Keepalived

3.1 Configurar el servidor maestro Keepalived

3.1.1 Directorio de configuración y archivo de configuración principal

  • El directorio de configuración de Keepalived se encuentra en / etc / keepalived /
  • keepalived.conf es la
    sección global_defs {...} del archivo de configuración principal que especifica parámetros globales; la
    sección vrrp_instance nombre de instancia {...} se refiere a los parámetros de espera activa de VRRP; el
    texto del comentario comienza con el símbolo "!" ; los
    ejemplos de directorio proporcionan muchos ejemplos de configuración de referencia.

3.1.2 Opciones de configuración comunes

  • router_id HA_TEST_R1: el nombre del enrutador (servidor);
  • vrrp_instance VI_1: Define la instancia de espera activa de VRRP;
  • estado MAESTRO: Estado de espera activa, MAESTRO representa el servidor maestro;
  • interfaz ens33: la interfaz física que lleva la dirección VIP;
  • virtual_router_id 1: El número de identificación del enrutador virtual, que es consistente para cada grupo de espera activa;
  • prioridad 100: prioridad, cuanto mayor sea el valor, mayor será la prioridad, el valor predeterminado es 100;
  • advert_int 1: El número de segundos entre notificaciones (frecuencia de latido);
  • auth_type PASS: tipo de autenticación;
  • auth_pass 123456: cadena de contraseña;
  • virtual_ipaddress {vip}: especifique una dirección de deriva (VIP), puede haber más de una.

3.2 Configurar el servidor esclavo Keepalived

La configuración del servidor de respaldo Keepalived es diferente de la configuración maestra en tres opciones:

  • router_id: establecer como su propio nombre
  • estado: establecido en BACKUP
  • prioridad: el valor de prioridad es menor que el del servidor primario
  • Otras opciones son las mismas que las del maestro

4. Prueba de efecto de copia de seguridad en caliente de máquina dual Keepalived

Pruebe el efecto de la copia de seguridad en caliente de dos máquinas:

  • Los servicios web están habilitados tanto en la máquina principal como en la de reserva, y se configuran diferentes contenidos;
  • Deshabilite y habilite la tarjeta de red del servidor principal sucesivamente.

Pruebas realizadas:

  • Prueba 1: use ping para detectar la conectividad de 192.168.70.200;
  • Prueba 2: visite http://192.168.70.200 para confirmar la disponibilidad y los cambios de contenido;
  • Prueba 3: verifique los cambios en el archivo de registro / var / log / messages.

5. Basado en el proyecto de clúster de alta disponibilidad LVS + Keepalived

5.1 Entorno del proyecto

(1) Dos servidores de despacho de carga LVS

  • Dirección IP: 192.168.70.9
    IP virtual: 192.168.70.200
  • Dirección IP: 192.168.70.10
    IP virtual: 192.168.70.200

(2) Dos servidores de sitios web

  • Dirección IP: 192.168.70.11 (SERVER AA)
  • Dirección IP: 192.168.70.12 (SERVIDOR AB)
    Nota: La puerta de enlace del servidor web aquí no necesita apuntar a la tarjeta de red del despachador

(3) Un servidor compartido NFS

  • Dirección IP: 192.168.70.13

(4) Una computadora cliente para pruebas y verificación

  • Dirección IP: 192.168.70.14

Nota: Es necesario asegurarse de que el mismo segmento de red pueda comunicarse entre sí.

5.2 Propósito del experimento

  • El cliente accede a la dirección virtual 192.168.70.200, a través del servidor principal Keepalived hot standby, sondeando el acceso a los hosts Apache1 y Apache2; cuando el servidor principal falla, el servidor alternativo lo reemplazará como servidor principal y realizará la función del servidor principal. servidor
  • Construya el servicio de almacenamiento de archivos de red nfs.

5.3 Pasos del proyecto

5.3.1 Configurar el servidor de almacenamiento NFS

[root@nfs ~]# rpm -qa | grep rpcbind		//默认虚拟机已安装rpcbind模块
rpcbind-0.2.0-42.el7.x86_64
[root@nfs ~]# yum -y install nfs-utils	//确认是否安装nfs-utils软件包
已加载插件:fastestmirror, langpacks
base                                                     | 3.6 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: 
软件包 1:nfs-utils-1.3.0-0.48.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@nfs ~]# mkdir /opt/web1
[root@nfs ~]# mkdir /opt/web2
[root@nfs ~]# echo "<h1>this is web1.</h1>" > /opt/web1/index.html
[root@nfs ~]# echo "<h1>this is web2.</h1>" > /opt/web2/index.html
[root@nfs ~]# vi /etc/exports
/opt/web1 192.168.70.11/32 (ro)
/opt/web2 192.168.70.12/32 (ro)
[root@nfs ~]# systemctl restart nfs
[root@nfs ~]# systemctl restart rpcbind
[root@nfs ~]# showmount -e
Export list for nfs:
/opt/web2 (everyone)
/opt/web1 (everyone)

5.3.2 Configurar el servidor del sitio web

  • Configuración en Web1
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# showmount -e 192.168.70.13
Export list for 192.168.70.13:
/opt/web2 (everyone)
/opt/web1 (everyone)
[root@web1 ~]# mount 192.168.70.13:/opt/web1 /var/www/html
[root@web1 ~]# systemctl restart httpd
[root@web1 ~]# netstat -anpt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      55954/httpd   
[root@web1 ~]# vi web1.sh
#!/bin/bash
#lvs_dr模式 web1
ifconfig lo:0 192.168.70.200 broadcast 192.168.70.200 netmask 255.255.255.255 up
route add -host 192.168.70.200 dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &>/dev/null

[root@web1 ~]# sh web1.sh
[root@web1 ~]# ifconfig		//查看虚拟端口
[root@web1 ~]# route -n 	//查看路由
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.70.10   0.0.0.0         UG    100    0        0 ens33
192.168.70.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.70.200  0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

  • Configuración en Web2
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# mount 192.168.70.13:/opt/web2 /var/www/html
[root@web2 ~]# systemctl start httpd
[root@web2 ~]# netstat -anpt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      54695/httpd 
[root@web2 ~]# vi web2.sh
#!/bin/bash
#lvs_dr模式 web2
ifconfig lo:0 192.168.70.200 broadcast 192.168.70.200 netmask 255.255.255.255 up
route add -host 192.168.70.200 dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &>/dev/null

[root@web2 ~]# sh web2.sh
[root@web2 ~]# ifconfig		//查看虚拟端口
[root@web2 ~]# route -n 	//查看路由
kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.70.10   0.0.0.0         UG    100    0        0 ens33
192.168.70.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.70.200  0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

5.3.3 Configurar el programador LVS

Importe el paquete de software keepalived
Inserte la descripción de la imagen aquí
1) Realice la siguiente configuración en los dos programadores LVS

  • Cargue el módulo ip_vs
[root@lvs ~]# modprobe ip_vs     	  '//加载ip_vs模块'
[root@lvs ~]# cat /proc/net/ip_vs      '//查看ip_vs版本信息'
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
  • Instalar ipvsadm
[root@lvs ~]# yum -y install ipvsadm
  • Configure el entorno relevante, compile e instale
[root@lvs ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
[root@lvs ~]# tar zxvf keepalived-2.0.13.tar.gz
[root@lvs ~]# cd keepalived-2.0.13/
[root@lvs keepalived-2.0.13]# ./configure --prefix=/
[root@lvs keepalived-2.0.13]# make && make install
[root@lvs keepalived-2.0.13]# cp keepalived/etc/init.d/keepalived /etc/init.d/
[root@lvs keepalived-2.0.13]# systemctl enable keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

2) Configuración en LVS_1

[root@lvs_1 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    
    
	router_id lvs_1
}
vrrp_instance vi_1 {
    
    
	state MASTER
	interface ens33
	virtual_router_id 51
	priority 110
	advert int 1
	authentication {
    
    
	 auth_type PASS
	 auth_pass 6666
	}
	virtual_ipaddress {
    
    
	 192.168.70.200
	}
}
virtual_server 192.168.70.200 80 {
    
    
	delay_loop 6
	lb_algo rr
	lb_kind DR
	persistence_timeout 6
	protocol TCP
real_server 192.168.70.11 80 {
    
    
	weight 1
	TCP_CHECK {
    
    
	 connect_port 80
	 connect_timeout 3
	 nb_get_retry 3
	 delay_before_retry 3
	}
}
real_server 192.168.70.12 80 {
    
    
	weight 1
	TCP_CHECK {
    
    
	 connect_port 80
	 connect_timeout 3
	 nb_get_retry 3
	 delay_before_retry 3
	}
}
}
[root@lvs_1 ~]# systemctl start keepalived.service
[root@lvs_1 ~]# ipaddr

Inserte la descripción de la imagen aquí

[root@lvs_1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.70.200:80 rr
  -> 192.168.70.11:80             Route   1      0          0         
  -> 192.168.70.12:80             Route   1      0          0 

3) Configuración en LVS_2

[root@lvs_2 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    
    
        router_id lvs_2
}
vrrp_instance vi_1 {
    
    
        state BACKUP
        interface ens33
        virtual_router_id 51
        priority 105
......//其他的和LVS_1配置相同

[root@lvs_2 ~]# systemctl start keepalived.service
[root@lvs_2 ~]# systemctl status keepalived.service

Inserte la descripción de la imagen aquí

[root@lvs_2 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.70.200:80 rr persistent 6
  -> 192.168.70.11:80             Route   1      0          0         
  -> 192.168.70.12:80             Route   1      0          0

5.4 Resultados de la verificación

  • Verificar en el cliente, acceder al navegador
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

  • Ver detalles de la programación

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

  • Cuando falla el servidor principal
[root@lvs_1 ~]# systemctl stop keepalived.service

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_42449832/article/details/110940851
Recomendado
Clasificación