El despliegue de clústeres de alta disponibilidad LVS + Keepalived (¡imágenes y textos detallados!)

El despliegue de clústeres de alta disponibilidad LVS + Keepalived (¡imágenes y textos detallados!)

1. Clúster de alta disponibilidad LVS + Keepalived

1.LVS

Servidor virtual Linux

LVS es en realidad equivalente a una aplicación virtualizada basada en la dirección IP y propone una solución eficiente para el equilibrio de carga basada en la dirección IP y la distribución de solicitudes de contenido.

2. Función y rol mantenidos

Admite conmutación por error automática (Conmutación por error)

Verificación de estado del nodo de soporte (verificación de estado)

Determine la disponibilidad del programador de carga LVS y del servidor de nodo. Cuando el host maestro falla, cambie al nodo de respaldo para garantizar el funcionamiento normal. Cuando el maestro falla, se reincorporará al clúster y el negocio volverá al nodo maestro.

3. Análisis del principio de implementación de Keepalived

  1. Keepalived adopta el protocolo de copia de seguridad en caliente VRRP para realizar la función de copia de seguridad en caliente de múltiples máquinas del servidor Linux
  2. VRRP (Protocolo de redundancia de enrutamiento virtual) es una solución de respaldo para enrutadores.
  3. Varios enrutadores forman un grupo de respaldo activo y brindan servicios al exterior a través de una dirección IP virtual compartida
  4. Solo hay un enrutador principal en cada grupo de espera activa para proporcionar servicios al mismo tiempo, y los otros enrutadores están en un estado redundante
  5. Si el enrutador actualmente en línea falla, otros enrutadores tomarán automáticamente la dirección IP virtual de acuerdo con la prioridad establecida y continuarán brindando servicios

En segundo lugar, el problema de ARP en LVS-DR

De acuerdo con la entrada de la tabla ARP, el enrutador reenvía el nuevo mensaje de solicitud a RealServer, lo que hace que el VIP del Director deje de ser válido.

  • Solución:

Para procesar el servidor de nodo, configure el parámetro del kernel arp_announce = 2: el sistema no usa la dirección de origen del paquete IP para establecer la dirección de origen de la solicitud ARP, sino que selecciona la dirección IP de la interfaz de envío.
Configurar métodos para resolver los dos problemas de ARP

  • Modifique el archivo /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

Tres pasos de implementación de clúster en modo DR con equilibrio de carga LVS

Configuración del entorno:

Anfitrión Sistema operativo dirección IP Herramientas / servicios necesarios
Programador de carga principal CentOS7
7-2
ens33: 192.168.2.4 ipvsadm 、 keepalived
Programador de carga de respaldo CentOS7
7-1
ens33: 192.168.2.3 ipvsadm 、 keepalived
Servidor NFS CentOS7
7-3
ens33: 192.168.2.5 rpcbind 、 nfs-utils
Servidor de nodo web 1 CentOS7
7-4
192.168.2.6
lo:0(VIP):192.168.2.100
rpcbind 、 nfs-utils 、 httpd
Servidor de nodo web 2 CentOS7
7-5
192.168.2.7
lo: 0 (VIP): 192.168.2.100
rpcbind 、 nfs-utils 、 httpd
Cliente Windows10 192.168.2.10

Nota:

1) El servidor, el programador y el cliente no deben tener la misma dirección mac; de lo contrario, se informará un error. En la misma LAN, no se requieren puerta de enlace ni DNS.

2) El programador aquí ya no necesita la tarjeta de red virtual ens33: 0

Inserte la descripción de la imagen aquí

1. Implementar almacenamiento compartido

Servidor NFS: ens33: 192.168.2.5

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind

systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/test1
mkdir /opt/test2

chmod 777 /opt/test1
chmod 777 /opt/test2

vim /etc/exports
/opt/test1 192.168.2.0/24(rw,sync)
/opt/test2 192.168.2.0/24(rw,sync)

exportfs -rv

Inserte la descripción de la imagen aquí

2. Configure el servidor de nodo

Servidor de nodo web 1: ens33: 192.168.2.6 lo: 0 (VIP): 192.168.2.100
Servidor de nodo web 2: ens33: 192.168.2.7 lo: 0 (VIP): 192.168.2.100 La
siguiente es la misma configuración de los dos servidores

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

(1) Configurar la dirección IP virtual (VIP: 192.168.2.100)

#此地址仅用做发送 Web 响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。
#因此使用虚接口 lo:0 来承载 VIP 地址,并为本机添加一条路有记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.2.100
NETMASK=255.255.255.255
ONBOOT=yes

ifup lo:0
ifconfig lo:0

#设置临时的路由,重启失效;禁锢路由
route add -host 192.168.2.100 dev lo:0
#查看路由
route -n

#开机自动添加路由,生产环境应该用这个
vim /etc/rc.local
/sbin/route add -host 192.168.2.100 dev lo:0
chmod +x /etc/rc.d/rc.local

Inserte la descripción de la imagen aquí

(2) Ajuste los parámetros de respuesta ARP del kernel

vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore = 1 #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2 #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p

yum install -y nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl enable rpcbind
systemctl start httpd.service
systemctl enable httpd.service

Inserte la descripción de la imagen aquí

(3) Los dos primeros pasos de los dos servidores web son los mismos, pero la siguiente configuración no es la misma

Servidor Web1: ens33: 192.168.2.6 lo: 0 (VIP): 192.168.2.100

showmount -e 192.168.2.5

mount.nfs 192.168.2.5:/opt/test1 /var/www/html
df -h
echo 'this is test1 web!' > /var/www/html/index.html

