LVS-DR模式
目录
一、DR模式工作原理
1、客户端通过VIP发送请求报文到调度器,请求的数据报文源IP地址是客户端IP(CIP),目标 IP 是 VIP,到达调度器的内核空间
2、调度器通过调度算法选择最合适的节点服务器,并重新封装数据报文(将源MAC改为调度器的MAC,目的MAC改为节点服务器的MAC地址,不改变CIP和VIP),再通过交换机转发请求给节点服务器
3、节点服务器收到请求报文后,确认目的MAC和目的IP无误(节点服务器事先绑定了VIP)后解包并发送到应用层进行处理
4、节点服务器在返回响应报文前,会先重新封装报文(源IP为VIP,目的为客户端IP),再将响应报文先通过lo接口传送给物理网卡,再通过物理网卡发送给客户端
?5、客户端将收到回复报文,会认为得到了正常的服务,而不知道是哪一台服务器处理的
二、DR模式特点
1、调度器 和 节点服务器 必须在同一个物理网络中
2、节点服务器可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问,一般很少使用
3、调度器作为群集的访问入口,但不作为网关使用
4、所有的请求报文经由 调度器,但回复响应报文不能经过 调度器
5、节点服务器的网关不允许指向调度器的 IP,即节点服务器发送的数据包不允许经过调度器
6、节点服务器上的 lo 接口配置 VIP 的 IP 地址
三、 DR模式中的问题
1、在路由器发送ARP广播发送到集群时,因为调度器和节点服务器连接在相同的网络上,它们都会收到ARP广播。但是只有前端的调度器应该进行响应,节点服务区不应该进行响应,否则路由器的ARP缓存表会紊乱。
解决办法:针对节点服务器进行处理,使其不响应针对VIP的ARP请求
- 使用虚接口lo:0承载节点服务器的VIP地址
- 设置内核参数arp_ignore=1(vim /etc/sysctl.conf),使系统只响应目的IP为本地物理网卡IP的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? ? ? ? ? ? ? ? ? ??
四、LVS-DR模式部署实验
1、准备nfs服务器
①关闭防火墙和安全机制
②确认rpcbind和nfs-utils两个程序是否安装,如果没有安装使用yum安装即可
③准备共享目录,并创建共享文件
④准备共享文件
vim? /etc/exports
⑤启动rpcbind和nfs-utils(注意启动的先后顺序)
systemctl enable --now?rpcbind nfs
⑥发布共享
exportfs -rv
2、准备节点服务器
①关闭防火墙和安全机制
②检测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的数据报文限制在本地,避免通信紊乱)
3、准备调度器
①关闭防火墙和安全机制
②设置虚拟网卡
?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
4、浏览器测试
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!