HA Cluster -lvs

LVS HA Cluster

Descripción técnica:

LVS集群采用IP负载均衡技术和基于内容请求分发技术。
调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,
且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。
整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。
为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性

Agruparse estructura de tres niveles:

En general, se agrupan LVS estructura de tres niveles, los componentes principales son:

  • El equilibrador de carga (equilibrador de carga), es todo el clúster en el exterior de la máquina de front-end, el cliente es responsable de enviar una solicitud para llevar a cabo un conjunto de servidores, y el servicio al cliente se considera desde una sola dirección IP (podemos decir que es una dirección IP virtual) en

  • Servidor (Piscina servidor), es un grupo de servidores para realizar solicitudes de los clientes reales, el servicio realizado allí tela, correo, FTP, DNS y

  • El almacenamiento compartido (almacenamiento compartido), que proporciona un área de almacenamiento compartido para el grupo de servidores, es fácil de hacer el conjunto de servidores tienen el mismo contenido, proporcionando los mismos servicios

lvs tipos de racimo plazo:

vs:Virtual Server, Director, Dispatcher, Balancer
rs:Real Server, upstream server, backend server
CIP:Client IP
VIP: Virtual serve IP
DIP: Director IP
RIP: Real server IP

请求过程:CIP <–> VIP <==> DIP <–> RIP

lvs tipo cluster:

lvs-nat:修改请求报文的目标IP,然后转发给被选中的RS

lvs-dr:在请求报文的首部重新封装新的MAC地址,然后转发给被选中的RS

lvs-tun:在原请求IP报文之外新加一个IP首部<源地址为CIP,目标地址为RIP>,然后转发给RS

lvs-fullnat:修改请求报文的源和目标IP<源地址修改为DIP,目标地址修改为RIP>,然后转发给RS

LVS-noche:

Similar múltiples IP de destino DNAT, la solicitud de la dirección de destino y el puerto de destino en el reenvío de paquetes se modifica para lograr un RIP y PORT recogió el RS

(1) RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP
(2) 请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈
(3) 支持端口映射,可修改请求报文的目标PORT
(4) vs必须是Linux系统,rs可以是任意系统

LVS-dr:

Enrutamiento directo, enrutamiento directo

Transmitido a través de paquete de solicitud es re-encapsula un encabezamiento MAC, MAC de origen MAC DIP interfaz se encuentra, el destino MAC es la dirección MAC de un punto seleccionado de la interfaz RS RIP

  • Fuente IP / puerto y destino IP / Puerto permanecen sin cambios;

  • Director y cada uno configurado para utilizar el VIP tenía RS;

(1) VIP地址要配置在VS主机和所有的RS主机上
(2) 确保前端路由器将目标IP为VIP的请求报文发往Director,限制RS主机上关于VIP的广播和应答:
    (a) 在前端网关做静态绑定;
    (b) 在RS上使用arptables;
    (c) 在RS上修改内核参数以限制arp通告及应答级别;
        arp_announce
        arp_ignore
(3) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director
(4) RS跟Director要在同一个物理网络,VS和所有RS主机之间不能跨路由器
(5) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client
(6) 不支持端口映射

LVS-tun:

modo de reenvío: no modifica la IP solicitud cabecera del paquete (dirección IP de origen es CIP, IP destino como VIP), mientras que en la primera para el paquete IP y, a continuación cabecera encapsulada una dirección IP (IP de origen es DIP, destino IP es RIP), el paquete enviado a escoger objetivos RS

(1) DIP, VIP, RIP都应该是公网地址
(2) RS的网关不能,也不可能指向DIP
(3) RS的主机上也要配置VIP地址
(3) 请求报文要经由Director,但响应不能经由Director
(4) 不支持端口映射
(5) RS的OS得支持隧道功能

LVS-fullnat:

Por dirección IP de origen simultánea modificación de la petición del paquete y la dirección IP de destino de reenvío;

  • CIP -> DIP
  • VIP -> RIP
(1) VIP是公网地址,RIP和DIP是私网地址,可以跨路由器,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;
(2) RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;
(3) 请求和响应报文都经由Director;
(4) 支持端口映射;
注意:此类型默认不支持  

IPVS planificador:

Tenga en cuenta si el estado de carga actual de cada RS según su programación, se puede dividir en dos clases de método estático y dinámico método:

método estático: solamente la programación basada en el propio algoritmo

RR:roundrobin,轮询;把所有的RS主机统计起来,每次有新请求来,以轮询的方式一个个的调度用户请求到RS主机上去

WRR:Weighted RR,加权轮询;把所有的RS主机统计起来,并记录每个RS主机的权值<在这里表示自身的某个服务的处理能力,能力越强,权值越高>,每次有新请求来,以权值的大小进行轮询,调度用户请求到RS主机上去,权值高的主机,会接收到更多的用户请求

