部署前IP分配
DR服务器:192.168.166.101 vip:192.168.166.100
Web服务器1:192.168.166.104 vip:192.168.166.100
Web服务器2:192.168.166.107 vip:192.168.166.100
NFS服务器:192.168.166.108
一、部署NFS服务器(192.168.166.108)
1、安装nfs
systemctl stop ufw
systemctl disable ufw
apt install -y nfs-kernel-server
systemctl status nfs-kernel-server
2、准备两个共享目录
cd /opt
mkdir xy1 xy2
vim /etc/exports
添加以下配置:
/opt/xy1 *(rw,sync,no_subtree_check,no_root_squash)
/opt/xy2 192.168.166.0/24(rw,sync,no_subtree_check,no_root_squash)
3、向外发布
exportfs -arv
4、准备测试文件
echo '<h1>this is xy1 test web</h1>' > xy1/test.html
echo '<h1>this is xy2 test web</h1>' > xy2/test.html
二、Web服务器部署nfs
1、安装上传工具
systemctl stop ufw
systemctl disable ufw
apt install -y nfs-common
apt install lrzsz
上传nginx_1.24.0-1~jammy_amd64.deb
dpkg -i nginx_1.24.0-1~jammy_amd64.deb

另一台服务器上做相同操作。
2、修改配置文件
cd /etc/nginx/conf.d
vim default.conf
修改:
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
为
location / {
root /var/www/html;
index index.html index.htm;
}
3、测试与nfs服务器连通性
mkdir -p /var/www/html
showmount -e 192.168.166.108
4、挂载
将nfs服务器的xy1挂载到ubuntu4的/var/www/html文件夹下
mount 192.168.166.108:/opt/xy1 /var/www/html


将共享文件夹的目录下的文件复制过来
cp /usr/share/nginx/html/* ./

在另一台虚拟机上进行同样操作到连通nfs服务器

将xy2挂载到/var/www/html目录下

同样将共享文件夹的目录下的文件复制过来
cp /usr/share/nginx/html/* ./

5、创建一个新的网卡文件
cd /etc/netplan/
touch 99-lo-vip.yaml
vim 99-lo-vip.yaml
network:
ethernets:
lo:
addresses:
- 192.168.166.100/32
version: 2

netplan apply
ip a

6、给两台主机添加内核参数
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


在另一台主机上进行相同操作
#启动nginx
systemctl start nginx
systemctl enable nginx
df -hT
确认是否已经将共享存储的目录挂载过来

7、登陆网页测试

三、配置负载调度器
(ubuntu1:192.168.166.101)
1、加载 ip_vs 模块,安装ipvsadm工具
systemctl stop ufw
systemctl disable ufw
modprobe ip_vs
cat /proc/net/ip_vs

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
lsmod | grep ip_vs
apt update
apt -y install ipvsadm

2、配置虚拟 IP 地址(VIP:192.168.166.100)
#临时生效(重启失效)
ip addr add 192.168.166.100/24 dev ens33 label ens33:0
#永久生效
vim /etc/netplan/XXX.yaml
network:
version: 2
ethernets:
ens33:
addresses:
192.168.80.10/24
192.168.166.100/32 # 添加VIP
netplan apply

3、启用IP转发
#临时生效
sysctl -w net.ipv4.ip_forward=1
#永久生效
echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conf
或者
vim /etc/sysctl.conf
添加net.ipv4.ip_forward=1
sysctl -p

4、配置负载均衡规则
#添加虚拟服务
ipvsadm -A -t 192.168.166.100:80 -s wrr
#添加真实服务器(-g表示DR模式)
ipvsadm -a -t 192.168.166.100:80 -r 192.168.166.104:80 -g -w 1
ipvsadm -a -t 192.168.166.100:80 -r 192.168.166.107:80 -g -w 1
#查看规则
ipvsadm -Ln

重新打开一个主机用于测试(ubuntu3:192.168.166.103)
5、验证ARP抑制
#在客户端上执行,应只能看到Director的MAC地址响应VIP
apt install -y arping
arping -I ens33 192.168.166.100

6、安装Nginx
apt install -y nginx nfs-common
测试 LVS 群集
在客户端使用浏览器访问 http://192.168.166.100/test.html
观察请求分发情况
ipvsadm -Ln --stats
7、测试实现负载均衡