• LVS+DR部署


    LVS-DR的工作原理:

    1.客户端会发送请求到vip

    2.LVS的调度器接受请求之后,根据算法选择一台真实服务器,请求转发到后端RS,请求的报文的目的MAC地址,修改成后端真实服务器的MAC地址,转发。

    3.后端真实服务器处理接受请求,处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的mac地址修改成客户端的MAC地址,直接把响应报文转发到客户端

    4.调度器,后端真实服务器都有VIP地址,调度器和后端真实服务器在同一网段。

    核心:用MAC地址做转发

    DR模式的特点:

    1.调度器的IP和真实服务器的IP必须在同一个物理网络中

    2.真实服务器的IP地址可以是私有地址,也可以是公网地址。如果配置的公网,则可以通过互联网直接访问。

    3.调度器只作为访问入口,但是不做网关(即不对数据进行转发),要把服务器的转发功能关闭

    4.后端真实服务器的网关也不能指向调度器,真实服务器的数据包不允许经过调度器。

    5.后端真实服务器上,基于LO接口配置VRRP的IP地址

    DR模式的调度器和后端服务器都在一个网段中,通过ARP请求实现局域网

    VIP:标识后端的真实服务器,保证调度器和后端服务器之间的通信,保证请求可以正确的转发到后端服务器,实现高可用和故障转移

    常见问题

    问题1:

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

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

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

    后端服务器只响应目的IP为本地IP,也就是RIP。后端服务器的真正IP地址。ens33网卡提供的地址。

    问题2:

    返回报文使用的源地址还是VIP地址,调度器还是VIP,怎么把响应返回到客户端不经过调度器?

    后端真实服务器做一个内核参数的优化:arp_announce=2 系统不使用IP数据包的源地址,来设置arp的请求。真实的物理网卡地址。

    LVS+DR的负载均衡部署

    1. test1 20.0.0.10 调度器
    2. test2 20.0.0.20 web集群1
    3. test3 20.0.0.30 web集群2
    4. test4 NFS
    5. VIP 20.0.0.100
    6. 客户端随机选择
    7. 关闭防火墙
    8. systemctl stop firewalld
    9. setenforce 0
    10. test1
    11. modprobe ip_vs
    12. yum -y install ipvsadm
    13. //配置vip地址
    14. ifconfig ens33:0 20.0.0.100/24
    15. //虚拟网卡
    16. //调度器的内核优化
    17. vim /etc/sysctl.conf
    18. net.ipv4.ip_forward=0
    19. #关闭服务器作为网关的转发功能
    20. net.ipv4.conf.all.send_redirects = 0
    21. #控制是否发送ICMP的重定向消息,禁止重定向
    22. net.ipv4.conf.default.send_redirects = 0
    23. #禁止默认网络接口,就是调度器的网卡,发送ICMP的重定向消息
    24. net.ipv4.conf.ens33.send_redirects = 0
    25. #指明网卡设备,ens33不发送重定向消息
    26. wq!
    27. sysctl -p
    28. ipvsadm -A -t 20.0.0.100:80 -s rr
    29. ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.20:80 -g
    30. ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.30:80 -g
    31. ipvsadm-save > /etc/sysconfig/ipvsadm
    32. systemctl restart ipvsadm.service
    33. ipvsadm -D -t 20.0.0.10:80
    34. ipvsadm -ln
    35. ipvsadm -A -t 20.0.0.100:80 -s rr
    36. ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.20:80 -g
    37. ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.30:80 -g
    38. test4
    39. mkdir kgc benet
    40. vim /etc/exports
    41. /opt/kgc 20.0.0.0/24(rw,sync)
    42. /opt/benet 20.0.0.0/24(rw,sync)
    43. wq!
    44. chmod 777 /opt/kgc /opt/benet
    45. systemctl restart rpcbind
    46. systemctl restart nfs
    47. exportfs -rv
    48. showmount -e
    49. echo "this is kgc" > /
    50. test2
    51. yum -y install nginx
    52. systemctl restart nginx
    53. systemctl restart rpcbind
    54. systemctl restart nfs
    55. showmount -e 20.0.0.40
    56. mount 20.0.0.10:/opt/kgc /usr/share/nginx/html
    57. curl 20.0.0.20
    58. cd /etc/ssyconfig/network-script
    59. cp ifcfg-lo ifcfg-lo:0
    60. vim ifcfg-lo:0
    61. DEVICE=lo:0
    62. ONBOOT=yes
    63. IPADDR=20.0.0.100
    64. NETMASK=255.255.255.255
    65. ifup lo:0
    66. route add -host 20.0.0.100 dev lo:0
    67. //添加一个路由,把vip的地址绑定到lo:0。作为LVS的VIP地址,标识,告诉调度器,进行转发请求的IP地址寻址
    68. vim /etc/sysctl.conf
    69. net.ipv4.conf.lo.arp_ignore=1
    70. //设置lo接口忽略任何接口的ARP请求
    71. net.ipv4.conf.lo.arp_announce=2
    72. //设置lo接口仅会相应本地的IP地址,其他的接口ARP请求全部忽略
    73. net.ipv4.conf.all.arp_ignore=1
    74. //所有接口忽略来自任务接口的ARP请求
    75. net.ipv4.conf.all.arp_announce=2
    76. //所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略
    77. test3
    78. yum -y install nginx
    79. mount 20.0.0.40:/opt/benet /usr/share/nginx/html
    80. cd /etc/ssyconfig/network-script
    81. cp ifcfg-lo ifcfg-lo:0
    82. vim ifcfg-lo:0
    83. DEVICE=lo:0
    84. ONBOOT=yes
    85. IPADDR=20.0.0.100
    86. NETMASK=255.255.255.255
    87. ifup lo:0
    88. vim /etc/sysctl.conf
    89. net.ipv4.conf.lo.arp_ignore=1
    90. //设置lo接口忽略任何接口的ARP请求
    91. net.ipv4.conf.lo.arp_announce=2
    92. //设置lo接口仅会相应本地的IP地址,其他的接口ARP请求全部忽略
    93. net.ipv4.conf.all.arp_ignore=1
    94. //所有接口忽略来自任务接口的ARP请求
    95. net.ipv4.conf.all.arp_announce=2
    96. //所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略

    总结

    DR模式核心:相应客户端由后端的真实服务器来完成,不需要经过调度器

    VIP作用

    vip地址:调度器和后端服务器都要有vip地址

    vip地址:暴露访问地址 , 调度器转发请求的标识 , 调度器和后端服务器之间的通信 , 高可用(DR)

    其他所有的请求和响应都是禁用

    NAT工作原理:

    1、 在调度器上配置双网卡,一个指内,一个指外

    2、 配置一个可以和公网进行通信的VIP

    3、 通过配置转发策略,访问公网的VIP会把请求转发到后台的RS。请求的格式是报文。调度器会修改请求的目标IP地址和端口(12.0.0.1:80 20.0.0.20:80)

    4、 RS处理完请求后响应客户端,先到调度器,调度器进行地址转换,把内网地址转换成公网地址。最后响应调度器给用户。 20.0.0.20:80 ---- 调度器 ---- nat地址转换 ----- 12.0.0.1:80 ---- 客户端

    客户端进入是改请求报文。出去是地址转换 转发由调度器通过算法来完成,后端服务器只管接受响应。也不需要修改任何配置。
     

    DR工作原理:

    1、 客户端发送请求到vip

    2、 LVS的调度器接受请求后,根据算法选择一台后端的真实服务器,请求转发到后端RS,请求报文的目的MAC地址。修改成后端真实服务器的MAC地址。然后转发。

    3、 后端真实服务器接受请求,处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的MAC地址修改。直接把响应报文转发到客户端。

    4、 调度器,后端真实服务器都有vip地址,调度的地址和后端真实服务器在同一网段。

    客户端进入时请求调度器的VIP地址,通过LVS交换器配置的算法把请求的目的MAC地址,修改为后台的真实服务器的MAC地址。实现转发。后端服务器处理完成后,会修改响应报文中的目的MAC地址,之间转发到客户端。
     

  • 相关阅读:
    使用Python操作CSV文件,方便又快捷
    功率信号源有哪些波形类型
    山西电力市场日前价格预测【2023-09-20】
    【vue3+ts后台管理】登录页面完成
    你需要的免费热门API接口这里都有~
    北京/上海/广州/深圳DAMA-CDGA/CDGP数据治理认近期开班
    Java各中依赖包介绍
    Java零基础入门------------笔记一(基础概念1.0)
    今年秋招太难了,四点建议分享
    【Python】基于OpenCv的智能人脸识别,教你轻松拿下Python项目之首(附源码+仓库地址)
  • 原文地址:https://blog.csdn.net/qq_51506982/article/details/133996368