LVS的概念和重要性

LVS:

概念:是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统

作用:举例

  像有三个小区,但是工作的时间和休息的时间不一样,第一个是白天工作,一个是晚上工作,一个是比较散时间,

  如果没有负载均衡lvs的话,那么这三个小区,都是只是能用自己的那台服务器,

仅仅的用一台服务器的带宽1M,这样的话,三个小区就会总会有一段时间会没有人用,而其他的小区又只能限制在一台上

(图示:大圈代表小区集体,小圈代表服务器,1M代表一兆的带宽)

使用lvs之后的形式图示

大圈:人群

中间小圈:负载均衡服务器

右边小圈:服务器realserver

这样就会均衡不同时段的可以使用的服务器的数量

一.LVS是什么?

LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。

它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

二.LVS能干什么?

LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。

它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。

它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。

另外可扩展性也非常好。

三.工作原理

1.Load Balancer:这是LVS的核心部分,它好比我们网站MVC模型的Controller。

它负责将客户的请求按照一定的算法分发到下一层不同的服务器进行处理,自己本身不做具体业务的处理。

另外该层还可用监控下一层的状态,如果下一层的某台服务器不能正常工作了,它会自动把其剔除,恢复后又可用加上。

该层由一台或者几台Director Server组成。

Server Array:该层负责具体业务。

可有WEB Server、mail Server、FTP Server、DNS Server等组成。

注意,其实上层的Director Server也可以当Real server用的。

Shared Storage:主要是提高上一层数据和为上一层保持数据一致。

四.负载均衡机制

前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。LVS的通过控制IP来实现负载均衡。IPVS是其具体的实现模块。IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如果返回给客户端数据等等。IPVS为此有三种机制:

1.VS/NAT(Virtual Server via Network Address Translation),

即网络地址翻转技术实现虚拟服务器。当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。

Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。

由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。

2.VS/TUN(Virtual Server via IP Tunneling),即IP隧道技术实现虚拟服务器。

它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。

3.VS/DR(Virtual Server via Direct Routing),即用直接路由技术实现虚拟服务器。

跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,

将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。

这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。

五.负载调度算法
  前面我们都知道Director Server要选择不同的Real server,那么它具体的如果选择Real Server以达到负载均衡的呢,

IPVS实现了八种调度方法,具体算法可以查看官网或者百度,这里就不一一列出了。官网:www.linuxvirtualserver.org。

六、具体配置操作

首先我们这里有三台机子,IP分别是192.168.132.30(Diretor server),192.168.132.64(Real server 1),

192.168.132.68(real server 2)。在real server 1和2上面,已经配置好了web服务,

并且我们假设还有一个对外访问的虚拟IP是192.168.132.254(VIP)。另外在Diretor server上面已经安装好了ipvsadm。
下面我们VS/DR介绍详细的配置过程。
Diretor server上面的配置:

  1. Diretor server上面的配置:
  2.  
  3. //首先在Director Server上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务:
  4. Ifconfig eth0:0 192.168.132.254 broadcast 192.168.132.254 netmask 255.255.255.255 up
  5.  
  6. //给设备eth0:0指定一条路由
  7. route add -host 192.168.132.254 dev eth0:0
  8.  
  9. //启用系统的包转发功能
  10. echo "">/proc/sys/net/ipv4/ip_forward
  11.  
  12. //清楚ipvsadm以前的设置
  13. ipvsadm -C
  14. //添加一个新的虚拟IP记录192.168.132.254,其持续服务之间是120秒
  15.  
  16. ipvsadm -A -t 192.168.132.254:80 -s rr -p 120
  17.  
  18. //在新增的虚拟IP记录中新增两天real server记录,-g即为使用VS/DR模式
  19. ipvsadm -a -t 192.168.132.254:80 -r 192.168.132.64:80 -g
  20.  
  21. ipvsadm -a -t 192.168.132.254:80 -r 192.168.132.68:80 -g
  22.  
  23. //启用LVS服务
  24. ipvsadm
  25.  
  26. 两台real server上的配置:
  27.  
  28. /*在回环设备上绑定了一个虚拟IP地址,并设定其子网掩码为255.255.255.255,与Director Server上的虚拟IP保持互通*/
  29. ifconfig lo:0 192.168.132.254 broadcast 192.168.132.254 netmask 255.255.255.255 up
  30. route add -host 192.168.132.254 dev lo:0
  31. //禁用本机的ARP请求echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  32. echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
  33. echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
  34. echo "" >/proc/sys/net/ipv4/conf/all/arp_announce