SH:Source Hashing,实现session sticy,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

DH:Destination Hashing;目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS
    DH:提高VS后缓存服务器中缓存的命中率
    DH:多数情况用于缓存服务器

Método dinámico: principalmente realiza la planificación de acuerdo con el estado de carga actual de cada RS y un algoritmo de planificación;

Overhead: VS programación comparador a un valor menor sobrecarga del servidor de programación de prioridad

LC:least connections  最少连接
    Overhead=activeconns*256+inactiveconns
    基于上面的Overhead算法,计算所有RS主机的Overhead值,把新请求调度到Overhead值小的服务器

WLC:Weighted LC   加权的最少连接
    Overhead=(activeconns*256+inactiveconns)/weight
    基于上面的Overhead算法,计算所有RS主机的Overhead值,把新请求调度到Overhead值小的服务器

SED:Shortest Expection Delay
    Overhead=(activeconns+1)*256/weight
    基于上面的Overhead算法,计算所有RS主机的Overhead值,把新请求调度到Overhead值小的服务器

NQ:Never Queue
    永不排队,每个后端服务器,至少先分一个,然后在使用SED调度算法对新请求进行调度

LBLC:Locality-Based LC,动态的DH算法
    简单的理解就是:类似静态方法的DH算法,但它是动态的

LBLCR:LBLC with Replication,带复制功能的LBLC
    在LBLC上,后端服务器,基于session replication机制,复制一台RS主机的缓存到其他RS主机上,则当老用户进行请求的时候,不仅可以转发给老用户第一次访问的主机,也可以转发给RS其他主机,因为此时其他RS主机也有此老用户访问的缓存

LVS-nat configuración:

topología:

lvs-Nat flujo de datos gráfico:

Las características de diseño:

(1) RIP与DIP在同一IP网络, RIP的网关要指向DIP;
    VIP=192.168.0.100
    DIP=172.16.0.1
    RIP-1=172.16.0.2
    RIP-2=172.16.0.3

RS1:

yum -y install httpd net-tools
    
vim /var/www/html/index.html
<h1>RS1</h1>
    
ifconfig ens33:0 172.16.0.2/24 up
route add default gw 172.16.0.1
systemctl start httpd

RS2:

yum -y install httpd net-tools

vim /var/www/html/index.html
<h1>RS2</h1>
    
ifconfig ens33:0 172.16.0.3/24 up
route add default gw 172.16.0.1
systemctl start httpd

VS:

yum install ipvsadm net-tools
ifconfig ens33:0 172.16.0.1/24 up
echo 1 > /proc/sys/net/ipv4/ip_forward
ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 172.16.0.2 -m -w 1
ipvsadm -a -t 192.168.0.100:80 -r 172.16.0.3 -m -w 1

configuración lvs-dr:

topología:

datos LVS-DR analógica fluyen gráfico

Tal como se muestra a continuación: Cuando un cliente solicita un VIP, la solicitud se enviará al director (programador), la petición de descubrimiento planificador es un conjunto de servicios de racimo, de acuerdo con un algoritmo de planificación para reenviar la solicitud al RealServer, la atención en el proceso de reenvío simplemente modificado la dirección MAC de los paquetes de datos, por lo que este es por eso que pedimos RD y RS debe estar en la misma red física, es para asegurar que los paquetes de datos pueden ser enviados mediante la modificación de la dirección MAC.

Además de configurar cada servidor en la red, el primero de cada servicio tiene una tarjeta separada requerida. En la RD configuración DIP en eth0, VIP alias en la configuración de la red, esto es hacer después de que el programador de fácil disponibilidad direcciones IP VIP hacen deriva. RS necesidades de la misma en cada uno de los VIP configurado, por lo que un cliente RS puede responder directamente, sin la necesidad de pasar por República Dominicana, pero se permite que la red física de una pluralidad del mismo nombre IP, es necesario modificar los parámetros del kernel RS, y VIP configurado en lO, que le permite permanecer VIP, pero no permite la difusión exterior, por lo que los paquetes enviados por el LD la dirección de origen es la VIP, por supuesto, hay que salir de la tarjeta física real, es necesario añadir una ruta, lo que permite un acceso VIP paquete de solicitud, en la misma respuesta está dispuesta una tarjeta de VIP, de modo que los paquetes enviados en respuesta a la dirección de origen es el VIP, puede ser cliente aceptada.

Las características de diseño:

VS上的VIP地址可以直接配置在DIP地址所在的网卡上,Linux主机上,一块网卡可以配置多个地址
RS上的VIP地址必须配置在lo接口上,并且还要关闭arp的响应和通告功能

外网接口:10.1.43.101
内网接口:172.16.0.1

VIP:172.16.0.10
DIP:172.16.0.9
RIP-1:172.16.0.2
RIP-2:172.16.0.3

