LVS-几种负载方式的区别

LVS的原理很重要,很重要。每一个知识点都要做到熟记与脑,谨记于心,张口就来。


LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
很好的可伸缩性(Scalability)
很好的可靠性(Reliability)

很好的可管理性(Manageability)

………..

总之就是一个字–好(大拇指)

闲话不多讲,先从lvs的模式开始–>

lvs四种类型
1.lvs-nat

2.lvs-dr

3.lvs-tun

4.lvs-fullnat

前三个是标准类型  后一种后加入的  可能内核默认不支持 (不要问我为啥不支持,我现在不知道)


lvs-nat  :修改请求报文的目标ip或者目标端口  多目标的DNAT。
为挑选出某些RS的RIP和PORT来实现
nat特点:
1、各RS的IP应该指向DIP(目标IP)
2、请求或者响应报文都要经由director(调度器)转发;

3、支持端口映射
4、VS必须为linux系统 RS任意

这个模式存在一个问题:因为是请求和响应报文都要经由director,那么如果用户的并发量超过了调度器负载性能,就会造成调度器陷入瘫痪,影响用户体验。
借图一用–>
LVS-几种负载方式的区别
lvs-dr 
转发方式:修改请求报文的MAC地址进行转发;IP首部不会发生变化的
(源IP为CIP,目标IP始终为VIP)
dr特点:
  1、确保前端路由器将目标IP为VIP的请求报文一定会发送给dIRECTOR 
解决方案有三种:
       1).在前端路由做静态绑定:不好  影响后期高可用实现
       2). iptables:定义规则
       3). 禁止RS响应VIP的ARP的请求:
       用调度器 修改内核参数,把VIP配置在特定的接口上实现禁止其响应 (回环lo网卡)
   2、RS的RIP可以使用私有或者公有地址
   3、RS和director必须在同一物理网络中 (比如都是网络)
   4、请求报文必须由director调度,但是响应报文必须不能经由director
   5、不支持端口映射
   6、各RS可以使用大多的操作系统

lvs-dr.png.JPG
   3.lvs-tun:ip隧道
   转发方式:不修改请求报文的IP首部,而是在原有的IP首部外在次封装一个IP首部;请求报文经由director;响应报文一定不能经由director
   注意:封装了两个IP首部的报文大小不要超过MTU:

   特点:
1、RIP,DIP,VIP全得是公网地址
2、RS的网关不能也不可能指向DIP;
3、不支持端口映射
4、请求报文经由director调度但响应报文将直接发给CIP
5、RS的操作系统必须支持IP隧道功能

4、lvs-fullnat
转发方式:通过同时修改请求报文的源IP地址(CIP–>DIP)和目标IP地址(VIP–>RIP)实现转发
特点:
1、VIP是公网地址,RIP,DIP是私网地址,且可以不在同一IP网络中,但需要通过路由互相通信;
2、RS收到请求报文的源IP为DIP,因此其响应报文将发给DIP
3、请求报文和响应报文都必须经由direcr
4、支持端口映射
5、RS可使用任意操作系统

lvs调度算法一共有十种
静态算法:仅根据算法本身进行调度。
存在的无情问题-不考虑当前RS的负载性能强弱

1)RR–轮询 (比如1.2.3.4–>1.2.3.4.)
2)WRR–加权轮询  比权重  那个权重数高,负载性能好先用那个
3)SH–源地址哈希  实现session保持  存在的问题-调度力度太大,负载均衡的效果差
4)DH– 目标地址哈希  根据请求的目标ip实现定向转发负载性能较差

  正向web代理,负载均衡内网用户对互联网的请求
  Cinent–>Director–>Web Cache Servers (正向代理)

动态算法:即根据算法又根据各RS当前的负载状态进行调度;
 overhead  负载值;负载值一样时自上而下轮询
LC  

最少连接 
存在的问题也:就说调度器会首选选择RS服务请求并发数最少的那个,即使它的性能很差
      算法:Overhead=Actice*256+Inatice
            负载值=活动链接*256+非活动连接
              RS1: 10, 1000
               RS2: 20, 10


WLC 

加权最少连接;
存在的问题:当orverload为0时可能会出现权重小的服务器响应新请求;
   overhead=(actice*256+Inactive)/weight
      RS1: 10, 100, 1
      RS2: 20, 10, 3


SED  

最短期望延迟  也就是WLC的算法改进版