之后在其他客户端机子上面,访问http://192.168.132.254/,则可以看到结果了。

最后我把这个写出了SHELL脚本,可以下载使用。

LVS是什么及作用?的更多相关文章

  1. LVS概述

    LVS原理概述: lvs是一个开源软件,是Linux virtual server的简写,即linux虚拟服务器,是一个虚拟的服务器集群系统,lvs集群采用ip负载均衡技术和基于内容的请求分发技术.将 ...

  2. 高并发场景 LVS 安装及高可用实现

    1.1 负载均衡介绍 1.1.1 负载均衡的妙用 负载均衡(Load Balance)集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网 ...

  3. [svc]高并发场景 LVS DR +KeepAlive高可用实现及ka的persistence_timeout参数

    LVS-DR+keepalived模式是一种非常经典的常用生产组合 高可用场景及LVS架构 一般都用一(负载)拖多(Server Array)方式 使用LVS架设的服务器集群系统有三个部分组成: (1 ...

  4. lvs dr 模式请求过程

    一. lvs dr 模式请求过程 1.整个请求过程如下: client在发起请求之前,会发一个arp广播的包,在网络中找"谁是vip",由于所有的服务器,lvs和rs都有vip,为 ...

  5. 不吹不擂,你想要的Python面试都在这里了【315+道题】

    写在前面 近日恰逢老男孩全栈8期毕业季,课程后期大家“期待+苦逼”的时刻莫过于每天早上内容回顾和面试题问答部分[临近毕业每天课前用40-60分钟对之前内容回顾.提问和补充,专挑班里不爱说话就的同学回答 ...

  6. Python 经典面试题汇总之网络篇

    网络篇 1.简述 OSI 七层协议 物理层:定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质. 数据链路层:定义如何传输格式化数据,以及如何访问物理介质. 网络层:定义逻辑网络地址. ...

  7. python面试题---收藏的笔记

    第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解释型和编译型编程语言? P ...

  8. python面试题整理

    1.谈谈你对csrf的理解和django中CSRF防护机制. 什么是 CSRF CSRF, Cross Site Request Forgery, 跨站点伪造请求.举例来讲,某个恶意的网站上有一个指向 ...

  9. 315道python面试题(参考答案)

    第一部分 Python基础篇 1:为什么学习Python 家里有在这个IT圈子里面,也想让我接触这个圈子,然后给我建议学的Python, 然后自己通过百度和向有学过Python的同学了解了Python ...

随机推荐

  1. 不能随便用get和set

    有些对象呢,保存一半.如果你只提供get和set,那么备份不了数据. previousState的get和set还是最新的 wtforms InputRequired: DataRequired: i ...

  2. VBA对象模型

    https://www.processon.com/view/link/5d974da6e4b07a0a4d4a098a

  3. react项目添加本地音频

    <audio src="./res/audio/alarm.mp3" autoplay="autoplay" loop="loop"  ...

  4. django开发_七牛云CNAME解析

    CNAME 简介 CNAME 即指别名记录,也被称为规范名字.这种记录允你将多个名字映射到同一台计算机. 当需要将域名指向另一个域名,再由另一个域名提供 ip地址,就需要添加 CNAME 记录. 为什 ...

  5. 【题解】有限制的排列 [51nod1296]

    [题解]有限制的排列 [51nod1296] 传送门:有限制的排列 \([51nod1296]\) [题目描述] 给出 \(n,m_1,m_2\) 和 \(\{a[1],a[2]...a[m_1]\} ...

  6. Java学习:等待唤醒机制

    等待唤醒机制 线程的状态 NEW   至今尚未启动的线程处于这种状态 RUNNABLE   正在Java虚拟机中执行的线程处于这种状态 BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态 WA ...

  7. Flink基本的API

    Flink使用 DataSet 和 DataStream 代表数据集.DateSet 用于批处理,代表数据是有限的:而 DataStream 用于流数据,代表数据是无界的.数据集中的数据是不可以变的, ...

  8. Implementing Azure AD Single Sign-Out in ASP.NET Core(转载)

    Let's start with a scenario. Bob the user has logged in to your ASP.NET Core application through Azu ...

  9. SQL Server的外键必须引用的是主键或者唯一键(转载)

    问: In SQL Server , I got this error -> "There are no primary or candidate keys in the refere ...

  10. Vue传递方法给页面调用

    很多人在使用vue的时候苦于在vue中写方法,但是在外部甚至在另一个js该如何调用呢? 这个方法就是显示了vue的可以传递方法到页面使得页面任何地方都可以调用 前提得引用文件 这个方法一般多用于加载周 ...