modelo dr, VIP necesita ser configurado en cada host, hay maneras de resolver los conflictos de direcciones de tres pasos:

(1) 在前端网关做静态绑定
(2) 在各RS使用arptables
(3) 在各RS修改内核参数,来限制arp响应和通告的级别
    限制响应级别:arp_ignore
        0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
        1: 仅在请求的目标IP配置在本地主机的接收到请求报文接口上时,才给予响应
    
    限制通告级别:arp_announce
        0:默认值,把本机上的所有接口的所有信息向每个接口上的网络进行通告
        1:尽量避免向非直接连接网络进行通告
        2:必须避免向非本网络通告

RS guión pre-configuración: <script se ejecute en los rs anfitrionas>

#!/bin/bash
#
vip=172.16.0.10
mask='255.255.255.255'
    
case $1 in
start)
  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    
  ifconfig lo:0 $vip netmask $mask broadcast $vip up
  route add -host $vip dev lo:0
  route add default gw 172.16.0.1
    ;;
        
stop)
    ifconfig lo:0 down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ;;
        
*)
    echo "Usage $(basename $0) start|stop"
    exit 1
    ;;
esac

script de configuración VS: <script se puede ejecutar en el host vs>

#!/bin/bash
#
vip='172.16.0.10'
iface='eno16777736:0'
mask='255.255.255.255'
port='80'
rs1='172.16.0.2'
rs2='172.16.0.3'
scheduler='wrr'
type='-g'
    
case $1 in
start)
    ifconfig $iface $vip netmask $mask broadcast $vip up
    iptables -F
    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    ;;
        
stop)
    ipvsadm -C
    ifconfig $iface down
    ;;
        
*)
    echo "Usage $(basename $0) start|stop"
    exit 1
    ;;
esac

La configuración del router:

ifconfig eno16777736 10.1.43.101/16 up
ifconfig eno33554984 10.1.43.101/16 up
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d 10.1.43.101 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.10:80

posdata

modelo lvs-dr: entorno de diseño y vip configuración experimental y no en el mismo segmento de red dip / PIR lograr

Consejo: configurar una interfaz IP de alias de red IP del router, esta IP en el mismo segmento de red con VIP

Las características de diseño:

VS上的VIP地址可以直接配置在DIP地址所在的网卡上,Linux主机上,一块网卡可以配置多个地址

RS上的VIP地址必须配置在lo接口上,并且还要关闭arp的响应和通告功能

外网接口:10.1.43.101
内网接口:172.16.0.1 172.16.10.1

VIP:172.16.1.10
DIP:172.16.0.9
RIP-1:172.16.0.2
RIP-2:172.16.0.3

medio ambiente

主机:Centos6
equipo host información
Router Centos6
Director Centos6
RS1 Centos6
RS2 Centos6

Configuración del router:

[root@node4 ~]# ifconfig eno16777736 10.1.43.101/16 up 
[root@node4 ~]# ifconfig eno33554984 172.16.0.1/24 up
[root@node4 ~]# ifconfig eno33554984:0 172.16.1.1/24 up       //配置一个别名,用于同VS主机上的VIP进行通信 

[root@node4 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 
[root@node4 ~]# iptables -t nat -A PREROUTING -d 10.1.43.101 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.10:80

En configuración RS1:

[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    
[root@node1 ~]# ifconfig lo:0 172.16.1.10 netmask 255.255.255.255 broadcast 172.16.1.10 up
    
[root@node1 ~]# yum -y install httpd
[root@node1 ~]# service httpd start
    
[root@node1 ~]# cd /var/www/html
[root@node1 www]# vim index.html
<h1>172.16.0.2</h1>

En configuración RS2:

[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    
[root@node2 ~]# ifconfig lo:0 172.16.1.10 netmask 255.255.255.255 broadcast 172.16.1.10 up
    
[root@node2 ~]# yum -y install httpd
[root@node2 ~]# service httpd start
    
[root@node2 ~]# cd /var/www/html
[root@node2 www]# vim index.html
<h1>172.16.0.3</h1>

configuración VS:

[root@node3 ~]# ifconfig eth0:0 172.16.1.10 netmask 255.255.255.255 broadcast 172.16.1.10 up
    
[root@node3 ~]# ipvsadm -C
[root@node3 ~]# ipvsadm -A -t 172.16.1.10:80 -s rr
[root@node3 ~]# ipvsadm -a -t 172.16.1.10:80 -r 172.16.0.2 -g
[root@node3 ~]# ipvsadm -a -t 172.16.1.10:80 -r 172.16.0.3 -g

Documentos de referencia

https://blog.csdn.net/brad_chen/article/details/47807281

Supongo que te gusta

Origin www.cnblogs.com/python-gm/p/12444060.html
Recomendado
Clasificación