Directorio de artículos
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/
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.
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.
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
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
- 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
5.3.3 Configurar el programador LVS
Importe el paquete de software keepalived
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
[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
[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
-
Ver detalles de la programación
- Cuando falla el servidor principal
[root@lvs_1 ~]# systemctl stop keepalived.service