前言:上一章和拐友们讲解了LVS虚拟服务器的NAT模式,这章讲解LVS中的负载均衡中的DR模式

目录

一.LVS-DR工作原理

1.1数据包流向分析

1.2DR模式的特点

二.ARP的问题

2.1问题冲突

2.1.1解决方法

2.2.问题二:第二次再有访问请求

2.2.1解决方法

三.部署LVS-DR环境

3.1配置负载调度器

3.2配置第一台Web节点服务器

3.3配置第二台Web节点服务器(跟上一台服务器配置一致)

四.测试验证

五.总结


一.LVS-DR工作原理

1.1数据包流向分析

  • 用户发送请求到Director Server(负载均衡器),请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间。
  • 由于Director Server和 Real Server 在同一个网络中,所以是通过二层数据链路层来传输。
  • 内核空间判断数据包的目标IP是本机IP,此时IPVS比对数据包请求的服务是否为集群服务,若是,重新封装数据包,修改源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server.
  • Real Server发现请求报文的MAC地址是自己的MAC地址,就接收此报文,重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过lo接口传送给ens33网卡然后向外发出。
  • Real Server直接将响应报文传送到客户端。

1.2DR模式的特点

  • Director Server 和Real Server 必须在同一个物理网络中
  • Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过 互联网对 RIP 进行直接访问。
  • 所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
  • Real Server的网关不允许指向 Director Server IP,即不允许数据包经过 Director S erver。
  • Real Server 上的 lo 接口配置 VIP 的 IP 地址。

二.ARP的问题

2.1问题冲突

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地 址。势必会造成各服务器ARP通信的紊乱

  • 当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
  • 只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

2.1.1解决方法

  • 对节点服务器进行处理,使其不响应针对VIP的ARP请求
  • 用虚接口lo:0承载VIP地址
  • 设置内核参数arp_ ignore=1: 系统只响应目的IP为本地IP的ARP请求

1.路由器发送ARP请求(广播)
2.ARP---->广播去找ip地址解析成mac地址
3.默认使用调度服务器上的外网地址(vip地址)响应,
4.需要在真实服务器上修改内核参数
5.使真实服务器只对自己服务器上的真实IP地址响应ARP解析。

2.2.问题二:第二次再有访问请求

RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址。路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效。

2.2.1解决方法

对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。

1.路由器上绑定了 真实服务器1的mac信息,
2.#请求到达真实服务器
3.在真实服务器上修改内核参数
4.只对所有服务器真实网卡上的地址进行反馈,解析

三.部署LVS-DR环境

#环境简介
DR 服务器:192.168.75.135

vip(虚拟回环):192.168.75.130
web 服务器1:192.168.75.50
web 服务器2:192.168.75.25
客户端:192.168.75.10

3.1配置负载调度器

#关闭防火墙并增强

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

#安装ipvsadm工具

[root@localhost ~]# yum install ipvsadm.x86_64 -y

[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0

#重启网络服务,并开启网卡

[root@localhost network-scripts]# systemctl restart network
 [root@localhost network-scripts]# ifup ifcfg-ens33:0
 [root@localhost network-scripts]# ifconfig

#调整 proc 响应参数并刷新

[root@localhost network-scripts]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@localhost network-scripts]# sysctl -p

#加载模块

[root@localhost network-scripts]# modprobe ip_vs
[root@localhost network-scripts]# cat /proc/net/ip_vs

#配置负载分配策略

[root@localhost network-scripts]# ipvsadm-save >/etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm.service

#清空ipvsadm,并做策略

[root@localhost network-scripts]# ipvsadm -C

[root@localhost network-scripts]# ipvsadm -A -t 192.168.75.130:80 -s rr
 [root@localhost network-scripts]# ipvsadm -a -t 192.168.75.130:80 -r 192.168.75.50 -g
 [root@localhost network-scripts]# ipvsadm -a -t 192.168.75.130:80 -r 192.168.75.25 -g

#保存配置

[root@localhost network-scripts]# ipvsadm   #开启服务
[root@localhost network-scripts]# ipvsadm -ln    #查看策略
[root@localhost network-scripts]# ipvsadm-save >/etc/sysconfig/ipvsadm  #保存

3.2配置第一台Web节点服务器

#关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

#安装httpd并开启服务

[root@localhost ~]# yum install httpd -y

[root@localhost ~]# systemctl start httpd

#创建一个站点文件

[root@localhost ~]# vim /var/www/html/index.html

