构建高可用性的LVS-DR群集:实现无缝的负载均衡与故障转移

目录

一、LVS-DR集群

1.LVS-DR工作原理

2.数据包流向分析

3.LVS-DR模式特点

二、直接路由模式(LVS-DR)

1.资源清单

2.配置负载调度器(lvs)

3.配置节点服务器(web1、web2)

4.测试LVS群集

5.使用NFS发布共享资源(nfs上)

6.在客户机中访问NFS共享资源


一、LVS-DR集群

1.LVS-DR工作原理

LVS-DR模式,Director Server作为群集的访问入口,不作为网关使用,节点Director Server 与Real Server需要在同一个网络中,返回给客户端的数据不需要经过Director Server 。为了响应对整个群集的访问,Director Server 与Real Server都需要配置VIP地址。

2.数据包流向分析

a.客户端发送请求到Director Server,请求的数据报文(源ip是CIP,目标IP是VIP)到达内核空间

b.Director Server 和Real Server在同一网络中,数据通过二层数据链路层来传输

c.内核空间判断数据包的目标IP是本机VIP,此时IPVS比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源MAC地址为Director Server的MAC地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server

d.到达Real Server 的请求报文的MAC地址是自身的MAC地址,就接收此报文。数据包重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过lo接口传送给物理网卡然后向外发出

e.Real Server 直接响应报文传送到客户端

3.LVS-DR模式特点

a.Director Server和Real Server必须在同一物理网络中

b.Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问

c.所有请求报文经由Director Server,但回复响应报文不能经过Director Server

d.Real Server的网关不允许指向Director Server IP,即不允许数据包经过Director Server

e.Real Server上的lo接口配置VIP的IP地址

二、直接路由模式(LVS-DR)

1.资源清单

|----------|--------------------|--------------------|---------------------------|
| 主机 | 操作系统 | IP地址 | 应用 |
| lvs | OpenEuler24.03 | 192.168.16.142 | Ipvsadm |
| web1 | OpenEuler24.03 | 192.168.16.143 | Apache、nfs、bind-utils |
| web2 | OpenEuler24.03 | 192.168.16.144 | Apache、nfs、bind-utils |
| nfs | OpenEuler24.03 | 192.168.16.145 | nfs、bind-utils |

2.配置负载调度器(lvs)

a.修改主机名

bash 复制代码
hostnamectl set-hostname lvs
hostnamectl set-hostname web1
hostnamectl set-hostname web2
hostnamectl set-hostname nfs

b.检查模块

bash 复制代码
# 加载 ip_vs 模块
modprobe ip_vs

# 查看 ip_vs 版本信息
cat /proc/net/ip_vs

c.安装ipvsadm管理工具

bash 复制代码
dnf -y install ipvsadm

d.配置虚拟IP地址(VIP)

bash 复制代码
cd /etc/sysconfig/network-scripts/

#修改配置文件
vi ifcfg-ens33:0

NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.16.100
NETMASK=255.255.255.255

#重启网卡服务
systemctl restart NetworkManager

#查看是否生成vip
ip a

e.调整proc响应参数

bash 复制代码
vi /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

f.配置负载均衡分配策略

bash 复制代码
#ipvsadm -C #清空原有策略

ipvsadm -A -t 192.168.16.100:80 -s rr
ipvsadm -a -t 192.168.16.100:80 -r 192.168.16.143:80 -g -w 1
ipvsadm -a -t 192.168.16.100:80 -r 192.168.16.144:80 -g -w 1
#查看添加的策略
ipvsadm -ln
#保存配置
ipvsadm-save -n > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

3.配置节点服务器(web1、web2)

a.配置虚拟IP地址(VIP)

  • 配置ifcfg-lo:0网卡信息
bash 复制代码
vi /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0
IPADDR=192.168.16.100 
NETMASK=255.255.255.255
ONBOOT=yes
  • 安装network服务
bash 复制代码
dnf install network-scripts -y
#停止networkManger服务
systemctl disable NetworkManager --now

