LVS部署DR集群

介绍

DR(Direct Routing):直接路由,是LVS默认的模式,应用最广泛.

通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址.

整个过程中源IP/PORT,以及目标IP/PORT均保持不变.

原理

首先,DR 模式下,调度器(Director)和真实服务器(Real Server)处于同一个局域网内.它们都拥有自己的物理网络接口,并且都被配置了相同的 VIP(Virtual IP,虚拟 IP 地址)

当客户端向调度器发送请求时,调度器会依据预先设定的负载均衡算法,从可用的真实服务器中挑选出一台适合处理该请求的服务器.

接着,调度器会对数据包进行修改.它会将数据包的目标 MAC 地址更改为所选真实服务器的 MAC 地址.

随后,调度器将修改后的数据包直接发送到局域网中.

由于真实服务器与调度器在同一网络环境中,所以真实服务器能够接收到这个数据包.

真实服务器在收到数据包后,会进行检查.当发现数据包的目标 IP 地址正是自己配置的 VIP 时,就会对该数据包进行处理.

处理完毕后,真实服务器直接将响应数据包发送给客户端,而不再通过调度器进行中转.

实验图

说明

Client(客户端):测试主机,网络(NAT)

Router(路由器):作为客户端网关(NAT),作为LVS,Server1,Server2网关(仅主机),开启内核路由功能

LVS(调度器):集群调度器,网络(仅主机),环回(VIP)

Server1,Server2(服务器):集群服务器,网络(仅主机),环回(VIP)

部署

客户端

bash 复制代码
# 假设网卡名字为eth0
cat > vim /etc/NetworkManager/system-connections/eth0.nmconnection << EOF
> [connection]
> id=eth0
> type=ethernet
> interface-name=eth0
> 
> [ipv4]
> method=manual
> address1=172.25.254.200/24,172.25.254.100
> EOF

路由器

bash 复制代码
# 打开路由内核功能
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf;sysctl -p

# 假设(NAT)网卡名字为eth0
cat > vim /etc/NetworkManager/system-connections/eth0.nmconnection << EOF
> [connection]
> id=eth0
> type=ethernet
> interface-name=eth0
> 
> [ipv4]
> method=manual
> address1=172.25.254.100/24 # 路由器不用配网关
> EOF


# 假设(仅主机)网卡名字为eth1
cat > vim /etc/NetworkManager/system-connections/eth1.nmconnection << EOF
> [connection]
> id=eth1
> type=ethernet
> interface-name=eth1
> 
> [ipv4]
> method=manual
> address1=192.168.0.100/24 # 路由器不用配网关
> EOF

调度器

bash 复制代码
# 假设(仅主机)网卡名字为eth0
cat > vim /etc/NetworkManager/system-connections/eth0.nmconnection << EOF
> [connection]
> id=eth0
> type=ethernet
> interface-name=eth0
> 
> [ipv4]
> method=manual
> address1=192.168.0.50/24,192.168.0.100
> EOF

# 设置VIP
ip addr add dev lo 192.168.0.200/32 # 注意掩码 32

# 安装	IPVS	管理工具  
dnf install ipvsadm -y

# 添加策略,分配权重,使用轮询算法
ipvsadm -A -t 192.168.0.200:80 -s rr # VIP
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1 # VIP + 服务器IP
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2 # VIP + 服务器IP

服务器

bash 复制代码
# 假设为HTTP服务器,端口:80
# Server1 : 假设(仅主机)网卡名字为 eth0
cat > vim /etc/NetworkManager/system-connections/eth0.nmconnection << EOF
> [connection]
> id=eth0
> type=ethernet
> interface-name=eth0
> 
> [ipv4]
> method=manual
> address1=192.168.0.10/24,192.168.0.100
> EOF

# Server2 : 假设(仅主机)网卡名字为 eth0
cat > vim /etc/NetworkManager/system-connections/eth0.nmconnection << EOF
> [connection]
> id=eth0
> type=ethernet
> interface-name=eth0
> 
> [ipv4]
> method=manual
> address1=192.168.0.20/24,192.168.0.100
> EOF

# 均安装HTTP服务,均添加VIP
yum install httpd -y
ip addr add dev lo 192.168.0.200/32 # 注意掩码 32

# 均关闭防火墙,SElinux
systemctl stop firewalld;systemctl mask firewalld
grubby --update-kernel ALL--args selinux=0

# 均修改index.html
echo Server - 192.168.0.10 > /var/www/html/index.html # Server1
echo Server - 192.168.0.20 > /var/www/html/index.html # Server2

# 关闭两个服务器的ARP应答
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/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

配置要点

  • LVS、Server
    • 网关、VIP、网卡模式、网段均相同
  • Client、Router处于同一网段(公网)中
    • Router需要开启路由内核功能
相关推荐
小技与小术2 天前
lvs-dr模式实验详解
linux·运维·网络·lvs
flytalei7 天前
负载均衡调度器--LVS
运维·负载均衡·lvs
大白菜和MySQL7 天前
lvs dr模式集群搭建
linux·lvs
大白菜和MySQL8 天前
keepalived和lvs高可用集群
linux·运维·lvs
码出钞能力11 天前
lvs DR模式调试
linux·lvs
forgetable tree11 天前
LVS的加权轮询算法
算法·lvs
私有运维13 天前
LVS 负载均衡集群指南
运维·负载均衡·lvs
Looper033113 天前
Nginx 负载均衡+高可用 集群部署(Keepalived+LVS DR模式)
nginx·负载均衡·lvs
爱吃糖的蠢猫18 天前
Keepalived与LVS高可用群集部署指南
git·github·lvs
爱吃糖的蠢猫21 天前
企业群集应用概述与 LVS 负载均衡详解
运维·负载均衡·lvs