设为首页 收藏本站
查看: 844|回复: 0

[经验分享] LVS基本知识总结及其NAT模型与DR模型的实现

[复制链接]

尚未签到

发表于 2019-1-4 14:07:13 | 显示全部楼层 |阅读模式
在企业的运行中,LVS的负载均衡机制使得我们可以投入更少的成本并且可以让服务集群发挥更高的性能为客户服务,那么LVS到底是什么?以及它是怎么实现的呢?下面我们一起来看一看吧

高可用LVS集群系统结构图


  LVS概念
  LVSLinuxVirtual Server的简写即是Linux虚拟服务器,是一个虚拟的服务器集群系统;LVS是由进行对请求合理分配的调度器以及多台提供服务的实际运行的应用服务器组成,并且可以根据企业自身的需求对其进行合理,灵活的架构;在有众多客户端进行幷发访问企业相关服务器的时候,LVS集群中的调度服务器可以将大量的服务请求根据调度器自身多种不同的算法进行合理的分发;从而实现基于IP,连接数以及访问量等多种类型的负载均衡。而且一旦集群中的某台真实服务器出现故障而不可用时,集群软件能够快速侦测到这一状况并将服务请求定向到其它的正在运行的应用服务器上
  LVS类型介绍
  LB:load Balancing:负载均衡集群--大容量、增加处理能力;例如:通过rsync完成web服务器之间的页面复制即在一台web服务器上存储页面,其他web服务器从此服务上进行同步;并且可以通过内核中inotify机制进行通知其他服务器页面变化情况;让其他服务器不用等到指定的同步时间进行同步,实行立即同步
  HA:High Availabilty:高可用集群--实时在线一年在线时间为99.999%;例如当一台服务器挂掉可以通过调度器重新发送请求,不会因为一台服务器的崩溃而导致整个服务器的的挂掉,可以继续提供服务;这种高可用能力是依赖前端服务器调度的(调度机制的分发请求可根据后端服务器的状态检测;前端主机也会通过周期性的检测来判断节点服务器的在线状态)
  HP(HPC):High Performance:高性能集群--具有超高级计算能力;例如:评估每秒钟的浮点计算能力等;应用领域一般都是科学计算、天气预报等一些大型数据计算
  LVS组成结构
  负载均衡实现方案
  基于DNS域名轮流解析的方法
  基于客户端调度访问的方法
  基于应用层系统负载的调度方法
  基于IP地址的调度方法
  其中基于IP的负载调度算法中,IP负载均衡技术是执行效率最高的;所以下面以介绍IP负载调度方法为主
  IP调度方法技术实现
  LVSIP负载均衡技术是通过IPVS模块实现,IPVS是安装在Director Server上的一个核心软件,通过在Director Server上虚拟出一个IP地址即VIP;客户端可通过这个虚拟的IP地址来访问服务器,当客户端请求通过访问VIP地址到的DirectorServer上后,然后根据负载调度器上的各种算法分发客户端请求到相对空闲或者是处理效率较高、性能较好的Real Server
  IPVS实现负载均衡的三种方式
  VS/NAT:Virtual Server via Network AddressTranslation;调度器通过将请求报文的目标地址(VIP)改写成选定的RealServer地址,同时将报文的目标端口也改写成指定的Real Server的相应端口,最终将报文请求发送到选定的Real Server 上。Real Server将报文数据返回给客户端时,需要经过负载均衡器将报文源地址和源端口改写成Director Server上的VIP地址和相应端口,然后通过DirectorServer将报文数据返回给客户端
  VS/DR:Virtual Server via Direct Routing,DR方式通过改写请求的MAC地址通过Director Server将请求发送到Real Server,然后Real Server直接将客户端请求响应给客户端,Director Server只是做客户端请求的处理;其性能较好,也是应用最多的一种方式,DR方式中Director ServerDIPReal ServerRIP在同一网段内
  VS/TUN:Virtual Server via IP Tunncling;客户端请求发送到Director Server上,然后调度器采用IP隧道技术将用户请求转送到远程的Real Server上,Real Server接受报文直接响应给客户端,TUNDR不同点在于DR中的DIPRIP在同一个网段,而TUN实现了DIPRIP相异两地的情况
  负载调度器算法
  