存在的问题:当多个RS之间的权重比较大时会出现RS空闲的情况
   overhead=(Active+1)*256/weight
      RS1: 0,  9
      RS2: 0,  1


NQ:

NerverQueue:SED算法的改进,即当有用户请求涌入时服务器根据服务器权重由大到小依次先分配1个请求而后再按照SED算法调度;

LBLC:

基于本地的最少连接;动态的DH算法,即考虑当前服务器负载状态的DH算法,把新请求调度到负载少的服务器上,从而尽可能的实现服务器间负载的均衡;

存在的问题:当新请求很少而且客户端重复大量访问某个热门服务时会出现严重负载不均衡的场景
   Client –> Director –> Web Cache Server(正向代理)


 LBLCR:带复制功能的LBLC;
 通过服务器间缓存复制实现本应该从高负载的A缓存服务器回应某些客户请求转换为从低负载的B服务器回应他们请求,进而实现后续他们的请求都从B服务器而不从A服务器回应,最终实现负载均衡;

 ipvs集群服务工作机制:四层交换(四层路由,直接工作在内核上)
 ipvs支持基于TCP,UDP,SCTP,AH,ESP,AH_ESP等协议的众多服务;
 1.一个ipvs主机可以同时定义多个集群服务;
 2.一个ipvs服务至少应该一个RS;
       通过防火墙标记可以实现把多个端口绑定在一起进而实现将多个集群服务定义为一个集群服务而应用同一个调度逻辑。


管理集群服务命令用法:
增、删、改、查
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-Mnetmask] [-b sched-flags]
-A:添加一个集群服务
-E:修改已添加的集群服务
-t:TCP协议
-U: UDP协议
-f:防火墙标记
-s:调度方法,默认为WLC
-p: 持久连接
-D: 删除服务

管理集群上的RS
-a:向指定的CS中添加RS
-e:修改RS
-r:只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口

指明LVS工作类型
-q: 即dr模式
-i:tun模式
-m:nat模式
-w:指定权重

查看
ipvsadm -L | 11 [options]
  -n,–numberic;数字格式显示IP和PORT
    –exact:精确值
  -c,–connection;显示IPVS连接
   -stats;统计数据
   -rate;速率

 清空
 ipvsadm -C 按下Enter键-非常自然


 清空计数器
 ipsadm -Z [-t|u|f service-address]

 存储和重载
主程序:/usr/sbin/ipvsadm
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config

原创文章,作者:All well,如若转载,请注明出处:http://www.178linux.com/75174

(2)
All wellAll well
上一篇 2017-05-11
下一篇 2017-05-11

相关推荐

  • sed的详细用法

    sed(Stream EDitor)是一款流编辑器,用来对文本进行过滤与替换操作。其原理是:通过文件或管道读取文件内容,但是sed默认并不直接修改源文件,而是一次仅读取文件的一行至模式空间(pattern space)根据sed指令进行编辑并输出结果后清除模式空间,即所有的操作都是在模式空间中进行的。 语法格式 sed [option]…&nb…

    Linux干货 2016-11-14
  • nginx状态监控

    通过查看Nginx的并发连接,我们可以更清除的知道网站的负载情况。Nginx并发查看有两种方法(之所以这么说,是因为笔者只知道两种),一种是通过web界面,一种是通过命令,web查看要比命令查看显示的结果精确一些。下面介绍这两种查看方法 No1、通过浏览器查看 通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 &n…

    Linux干货 2016-10-19
  • 正则表达式之初体验

    学习正则表达式之前,看过这复杂的表达式,犹如天书,无比高大上;怀着战战兢兢的心情,开始了学习之旅: 一、  正则表达式:Global search REgular expression and Print out the line. 我的理解是:通过一大堆符号组成的公式逐行查找文本中匹配的字符串并显示出来  分类: &…

    Linux干货 2015-03-31
  • 软件编译安装小结

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1439073     本文主要针对 configure 和 cmake 做一个介绍以及我们重新配置编译参数文件时,都需要做哪些清…

    Linux干货 2016-08-15
  • 将两个局域网用openvpn连接起来

    考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架…

    Linux干货 2017-05-01
  • rsync+inotify实现数据同步——双向传输

    实验环境:<仅2台主机之间进行数据双向传输> A主机:10.1.43.102 B主机:10.1.43.103 一、数据从A推向B 配置流程 先在B主机上配置: 1.vi /etc/rsyncd.conf(用户,目录,模块,虚拟用户及密码文件) uid = root gid = root port …

    Linux干货 2016-10-27