Inserte la descripción de la imagen aquí

Servidor Web2: ens33: 192.168.2.7 lo: 0 (VIP): 192.168.2.100

showmount -e 192.168.2.5

mount.nfs 192.168.2.5:/opt/test2 /var/www/html
df -h
echo 'this is test2 web!' > /var/www/html/index.html

Inserte la descripción de la imagen aquí

3. Configure el programador de carga

Programador de carga principal: 192.168.2.4 lo: 0 (VIP): 192.168.2.100

(1) Apague el firewall y cargue el módulo ip_vs

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

#加载ip_vs模块,并安装ipvsadm工具
modprobe ip_vs
cat /proc/net/ip_vs
yum install -y ipvsadm

Inserte la descripción de la imagen aquí

(2) Ajustar los parámetros de respuesta del proceso

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应,不充当路由器,
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

Inserte la descripción de la imagen aquí

(3) Configurar la estrategia de distribución de carga

Programador de carga principal: 192.168.2.4

ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

#清除原有策略
ipvsadm -C
ipvsadm -A -t 192.168.2.4:80 -s rr
ipvsadm -a -t 192.168.2.4:80 -r 192.168.2.6:80 -g #如果这里是隧道模式,直接将-g替换成-i即可
ipvsadm -a -t 192.168.2.4:80 -r 192.168.2.7:80 -g

#查看节点状态,Route代表 DR模式
ipvsadm -ln

Inserte la descripción de la imagen aquí

Programador de carga de respaldo: 192.168.2.3

ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

#清除原有策略
ipvsadm -C
ipvsadm -A -t 192.168.2.3:80 -s rr
ipvsadm -a -t 192.168.2.3:80 -r 192.168.2.6:80 -g #如果这里是隧道模式,直接将-g替换成-i即可
ipvsadm -a -t 192.168.2.3:80 -r 192.168.2.7:80 -g

#查看节点状态,Route代表 DR模式
ipvsadm -ln

Inserte la descripción de la imagen aquí

(4) Configurar keeplived

Programador de carga principal: 192.168.2.4
Programador de carga en espera: 192.168.2.3

yum -y install keepalived
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak

Inserte la descripción de la imagen aquí

Modificar el archivo de configuración

vim keepalived.conf
......
#定义全局参数
global_defs {

#10行修改,邮件服务指向本地
smtp_server 127.0.0.1

#12行修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
router_id LVS_01

#14行修改;加注释;vrrp_strict:严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
#vrrp_strict

}
#定义VRRP热备实例参数
vrrp_instance VI_1 {

#20行修改;指定热备状态,主为MASTER,备为BACKUP
state MASTER

#21行修改;指定承载vip地址的物理接口
interface ens33

#22行修改;指定虚拟路由器的ID号,每个热备组保持一致
virtual_router_id 10

#23行修改;指定优先级,数值越大优先级越高,主为100,备为90
priority 100
#通告间隔秒数(心跳频率)
advert_int 1
#定义认证信息,每个热备组保持一致
authentication {
#认证类型
auth_type PASS

#27行修改,指定验证密码,主备服务器保持一致
auth_pass 123456
}

#指定群集vip地址
virtual_ipaddress {
192.168.2.100
}
}

#34行修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.2.100 80 {
#健康检查的间隔时间(秒)
delay_loop 6
#指定调度算法,轮询(rr)
lb_algo rr
#37行修改,指定群集工作模式,直接路由(DR)
lb_kind DR
#连接保持时间(秒)
persistence_timeout 50
#应用服务采用的是TCP协议
protocol TCP

#41行修改,指定第一个Web节点的地址、端口
real_server 192.168.2.6 80 {
#节点的权重
weight 1

#43行删除,添加以下健康检查方式
	    TCP_CHECK {
	    #添加检查的目标端口
		connect_port 80
		#添加连接超时(秒)
		connect_timeout 3
		#添加重试次数
		nb_get_retry 3
		#添加重试间隔
		delay_before_retry 4
	}
}

#添加第二个 Web节点的地址、端口
real_server 192.168.2.7 80 {
    weight 1
    TCP_CHECK {
		connect_port 80
		connect_timeout 3
		nb_get_retry 3
		delay_before_retry 4
	}
}
}
#删除后面多余的配置

systemctl start keepalived
#查看虚拟网卡vip
ip addr show dev ens33

Iniciar el servicio después de la modificación

Inserte la descripción de la imagen aquí

Debido a que los parámetros de configuración solo son diferentes en tres lugares, copie el archivo de configuración de forma remota al programador en espera y modifique los siguientes parámetros en el programador en espera

#12行修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
router_id LVS_02
#20行修改;指定热备状态,主为MASTER,备为BACKUP
state BACKUP
#23行修改;指定优先级,数值越大优先级越高,主为100,备为90
priority 90

Una vez configurados e iniciados los dos programadores de carga, utilice "ip addr show dev ens33" para ver la tarjeta de red virtual vip

Programador de carga principal: en 192.168.2.4

Inserte la descripción de la imagen aquí

Programador de carga de respaldo: 192.168.2.3

Inserte la descripción de la imagen aquí

4. Verificación de prueba

(1) Visite http://192.168.2.100/ en el cliente, actualice el balance de carga de prueba es exitoso, pantalla de sondeo

Inserte la descripción de la imagen aquí

(2) Cierre el servicio keepalived.service del servidor de despacho principal y pruebe

Inserte la descripción de la imagen aquí

Y cuando el cliente de Windows 10 accede a http://192.168.2.100/ nuevamente, todavía funciona, y la pantalla de sondeo

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_35456705/article/details/113665705
Recomendado
Clasificación