目录
2.部署共享存储(NFS服务器:192.168.80.103)
3.配置节点服务器(192.168.80.101、192.168.80.102)
使用yum源安装nginx(web1和web2 的相同设置)
调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突(web1和web2的相同设置)
一、数据包流向分析
(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),将响应报文通过lo接口传送给物理网卡然后向外发出。
(5) Real Server直接将响应报文传送到客户端。
二、DR模式特点
- Director Server 和 Real Server 必须在同一个物理网络中
- Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问
- Director Server作为群集的访问入口,但不作为网关使用
- 所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server
- Real Server 的网关不允许指向 Director Server IP,即Real Server发送的数据包不允许经过 Director Server
- Real Server 上的 lo 接口配置 VIP 的 IP 地址
三、ARP问题及解决办法
解决方法:
RS响应请求报文
四、实验操作
- 准备四台虚拟机👇
- DR服务器:192.168.80.100
- web服务器1:192.168.80.101
- web服务器2:192.168.80.102
- nfs共享服务机:192.168.80.103
所有主机初始化操作
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
1.配置负载调度器(192.168.80.100)
安装并启用ipvsadm
yum install -y ipvsadm
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl status ipvsadm
systemctl enable ipvsadm
modprobe ip_vs
lsmod
配置虚拟IP地址(VIP:192.168.80.200)
cd /etc/sysconfig/network-scripts/
ls
ifconfig
cp ifcfg-lo ifcfg-ens33:0
vim !$
systemctl restart network
ifconfig
调整 proc 响应参数
由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器
vim /etc/sysctl.conf
sysctl -p
配置负载分配策略
ipvsadm -A -t 192.168.80.200:80 -s rr
ipvsadm -a -t 192.168.80.200:80 -r 192.168.80.101:80 -g
ipvsadm -a -t 192.168.80.200:80 -r 192.168.80.102:80 -g
ipvsadm
ipvsadm-save -n > /opt/ipvsadm.bak
cat !$
ipvsadm -ln
2.部署共享存储(NFS服务器:192.168.80.103)
yum install -y nfs-utils rpcbind
mkdir /share/{xy101,xy102} -p
ls /share/
echo '<h1>this is xy101 test web page!</h1>' > /share/xy101/test.html
echo '<h1>this is xy102 test web page!</h1>' > /share/xy102/test.html
vim /etc/exports
systemctl enable --now rpcbind nfs
showmount -e
3.配置节点服务器(192.168.80.101、192.168.80.102)
使用yum源安装nginx(web1和web2 的相同设置)
systemctl start rpcbind
showmount -e 192.168.80.103
cd /etc/yum.repos.d/
yum install -y nginx
systemctl start nginx
mount 192.168.80.108:/share/xy101 /usr/share/nginx/html/
ls !$
配置虚拟 IP 地址(web1和web2 的相同设置)
cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-lo ifcfg-lo:0
ls
vim ifcfg-lo:0
systemctl restart network
ifconfig
调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突(web1和web2的相同设置)
vim /etc/sysctl.conf
sysctl -p
route -n
route add -host 192.168.80.100 lo:0
route -n