.#添加回环网卡,修改回环网卡名,IP地址,子网掩码

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
 [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0

[root@localhost network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0
 IPADDR=192.168.75.130
 NETMASK=255.255.255.255
 NETWORK=127.0.0.0

[root@localhost network-scripts]# systemctl restart network

#设置路由

[root@localhost network-scripts]# route add -host 192.168.75.130 dev lo:0
[root@localhost network-scripts]# route -n

#开机执行命令

[root@localhost network-scripts]# vim /etc/rc.d/rc.local
/usr/sbin/route add -host 192.168.75.130 dev lo:0

[root@localhost network-scripts]# chmod +x /etc/rc.d/rc.local

#调整 proc 响应参数

[root@localhost network-scripts]vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore = 1            #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2        #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@localhost network-scripts]# sysctl -p

3.3配置第二台Web节点服务器(跟上一台服务器配置一致)

#关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

#安装httpd并开启服务

[root@localhost ~]# yum install httpd -y

[root@localhost ~]# systemctl start httpd

#创建一个站点文件

[root@localhost ~]# vim /var/www/html/index.html

.#添加回环网卡,修改回环网卡名,IP地址,子网掩码

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
 [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0

[root@localhost network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0
 IPADDR=192.168.75.130
 NETMASK=255.255.255.255
 NETWORK=127.0.0.0

[root@localhost network-scripts]# systemctl restart network

#设置路由

[root@localhost network-scripts]# route add -host 192.168.75.130 dev lo:0
[root@localhost network-scripts]# route -n

#开机执行命令

[root@localhost network-scripts]# vim /etc/rc.d/rc.local
/usr/sbin/route add -host 192.168.75.130 dev lo:0

[root@localhost network-scripts]# chmod +x /etc/rc.d/rc.local

#调整 proc 响应参数

[root@localhost network-scripts]vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore = 1            #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2        #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@localhost network-scripts]# sysctl -p

四.测试验证

五.总结

1.介绍了lvs-dr的工作原理、数据流向,并对其中出现的问题进行阐述。

2.介绍了LVS-DR的特点及优缺点

3.部署内网LVS-DR

LVS负载均衡之--DR模式相关推荐

  1. LVS负载均衡与DR模式

    LVS负载均衡与DR模式 一.DR模式的特点 二.LVS-DR中的ARP问题 1.VIP地址相同导致响应冲突 2.返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱 三.DR模式 LVS负载均 ...

  2. LVS负载均衡之DR模式

    LVS负载均衡之DR模式 一.LVS-DR数据包流量分析 客户端向目标VIP发送请求,负载均衡器接收 负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为 ...

  3. LVS负载均衡群集——NAT模式实例

    目录 一:企业群集应用概述 1.1群集的含义 1.2群集存在的必要 1.3解决的方法 二:企业群集的分类 2.1负载均衡群集(Load Balance Cluster) 2.2高可用群集(High A ...

  4. LVS负载均衡!LVS-NAT模式部署!

    lvs负载均衡 一.企业集群概述 1.集群的含义(cluster) 2.存在的问题 3.问题解决的方法 二.企业集群分类 1.负载均衡群集(Load Balance Cluster) 2.高可用集群 ...

  5. LVS负载均衡之NAT模式

    LVS负载均衡之NAT模式 重点理解NAT方式的实现原理和数据包的改变. (a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链. 此时报文的 ...

  6. LVS负载均衡群集—NAT模式实例

    文章目录 前言 一.群集与分布式 1.1 群集的含义 1.2 系统性能扩展方式 1.3 群集的三种类型 1.4 LVS的负载调度算法 1.5 分布式系统 1.6 集群和分布式 1.7 负载均衡群集架构 ...

  7. LVS 负载均衡群集----NAT模式

    目录 一.企业群集应用概述 1.1 群集的含义 1.2 问题 1.3 解决办法 1.4 系统性能扩展方式 二.企业群集分类 2.1  负载均衡群集 2.2  高可用群集 2.3  高性能运算群集 三. ...

  8. LVS负载均衡群集 --NAT模式实战部署(图文详解)

    目录 一.群集应用概述 1.1 群集的含义 1.2 应用场景出现高并发的解决方案 1.3 系统性能扩展方式 1.4 群集的三种分类 1.4.1 负载均衡群集 1.4.2 高可用群集 1.4.3 高性能 ...

  9. LVS负载均衡和nat模式的实操

    LVS理论和实操 一.企业群集应用概述 1.群集的含义 2.问题 3.解决方法 总结: 二.集群的分类 三.负载均衡群集架构 四.LVS负载均衡群集工作模式分析 1.负载均衡群集是目前企业用得最多的群 ...

最新文章

  1. 调试uIP出现死机问题
  2. 在windows程序中嵌入Lua脚本引擎--编写自己的Lua库
  3. 详解死机的原因和预防方法
  4. 固态铝电解电容与液态铝电解电容
  5. 改造Dubbo,使其可以对接口方法进行注解配置
  6. 用算法代替生物大脑,90后博士造出活的微型机器人登上Science子刊
  7. asp.net mvc项目实例_降龙-第13章:MVC开发准备
  8. 16 --删除排序数组中的重复项
  9. 转:6.1海量数据处理
  10. table 样式详解
  11. 虚拟服务器(dmz),dmz虚拟主机(dmz主机和虚拟服务器区别)
  12. 从上千篇投稿脱颖而出,这5篇大数据论文凭什么征服KDD评委?
  13. 自学python免费教材-python零基础自学教材
  14. 运动目标跟踪(十六)--OAB,SemiT,BSBT跟踪
  15. 【RL-GAN-Net】强化学习控制GAN网络,用于实时点云形状的补全。
  16. 【JSP课程设计(含源码)】宾馆客房管理系统(2021-7-2最新版)
  17. Blender 合成节点 中英文对照
  18. 安装Ubuntu后找不到windows启动项的解决办法
  19. 盘点好用的 Markdown 编辑器
  20. Oracle练习题(三)

热门文章

  1. go 调用faiss服务
  2. cisco将计算机配置为vlan2,Cisco Packet Tracer VLAN 配置
  3. JavaScript cookie操作实现点赞功能
  4. 无人机仿真之搭建仿真平台-SITL、gazebo、ROS
  5. 泰语7个元音变形_泰语元音的三种拼合方式
  6. EXCEL如何快速【选中】或【跳到】当前列的最后一个数据?
  7. unity点击UI防止触碰UI后面物体
  8. python 贪吃蛇_python简易贪吃蛇
  9. 大数据时代网络信息安全如何保障
  10. python数据库操作sqlite_python操作数据库之sqlite3打开数据库、删除、修改示例