• LVS-DR模式


    一、LVS-DR模式概述

    1.1 LVS-DR模式介绍

    • LVS-DR:DIRECT ROUTING:直接路由模式,也叫二层转发,根据mac地址将前端请求转发到后端服务器
    • LVS-DR模式是最常用的LVS负载方式
    • LVS-DR模式中的负载均衡器,只负责请求和转发到后端的真实服务器,但是请求处理完成之后的响应结果是由后端服务器直接转发给客户端,不需要经过调度器的处理。可以减轻LVS调度器的负担。提高了系统的性能和稳定性

    1.2 LVS-DR模式工作原理

    • 1、客户端发送请求到vip
    • 2、LVS的调度器接受请求之后,根据算法选择一台后端的真实服务器,将请求转发到后端RS,将请求报文的目的mac地址修改成后端真实服务器的mac地址进行转发
    • 3、后端真实服务器接受请求,处理完成,由于后端服务器直接将响应结果转发给客户端,会将响应报文中的目的mac地址修改成客户端的mac地址,直接把响应报文转发到客户端
    • 4、调度器、后端真实服务器都有vip地址,调度器的地址和后端真实服务器的地址要在同一网段

    调度器中vip的作用:

    • 暴露访问地址
    • 标识后端的真实服务器;
    • 保证调度器和后端服务器之间的通信,保证请求可以正确地转发到后端服务器;
    • 实现高可用和故障转移

    DR模式的特点:

    • 1、调度器的ip和真实服务器的ip必须在同一个物理网络中
    • 2、真实服务器的ip地址可以是私有地址(一般情况),也可以是公网地址,若配置的为公网地址,可以通过互联网直接访问RIP
    • 3、调度器只作入口,但是不做网关,要把服务器的转发功能关闭
    • 4、后端真实服务器的网关也不能指向调度器,RS的数据包不允许经过DS
    • 5、后端真实服务器上,基于LO接口配置VIP的ip地址

    ARP协议:
    网络层协议,将IP地址解析为物理MAC地址
    ARP协议核心:

    • 解决局域网内部的通信问题(DR模式的调度器和后端服务器都在同一个网段中,通过ARP请求实现局域网内部通信)
    • ip地址和mac地址的映射

    1.3 潜在问题

    1、由于调度器和后端真实服务器都有相同地VIP地址,导致响应冲突,ARP通信紊乱

    解决方法:

    对真实服务器进行处理,真实服务器不响应针对VIP的ARP请求

    vip地址使用LO的虚拟地址:arp_ignore=1

    此时后端真实服务器只响应目的ip为本地ip,也就是rip,后端服务器真正ip地址,ens33网卡提供的地址的arp请求

    2、返回报文使用的源地址还是VIP地址,调度器也是VIP,如何将响应返回到客户端不经过调度器

    解决方法:

    对后端服务器做一个内核参数的优化

    arp_announce=2

    系统不使用ip数据包的源地址来设置ARP的请求,而是使用真实的物理网卡的地址

    二、LVS-DR部署实操

    1. 实验配置:
    2. 20.0.0.10:调度器
    3. 20.0.0.20:nfs共享存储
    4. 20.0.0.61:web集群1
    5. 20.0.0.62:web集群2
    6. 20.0.0.100:vip地址

    配置调度器

    1. [root@pup1 ~]# modprobe ip_vs
    2. [root@pup1 ~]# yum -y install ipvsadm
    3. [root@pup1 ~]# ifconfig ens33:0 20.0.0.100/24
    4. [root@pup1 ~]# vim /etc/sysctl.conf
    5. --加入--
    6. net.ipv4.ip_forward = 0
    7. net.ipv4.conf.all.send_redirects = 0
    8. net.ipv4.conf.default.send_redirects = 0
    9. net.ipv4.conf.ens33.send_redirects = 0
    10. -------------------------------------------------------------------------------------------
    11. net.ipv4.ip_forward = 0
    12. #关闭服务器作为网关的转发功能
    13. net.ipv4.conf.all.send_redirects = 0
    14. #控制是否发送ICMP的重定向消息,禁止重定向
    15. net.ipv4.conf.default.send_redirects = 0
    16. #禁止默认网络接口,就是调度器的网卡,发送icmp的重定向消息
    17. net.ipv4.conf.ens33.send_redirects = 0
    18. #指明网卡设备,ens33不发送重定向消息
    19. -------------------------------------------------------------------------------------------
    20. [root@pup1 ~]# sysctl -p
    21. [root@pup1 ~]# ipvsadm -A -t 20.0.0.100:80 -s rr
    22. [root@pup1 ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.61:80 -g
    23. [root@pup1 ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.62:80 -g
    24. [root@pup1 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
    25. [root@pup1 ~]# systemctl restart ipvsadm

    配置完成

    注:若是有bug显示为下图

    配置nfs服务器

    1. [root@pup2 ~]# cd /opt
    2. [root@pup2 opt]# mkdir pup benet
    3. [root@pup2 opt]# vim /etc/exports
    4. --添加--
    5. /opt/pup 20.0.0.0/24(rw,sync)
    6. /opt/benet 20.0.0.0/24(rw,sync)
    7. [root@pup2 opt]# chmod 777 /opt/pup/ /opt/benet/
    8. [root@pup2 opt]# systemctl restart rpcbind
    9. [root@pup2 opt]# systemctl restart nfs
    10. [root@pup2 opt]# exportfs -rv
    11. exporting 20.0.0.0/24:/opt/benet
    12. exporting 20.0.0.0/24:/opt/pup
    13. [root@pup2 opt]# showmount -e
    14. Export list for pup2:
    15. /opt/benet 20.0.0.0/24
    16. /opt/pup 20.0.0.0/24
    17. [root@pup2 opt]# echo "this is pup" > pup/index.html
    18. [root@pup2 opt]# echo "this is benet" > benet/index.html

    配置web服务器

    1. 61
    2. [root@nginx1 ~]# systemctl restart nginx
    3. [root@nginx1 ~]# systemctl restart rpcbind
    4. [root@nginx1 ~]# systemctl restart nfs
    5. [root@nginx1 ~]# showmount -e 20.0.0.20
    6. Export list for 20.0.0.20:
    7. /opt/benet 20.0.0.0/24
    8. /opt/pup 20.0.0.0/24
    9. [root@nginx1 ~]# mount 20.0.0.20:/opt/pup /usr/local/nginx/html/
    10. 62
    11. [root@nginx2 ~]# systemctl restart nginx
    12. [root@nginx2 ~]# systemctl restart rpcbind
    13. [root@nginx2 ~]# systemctl restart nfs
    14. [root@nginx2 ~]# showmount -e 20.0.0.20
    15. Export list for 20.0.0.20:
    16. /opt/benet 20.0.0.0/24
    17. /opt/pup 20.0.0.0/24
    18. [root@nginx2 ~]# mount 20.0.0.20:/opt/benet /usr/local/nginx/html/

    1. 6162相同操作:
    2. [root@nginx1 ~]# cd /etc/sysconfig/network-scripts/
    3. [root@nginx1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
    4. [root@nginx1 network-scripts]# vim ifcfg-lo:0
    5. --删除原内容并加入--
    6. DEVICE=lo:0
    7. ONBOOT=yes
    8. IPADDR=20.0.0.100
    9. NETMASK=255.255.255.255
    10. [root@nginx1 network-scripts]# ifup ifcfg-lo:0

    1. 6162相同操作:
    2. [root@nginx1 network-scripts]# route add -host 20.0.0.100 dev lo:0
    3. #把vip的地址绑定到lo:0,作为LVS的vip,起到标识的作用,告诉调度器进行转发请求的ip地址寻址
    4. [root@nginx1 network-scripts]# vim /etc/sysctl.conf
    5. --加入--
    6. net.ipv4.conf.lo.arp_ignore = 1
    7. net.ipv4.conf.lo.arp_announce = 2
    8. net.ipv4.conf.all.arp_ignore = 1
    9. net.ipv4.conf.all.arp_announce = 2
    10. -------------------------------------------------------------------------------------------
    11. 内核优化:
    12. net.ipv4.conf.lo.arp_ignore = 1
    13. #设置lo接口忽略来自任何接口的arp请求
    14. net.ipv4.conf.lo.arp_announce = 2
    15. #设置lo接口仅会响应本地的ip地址,其他的接口arp请求全部忽略
    16. net.ipv4.conf.all.arp_ignore = 1
    17. #所有接口忽略来自任何接口的arp请求
    18. net.ipv4.conf.all.arp_announce = 2
    19. #所有接口仅会响应本地的ip地址的arp请求,其他接口的arp请求全部忽略
    20. -------------------------------------------------------------------------------------------
    21. [root@nginx1 network-scripts]# sysctl -p

     访问测试

    三、总结补充

    3.1 负载均衡算法设置

    修改负载均衡算法为加权轮询

    [root@pup1 ~]# ipvsadm -ln
    

    1. [root@pup1 ~]# ipvsadm -E -t 20.0.0.100:80 -s wrr
    2. [root@pup1 ~]# ipvsadm -ln

    修改策略的轮询权重

    1. [root@pup1 ~]# ipvsadm -e -t 20.0.0.100:80 -r 20.0.0.61:80 -w 3
    2. [root@pup1 ~]# ipvsadm -e -t 20.0.0.100:80 -r 20.0.0.62:80 -w 4

    修改后先保存

    1. [root@pup1 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
    2. [root@pup1 ~]# systemctl restart ipvsadm

    修改负载均衡算法为目的地址hash

    [root@pup1 ~]# ipvsadm -E -t 20.0.0.100:80 -s dh

     

    3.1 NAT和DR区别

    NAT:
    优点:配置简单
    缺点:性能瓶颈
    真实服务器:ANY
    支持的网络模式:私网
    后端服务器数量:low(10-20)

    DR:(最常用)
    优点:性能最好
    缺点:调度服务器和后端真实服务器不能跨网段
    真实服务器:NO-ARP,(ARP请求只能到真实服务器)
    支持的网络模式:后端服务器既可以是内网,也可以是公网
    真实服务器数量:100

  • 相关阅读:
    LeetCode简单题之算术三元组的数目
    Ubuntu20.04编译Linux内核
    springboot 2.6.6启动原理
    第六天 变量的区别,必使用代码中的命令行参数,可变参数
    破解35岁中年危机
    UE5笔记【三】UE5材质Materials
    Linux:命令行参数和环境变量
    教师生成教案的提示词
    FastApi和Ajax传输图片
    软件考试:计算机组成原理: 指令&数据
  • 原文地址:https://blog.csdn.net/pupcarrot/article/details/133986893