部署LVS-DR群集
目录
一. LVS-DR 集群
1. LVS-DR 工作原理
2. 数据包流向分析
3. LVS-DR 式特点
二. 直接路由模式(LVS-DR)
1.准备案例环境
2. 搭建LVS
3. 安装http两台一样的操作 把输入网页部分修改成2方便测试
4. 客户机测试测试
随着互联网业务的蓬勃发展,网站的访问量、应用的并发请求量呈爆炸式增长。如何确保在高并发场景下,业务系统依然能够稳定、高效地运行,为用户提供流畅、优质的服务,成为了每一个企业和开发者必须面对的挑战。负载均衡技术应运而生,它就像一位智慧的“交通指挥官”,能够合理地将网络流量分配到多个服务器上,避免单点故障,提高系统的可用性和扩展性,而在众多负载均衡技术中,LVS(Linux Virtual Server)DR(Direct Routing,直接路由)模式凭借其高性能、低延迟、高扩展性等优势,成为了构建大规模、高并发负载均衡集群的热门选择。
一. LVS-DR 集群
LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一种工作模式。
1. LVS-DR 工作原理
LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用,节点 Director Server 与 Real Server 需要在同一个网络中,返回给客户端的数据不需要经过 Director Server。为了响应对整个群集的访问,DirectorServer 与 Real Server 都需要配置 VIP 地址
2. 数据包流向分析
数据包流向分析步骤
(1)客户端发送请求到 Director Server,请求的数据报文(源 IP 是 CIP,目标IP 是 VIP) 到达内核空间。
(2)Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。
(3)内核空间判断数据包的目标IP是本机 VIP,此时 IPVS 比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源MAC地址为Director Server 的 MAC 地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP 地址没有改变,然后将数据包发送给 Real Server。
(4)到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文(源IP地址为 VIP,目标IP为 CIP),将响应报文通过 10 接口传送给物理网卡然后向外发出。
(5)Real Server 直接将响应报文传送到客户端。
3. LVS-DR 式特点
Director Server 和 Real Server 必须在同一个物理网络中。
Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址可以通过互联网对 RIP 进行直接访问。
所有的请求报文经由 Director Server,但回复响应报文不能经过 Directorberver。
Real Server 的网关不允许指向 Director Server IP,即不允许数据包经N Director server.
Real Server 上的 1o 接口配置 VIP 的 IP 地址。
二. 直接路由模式(LVS-DR)
1.准备案例环境
主机 | 操作系统 | ip地址 | 应用 |
LVS | OpenEuler | 192.168.10.101 lo:192.168.10.172 | ipvsadm |
Web1 | OpenEuler | 192.168.10.102 | http |
Web2 | OpenEuler | 192.168.10.103 | http |
客户机 | OpenEuler | 192.168.10.104 |
在 DR 模式的群集中,LVS 负载调度器作为群集的访问入口,但不作为网关使用;服务器池中的所有节点都各自接入 Internet,发送给客户机的 Web 响应数据包不需要经过 LVS 负载调度器
这种方式入站、出站访问数据被分别处理,因此LVS 负载调度器和所有的节点服务器都需要配置 VIP 地址,以便响应对整个群集的访问。考虑到数据存储的安全性,共享存储设备会放在内部的专用网络中
2. 搭建LVS
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160:0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.10.172
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=114.114.114.114
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens160:0
DEVICE=ens160:0
ONBOOT=yes[root@localhost network-scripts]# nmcli c reload
[root@localhost network-scripts]# nmcli c up ens160
[root@localhost network-scripts]# cd
[root@localhost ~]# dnf -y install ipvsadm
[root@localhost ~]# ipvsadm -A -t 192.168.10.172:80 -s wrr
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 2
3. 安装http两台一样的操作 把输入网页部分修改成2方便测试
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# dnf -y install httpd
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160:0
[root@localhost network-scripts]# vim ifcfg-ens160:0
[root@localhost network-scripts]# nmcli c reload
[root@localhost network-scripts]# nmcli c up ens160[root@localhost ~]# echo "web1">/var/www/html/index.html
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# vim /etc/rc.local
//添加
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo[root@bogon ~]# chmod +x /etc/rc.local
[root@bogon ~]# reboot
[root@bogon ~]# vim /etc/sysctl.conf
//添加
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# systemctl start httpd