目录
一、DR模式工作原理
二、DR模式特点
三、 DR模式中的问题
四、LVS-DR模式部署实验
1、准备nfs服务器
2、准备节点服务器
3、准备调度器
4、浏览器测试
1、客户端通过VIP发送请求报文到调度器,请求的数据报文源IP地址是客户端IP(CIP),目标 IP 是 VIP,到达调度器的内核空间
2、调度器通过调度算法选择最合适的节点服务器,并重新封装数据报文(将源MAC改为调度器的MAC,目的MAC改为节点服务器的MAC地址,不改变CIP和VIP),再通过交换机转发请求给节点服务器
3、节点服务器收到请求报文后,确认目的MAC和目的IP无误(节点服务器事先绑定了VIP)后解包并发送到应用层进行处理
4、节点服务器在返回响应报文前,会先重新封装报文(源IP为VIP,目的为客户端IP),再将响应报文先通过lo接口传送给物理网卡,再通过物理网卡发送给客户端
5、客户端将收到回复报文,会认为得到了正常的服务,而不知道是哪一台服务器处理的
1、调度器 和 节点服务器 必须在同一个物理网络中
2、节点服务器可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问,一般很少使用
3、调度器作为群集的访问入口,但不作为网关使用
4、所有的请求报文经由 调度器,但回复响应报文不能经过 调度器
5、节点服务器的网关不允许指向调度器的 IP,即节点服务器发送的数据包不允许经过调度器
6、节点服务器上的 lo 接口配置 VIP 的 IP 地址
1、在路由器发送ARP广播发送到集群时,因为调度器和节点服务器连接在相同的网络上,它们都会收到ARP广播。但是只有前端的调度器应该进行响应,节点服务区不应该进行响应,否则路由器的ARP缓存表会紊乱。
解决办法:针对节点服务器进行处理,使其不响应针对VIP的ARP请求
2、节点服务器返回报文(源地址是VIP地址),经过路由器转发,重新封装报文时需要先获取路由器的MAC地址。节点服务器发送ARP请求时,Linux默认使用IP包的源IP地址(VIP地址)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址。路由器收到ARP请求后,将跟新ARP表项,原有的VIP对应调度器的MAC地址会被更新为VIP对应的节点服务器的MAC地址。
解决办法:对节点服务器进行处理,设置内核参数arp_announce=2(vim /etc/sysctl.conf),使系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
总结:解决ARP紊乱两个问题的设置方法
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1 #节点服务器只响应目的IP为物理网卡的ARP请求
net.ipv4.conf.lo.arp_announce = 2 #节点服务器不使用IP包的源IP(VIP)来作为ARP请求报文的源IP地址,而采用发送接口的IP来作为ARP请求报文的源IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
①关闭防火墙和安全机制
②确认rpcbind和nfs-utils两个程序是否安装,如果没有安装使用yum安装即可
③准备共享目录,并创建共享文件
④准备共享文件
vim /etc/exports
⑤启动rpcbind和nfs-utils(注意启动的先后顺序)
systemctl enable --now rpcbind nfs
⑥发布共享
exportfs -rv
①关闭防火墙和安全机制
②检测nfs服务器的文件是否成功共享
③安装nginx
④查看nginx配置文件,获取nginx根目录位置
⑤挂载nfs服务器共享文件到nginx根目录位置
先把nginx根目录中的50x.html 和 index.html文件移动到opt目录
mount -a 刷新
最后再把移到opt目录中的文件移回来 mv /opt/*.html /usr/local/nginx/html/
⑥关闭nginx长连接
vim /usr/local/nginx/conf/nginx.conf
重启nginx
⑦使用curl命令验证
⑧修改网卡配置文件,把网关地址和dns地址删除
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
⑨修改内核参数
vim /etc/sysctl.conf
sysctl -p
⑩设置lo网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-lo:0
vim ifcfg-lo:0
ifup lo:0
⑪添加路由(将访问VIP的数据报文限制在本地,避免通信紊乱)
①关闭防火墙和安全机制
②设置虚拟网卡
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33:0
ifup ens33:0
③修改内核参数
vim /etc/sysctl.conf
sysctl -p
④加载模块
⑤配置调度策略
先使用本地yum源安装ipvsadm工具:yum -y install ipvsadm
再创建ipvsadm文件:ipvsadm-save > /etc/sysconfig/ipvsadm 或 touch /etc/sysconfig/ipvsadm
启动ipvsadm:systemctl start ipvsadm