1
轮叫调度(
Round Robin

  “轮叫”调度算法也可称为1:1调度算法;将外部请求按顺序1:1的轮流分配到集群中的Real Server上,平等制的分发客户端请求,不比较Real Server上的实际连接数和系统负载
  2加权轮叫(Weighted Round Robin
  “加权轮叫”调度算法根据RealServer的不同处理能力来调度客户端访问请求,可以对每台Real Server配置不同的权值;权越高处理的客户端请求越多;这样可以保证处理能力强的Real Server能处理更多的访问流量。Director Server也可以自动问询Real Server的负载情况,并动态地调整其权值
  3 最少链接(Least Connections
  “最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。适用于具有相近系统性能的Real Server
  4 加权最少链接(Weighted Least Connections
  “加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载,适用于在性能方面相差较大的Real Server
  5 基于局部性的最少链接(Locality-Based Least Connections
  “基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,根据请求的目标IP地址找出该目标IP地址最近使用的Real Server,若该Real Server是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器
  6 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication
  “带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度
  7 目标地址散列(Destination Hashing
  “目标地址散列”调度算法根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空
  8 源地址散列(Source Hashing
  “源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空
  LVS NAT模型实现
  IP地址规划
  Director Server
  Real Server1
  Real Server2
  DIP
  172.16.51.71
  RIP
  172.16.51.77
  RIP
  172.16.51.78
  VIP
  192.168.0.10




  在要配置的Director的服务器上添加两块网卡,eth0VIPeth1DIP;VIP地址是192.168.0.10,DIP地址是172.16.51.71;在虚拟的配置中DIP网络连接方式设置为hostonly方式,Real Server也配置为host only安装ipvsadm
  # yum install ipvsadm -y
  准备Real Server
  配置这两台RealServer服务器的RIP,
网关是
DIP


  配置这两台RealServer服务器的RIP,
网关是
DIP

  

  完成Real Server服务器的web服务器的安装,提供相应的页面172.16.51.77服务器
  # yum install httpd -y
  # echo “RS1 magedu.com” >/var/www/html/index.html
  172.16.51.78服务器web服务器准备

  # yum install httpd yes
  # echo “RS2 magedu.com” >/var/www/html/index.html
  同步时间
  可以配置DirectorServer为时间服务器使其服务器之间的时间是相同的,自己配置时间服务器或者使用一个专用时间服务器,Real Server与Director Server都从此服务器上进行同步,默认时间服务是开启的同步时需要关闭
  关闭命令
  # server ntpd stop
  同步命令
  # ntpdate 172.16.0.1
  重启网络服务与web服务
  Director测试Real Server上的web服务是否可以进行访问
  添加集群服务
  # ipvsadm -A -t 192.168.0.10:80 -s rr
  # ipvsadm -a -t 192.168.0.10:80 -r172.16.51.77 –m
  # ipvsadm -a -t 192.168.0.10:80 -r172.16.51.78 –m
  Ipvsadm规则查看

  使用window端浏览器进行验证
  
  刷新一次
  
  Real Server各自连接次数查看

  刷新N遍之后,查看连接次数与进出报文数据大小

  调整LVS调度方法为wrr
  更改ipvsadm规则
  # ipvsadm -E -t 192.168.0.10:80 -s wrr
  # ipvsadm -e -t 192.168.0.10:80 -r172.16.51.77 -m -w 3
  # ipvsadm -e -t 192.168.0.10:80 -r172.16.51.78 -m -w 1
  查看更改调度方法后规则

  为了查看效果使用另外一个客户端对其进行了压力测试
  # ab –n 2000 –c 100 http://192.168.0.10/index.html
  访问次数与进出报文数据查看
  
  LVS DR模型的实现
DR模型实验结构图

  
  实验设备介绍
  实验中是在VM9上完成的,系统是红帽5.8;共开启了5台虚拟机,两台Real Server,一台Director Server,一台路由设备B,一个window XP客户端(路由设备A这里没有添加使用,测试时直接配置window XP的地址与VIP在同一网段,网卡连接模式为桥接)
  图示内容介绍
  大写字母CIP地址是公网地址,与Director Server是同一网段
  大写字母V: Director Server上的VIP,是公网地址,与路由设备AC网卡地址是同一网段
  大写字母DDirector Server上的DIP,是内网地址
  大写字母RReal ServerRIP,是内网地址,与DIP是同一网段,连接在同一个交换机上
  数字1:路由设备A的真正连接到因特网上的网卡接口
  数字2:路由设备B的连接RIP的网卡是内网地址
  数字3:路由设备B的连接因特网的网卡,地址是公网地址
  DR模型实现流程
  外网客户端访问Director上的VIP地址,其过程是客户端通过因特网,然后通过路由设备与VIP建立通信,此时VIP与这个路由设备的网卡地址是在同一个网段的,请求到达Director后,通过交换机就可以把请求转发到Real Server上,Real Server向外响应报文时,源地址是VIP;但是可以与路由通信的是RealServer上的RIP,所以RIP是报文的回应接口(但源地址是VIP);RIP完成请求回应,则其网关是RIP所指定的网关,但是此时RIPDIP是同一个网段,VIP是公网的一个网段,所以此时RIP要实现通信就要借助一个中间设备建立连接然后实现与外网的通信,每个Real ServerVIP需要屏蔽ARP地址请求的响应,根据arptablesarp地址进行访问控制
  arp_announce:向外通告本机源地址的时候,设定通告级别
  0:只要本地配置的有相应地址,就给予响应
  1:仅在请求的目标地址配置请求到达的接口上的时候,才给予响应
  2:仅向与本地接口上地址匹配的网络进行通告
  arp_ignore:设定接受arp广播地址请求的时候的响应级别
  0:将本地任何接口上的任何地址向外通告;
  1:仅在目标IP是本地地址,并且配置在arp地址请求进来的接口上时,才给予响应
  2:仅向与本地接口上地址匹配的网络进行通告;
  3:不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
  4-7保留未使用
  8:不回应所有(本地地址)的arp查询
  地址规划
  Director Server
  Real Server1
  Real Server2
  路由设备B
  DIP
  172.16.51.76
  RIP
  172.16.51.77
  RIP
  172.16.51.78
  Eth1
  172.16.51.69
  VIP
  10.10.10.10
  VIP
  10.10.10.10
  VIP
  10.10.10.10
  Eth0
  10.10.10.21
  DirectorServer地址配置
  DirectorServer eth0上配置DIP地址(模拟为内网网段)

  Director ServerVIP地址配置
  # ifconfig eth0:0 10.10.10.10/8
  设定路由,定义当是请求VIP地址时让eth0:0接口作为送出报文接口
  # route add –host 10.10.10.10/8dev eth0:0
  RS1RIP地址配置

  配置RS1arp_announcearp_ignore配置
  网卡eth0配置
  # sysctl –wnet.ipv4.conf.eth0.arp_announce=2
  全局配置
  # sysctl –wnet.ipv4.conf.all.arp_announce=2
  配置RS1arp_ignore
  网卡eth0配置
  #sysctl –w net.ipv4.conf.eth0.arp_ignore=1
  #sysctl –w net.ipv4.conf.all.arp_ignore=1
  配置的广播地址是自己的地址掩码是255.255.255.255:意思此地址只跟自己在同一网段内不跟其他任何地址在同一网段内
  # ifconfig lo:0 10.10.10.10broadcast 10.10.10.10  netmask 255.255.255.255 up
  添加路由
  # route add –host 10.10.10.10 dev lo:0
  RS2RIP地址配置
  
  配置RS1arp_announcearp_ignore配置
  网卡eth0配置
  # sysctl –wnet.ipv4.conf.eth0.arp_announce=2
  全局配置
  # sysctl –w net.ipv4.conf.all.arp_announce=2
  配置RS1arp_ignore
  网卡eth0配置
  #sysctl –w net.ipv4.conf.eth0.arp_ignore=1
  #sysctl –w net.ipv4.conf.all.arp_ignore=1
  配置VIP地址
  # ifconfig lo:0 10.10.10.10 broadcast 10.10.10.10 netmask 255.255.255.255 up
  添加路由
  # route add –host 10.10.10.10 dev lo:0
  Director Server测试RS1RS2 web服务是否正常
  
  设定ipvsadm规则
  # ipvsadm –A –t 192.168.0.100:80 –s wlc
  # ipvsadm –a –t 192.168.0.100:80 –r172.16.51.77 –g –w 2
  # ipvsadm –a –t 192.168.0.100:80 –r172.16.51.78 –g –w 1
  查看ipvsadm规则

  路由设备B的相关配置
  网卡eth1模拟为内网地址,与Real ServerRIP在同一个网段

  网卡eth0模拟为内网地址,与Real ServerVIP在同一个网段

  打开路由器B设备的路由转发功能
  # echo “1”  >/pro/sys/net/ipv4/ip_forward
  RS1RS2上添加路由使其可以通过路由设备B将报文通过互联网送至客户端
  # route add –net default gw 172.16.51.69
  模拟的外网客户端IP地址配置(虚拟机中window XP机器)

  客户端浏览器访问VIP

  刷新一下

  刷新N次之后,查看分发请求次数及请求报文数据

  LVS的基本知识及NAT与DR模型就实现完成了,这些只是LVS的一些很基本知识介绍,相关配置会在博文中继续更新的
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-659367-1-1.html 上篇帖子: Centos7.3部署LVS负载均衡 下篇帖子: 浅谈LVS NET架构的简单配置和应用(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表