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

[经验分享] LVS负载均衡使用详解

[复制链接]

尚未签到

发表于 2019-1-5 12:37:17 | 显示全部楼层 |阅读模式
  一、基本概览介绍

  二、LVS的类型及原理
  三、LVS调度算法
  四、利用DR及NAT实现web负载均衡
  

  一、基本概览介绍
      LVS是一个工作在传输层面上的一个负载均衡软件,它是由用户空间的ipvsadm和内核空间的ipvs两个组件组成。其中ipvsadm是用户空间的命令行工具,主要是用于管理集群服务及集群服务上的RS。ipvs是工作与内核上的netfilter的INPUT链上的程序,可以根据用户事先定义的集群实现转发。

  

  二、LVS的类型及原理
  LVS的类型可以分为:NAT、DR、TUN、FULLNAT四中类型

  

  LVS-NAT模型:需要将RS的网关指向LVS的DIP地址
      原理: 通过将请求报文中的目标地址和目标端口修改为挑选出来的某RS的RIP和PORT,从而实现转发

      流程:
  ①客户端将请求发往前端的负载均衡器,请求报文的源地址是CIP,目标地址是VIP
  ②负载均衡器收到报文后,正常情况报文是进入用户空间的,但是发现请求是规则里面存在的地址,那么将报文的目标地址改为后端RS服务器的RIP地址,原CIP不变,然后将报文发走。
  ③报文送到RS服务器后,由于报文的目标地址是自己,所有会响应客户端的请求,并将包文返回给调度器,此时原地址为RIP,目标地址为CIP
  ④ 调度器收到报文后,将此报文的源地址改为VIP,然后将报文返回给客户端。
  

  

  LVS-DR模型:
      原理:源和目标的ip及端口都不发送改变,通过将请求报文重新封装一个MAC首部进行转发,源MAC是DIP接口的MAC,目标MAC是RS服务器的RIP接口的MAC
      流程:
   ①客户端将请求报文发往lvs调度器,请求报文源地址是CIP,目标地址为VIP,源MAC是CMAC,目标MAC是LVS的VIP接口的MAC
  ②LVS收到报文后,发现请求是定义规则中的,那么它将客户端的请求报文的源MAC地址重新封装为自己DIP,目标MAC 改为挑选出来的RS的VIP接口的MAC地址。
  ③RS收到报文后,发现报文中目的MAC是自己VIP接口的MAC,就会接下报文出来后,将直接回应给客户端
  

  

  LSV-TUN模型:
      原理:不修改请求报文中的IP首部(源ip为CIP,目标IP为VIP),而是在原IP首部之外再封装一个IP首部(源ip为DIP,目标IP为挑选出来的RS的RIP),然后将报文发往挑选出来的目标RS
  

  LSV-FULLNAT模型:

      原理:通过同时修改请求报文中的源IP地址和目标IP地址进行转发

                 
  

  三、LVS调度算法
  根据其调度时是否考虑后端主机的当前负载情况,可以分为静态方法和动态方法:
  静态算法:调度器仅仅是根据算法本身来进行调度,而不考虑后的那RS的实际连接和负载情况,注重的是起点公平
          RR:轮询调度

          WRR:加权轮询

          SH:源地址哈希,将来自同一IP地址的请求始终发往第一次挑中的Rs中,可以实现会话绑定

          DH:目标地址哈希:将发往同一个目标地址的请求,始终转发到第一次挑中的Rs

  

  

  动态算法:
          LC:最少连接

          WLC:加权最少连接

          SED:最短期望延迟

          NQ:永不排队的连接

          LBLC:基于本地最少连接,动态DH算法

          LBLCR:带复制功能的LBLC

  

  
四、利用DR及NAT实现web负载均衡
  基于NAT模型的web负载:
  
  

  配置Real Server
  RS1:

###配置IP地址和网关,网关指向DIP:
[root@pxe132 ~]# route add default gw 192.168.100.100
###配置一个httpd测试网页:
[root@pxe132 ~]# yum -y install httpd
[root@pxe132 ~]# echo "Rserver 1" >/var/www/html/index.html
[root@pxe132 ~]# systemctl start httpd.service  RS2
###配置IP地址和网关,网关指向DIP:
[root@pxe132 ~]# route add default gw 192.168.100.100
###配置一个httpd测试网页:
[root@pxe132 ~]# yum -y install httpd
[root@pxe132 ~]# echo "Rserver 2" >/var/www/html/index.html
[root@pxe132 ~]# systemctl start httpd.service  

  配置Director
##配置IP地址省略:
##配置路由转发功能:
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
###测试下我们环境是否正常:
[root@localhost ~]# curl http://192.168.1.10
Rserver 1
[root@localhost ~]# curl http://192.168.1.20
Rserver 2  添加规则:
[root@localhost ~]# ipvsadm -A -t 172.16.100.1:80 -s rr
[root@localhost ~]# ipvsadm -a -t 172.16.100.1:80 -r 192.168.1.10:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 172.16.100.1:80 -r 192.168.1.20:80 -m -w 1  查看规则信息:

[root@localhost ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.100.1:http rr
  -> 192.168.1.10:http             Masq    1  0  0         
  -> 192.168.1.20:http             Masq    1  0  0  

  

  基于LVS-DR模型的web负载

配置Director

[root@bogon ~]# ifconfig eno16777736:1 192.168.1.100/32 broadcast 192.168.1.100 up
[root@bogon ~]# route add -host 192.168.1.100 dev eno16777736:1
[root@bogon ~]# ipvsadm -A -t 192.168.1.100:80 -s rr
[root@bogon ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.105:80 -g -w 1
[root@bogon ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.106:80 -g -w 2  配置RealServer1
[root@bogon ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@bogon ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@bogon ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@bogon ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs1 ~]# ifconfig lo:0 192.168.1.100/32 broadcast 192.168.1.100 up
[root@rs1 ~]# route add -host 192.168.1.100 dev lo:0  配置RealServer2

[root@bogon ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@bogon ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@bogon ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@bogon ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs1 ~]# ifconfig lo:0 192.168.1.100/32 broadcast 192.168.1.100 up
[root@rs1 ~]# route add -host 192.168.1.100 dev lo:0



运维网声明 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.yunweiku.com/thread-659661-1-1.html 上篇帖子: lvs通过DR方式实现负载均衡 下篇帖子: 集群 之 LVS三种模型比较
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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