#启动network服务
systemctl enable network --now
#安装此软件包,以便使用ifconfig
dnf -y install net-tools
#启动网卡
ifup lo:0

#查看VIP
ip a
  • 添加VIP本地访问路由
bash 复制代码
route add -host 192.168.16.100 dev lo:0
echo 'route add -host 192.168.16.100 dev lo:0' >> /etc/rc.local 
chmod +x /etc/rc.d/rc.local 

b.调整proc响应参数

bash 复制代码
cat >> /etc/sysctl.conf << EOF
# 忽略arp广播
net.ipv4.conf.all.arp_ignore = 1
# 匹配精确ip地址回包
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
EOF
sysctl -p

c.安装httpd,创建测试页

bash 复制代码
dnf -y install httpd

#创建测试网页
    #web1节点
echo "This is web1" > /var/www/html/index.html
    #web2节点
echo "This is web2" > /var/www/html/index.html

d.启用httpd服务程序

bash 复制代码
systemctl start httpd
systemctl enable httpd

4.测试LVS群集

bash 复制代码
C:\Users\Y>curl 192.168.16.100
This is web1

C:\Users\Y>curl 192.168.16.100
This is web2

5.使用NFS发布共享资源(nfs上)

a.安装nfs-utils、rpcbind软件包

bash 复制代码
dnf -y install rpcbind nfs-utils

b.设置共享目录

bash 复制代码
mkdir -p /opt/wwwroot

vi /etc/exports

/opt/wwwroot 192.168.16.0/24(rw,sync,no_root_squash)

c.启动NFS共享目录

bash 复制代码
systemctl start nfs rpcbind 
systemctl enable nfs rpcbind 

d.查看本机发布的NFS共享目录

bash 复制代码
showmount -e

6.在客户机中访问NFS共享资源

a.安装rpcbind软件包(web1、web2)

bash 复制代码
dnf -y install rpcbind nfs-utils

b.手动挂载NFS共享目录(web1、web2)

bash 复制代码
mount 192.168.16.145:/opt/wwwroot /var/www/html

c.NFS创建测试文件(nfs上)

bash 复制代码
ls /opt/wwwroot/
echo 'this is NFS' > /opt/wwwroot/index.html

d.fstab自动挂载设置(web1、web2)

bash 复制代码
vi /etc/fstab

192.168.16.145:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0

e.访问测试

bash 复制代码
C:\Users\Y>curl 192.168.16.100
this is NFS

C:\Users\Y>curl 192.168.16.100
this is NFS

C:\Users\Y>curl 192.168.16.100
this is NFS
相关推荐
TechWayfarer1 小时前
知乎/微博的IP属地显示为什么偶尔错误?用IP归属地查询平台自检工具3步验证
网络·python·网络协议·tcp/ip·网络安全
Wave8451 小时前
从单片机开发看透网络底层:Wi-Fi、TCP/IP 与 HTTP 的通俗解析
网络·单片机·tcp/ip
ZYH_06011 小时前
园区网络实验作业
网络
疯狂的代M夫2 小时前
网络通信流程
网络
小江的记录本2 小时前
【网络安全】《网络安全常见攻击与防御》(附:《六大攻击核心特性横向对比表》)
java·网络·人工智能·后端·python·安全·web安全
郝亚军2 小时前
ubuntu通过samba,让win11可以访问其共享文件夹
linux·服务器·ubuntu
农村小镇哥2 小时前
nginx服务器的介绍
运维·服务器·nginx
小夏子_riotous2 小时前
Docker学习路径——3、常用命令
linux·运维·服务器·学习·docker·容器·centos
2401_873479403 小时前
应急响应:勒索软件攻击源IP分析,如何通过IP地址查询定位辅助溯源?
网络·tcp/ip·安全·网络安全·ip
拾薪5 小时前
[SuperPower] Brainingstorm - 流程控制架构分析
网络·人工智能·ai·架构·superpower·brainstorming