lvs负载均衡DR模式

 LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统

虚拟网络服务的主要技术IP负载均衡技术,VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术

基于DR的LVS负载均衡

在LVS(TUN)模式下,由于需要在LVS调度器与真实服务器之间创建隧道连接,这同样会增加服务器的负担。与LVS(TUN)类似,DR模式也叫直接路由模式,其体系结构如图4所示,该模式中LVS依然仅承担数据的入站请求以及根据算法选出合理的真实服务器,最终由后端真实服务器负责将响应数据包发送返回给客户端。与隧道模式不同的是,直接路由模式(DR模式)要求调度器与后端服务器必须在同一个局域网内,VIP地址需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的。由于多台计算机都设置了同样一个VIP地址,所以在直接路由模式中要求调度器的VIP地址是对外可见的,客户端需要将请求数据包发送到调度器主机,而所有的真实服务器的VIP地址必须配置在Non-ARP的网络设备上,也就是该网络设备并不会向外广播自己的MAC及对应的IP地址,真实服务器的VIP对外界是不可见的,但真实服务器却可以接受目标地址VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址。调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的VIP不需要对外界可见。

 ipvsadm是ipvsadm是linux下的LVS虚拟服务器的管理工具,LVS工作于内核空间,而ipvsadm则提供了用户空间的接口;分别用于设置虚拟服务算法和后端真实服务器


-A   --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E   --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D   --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C   --clear 清除内核虚拟服务器表中的所有记录。
-R   --restore 恢复虚拟服务器规则
-S   --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a   --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e   --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d   --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L| -l  --list 显示内核虚拟服务器表
-Z   --zero 虚拟服务表计数器清零(清空当前的连接数量等)
      --set tcp tcpfin udp 设置连接超时值
      --start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是  master 或是backup。在这个功能上也可以采用keepalived 的VRRP 功能。
     --stop-daemon 停止同步守护进程
-h   --help 显示帮助信息
其他的选项:
-t    --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务
-u  --udp-service service-address 说明虚拟服务器提供的是udp 的服务
-f   --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。

 调度器的安装主机server1:

ip addr add 172.25.254.110/24 dev eth0  ##添加vip的地址到本机

ipvsadm -l  ##显示内核虚拟服务器表

ipvsadm -ln ## 显示内核虚拟服务器表,以数字形式显示ip端口

ipvsadm --help

ipvsadm -A -t 172.25.254.110:80 -s rr ## 添加虚拟服务器,协议为tcp 算法为rr(轮询调度)

轮询调度(Round Robin 简称'RR')算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。
ipvsadm -a -t 172.25.254.110:80 -r 172.25.254.2:80 -g ##添加rs(真实服务器)到集群
ipvsadm -a -t 172.25.254.110:80 -r 172.25.254.3:80 -g

 在rs端server2上

  在rs端server3上

 ip addr add 172.25.254.110/32 dev eth0  ##添加vip的地址到本机

测试:在真机中反复执行此命令发现虚拟机2,3是交换的,实现了负载均衡

在调度 器上应答次数发生变化

ARP协议是将IP地址映射为MAC地址的协议,其在协议上使用ARP 请求及应答报文实现

arp -an | grep 110 ##显示110的当前  ARP 缓存表 

 arp -d 172.25.254.110 ##删除指定的 IP 地址项 

此时只有server3已经不能轮询访问了,说明此时客户端向vip发起请求时,没有经过调度器而是直接到达了rs

与server3的MAC地址匹配

再删除一次 ,出现轮询访问

为了防止客户端直接访问真实服务器,需要禁止设备ARP响应

在rs的server2中

arptables 是一个用户空间,用于管理内核中的ARP规则表,规则检查处理的是ARP数据帧

ilter表有三个链,INPUT和OUTPUT,INPUT用于处理目标为发给本机目标为本机的包,OUTPUT处理本机发出去的包.RORWARD是转发ARP包

 arptables --help

-A,追加规则

-D, 删除指定规则

-I, 插入规则

-R, 替换规则

-L, 列出规则

-F, 删除所有规则

 arptables -nL  ##查看策略

arptables -A INPUT -d 172.25.254.110 -j DROP ###当网内广播需要172.25.254.110这个ip时,它将丢弃网内的所有请求

arptables -A OUTPUT -s 172.25.254.110 -j mangle --mangle-ip-s 172.25.254.3 ###当它自身需要在网内发包时,伪装为自己原本的ip172.25.254.3

将操作保存到配置文件中

 arptables -F ##删除策略,重启服务之后会重新显示

在rs的server3上进行相同操作:

测试:

关闭server2只能访问server3

server2和server3同时关闭httpd

只关掉server3

 删除原来绑定的MAC地址,再次测试,此时发现可以轮循,且经过调度器

arp -d 172.25.254.110 ##清理缓存

因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面 

由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。

 DR:client  -> vs ->RS ->client

NAT: clent -> vs -> RS ->vs -> client

TUN: client ->vs ->RS -> client

 lsmod ##列出所有模块

ip_vs_rr  ##ip_vs的调度算法

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值