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上面的配置:

Diretor server上面的配置:

//首先在Director Server上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务:
Ifconfig eth0:0 192.168.132.254 broadcast 192.168.132.254 netmask 255.255.255.255 up //给设备eth0:0指定一条路由
route add -host 192.168.132.254 dev eth0:0 //启用系统的包转发功能
echo "">/proc/sys/net/ipv4/ip_forward //清楚ipvsadm以前的设置
ipvsadm -C
//添加一个新的虚拟IP记录192.168.132.254,其持续服务之间是120秒 ipvsadm -A -t 192.168.132.254:80 -s rr -p 120 //在新增的虚拟IP记录中新增两天real server记录,-g即为使用VS/DR模式
ipvsadm -a -t 192.168.132.254:80 -r 192.168.132.64:80 -g ipvsadm -a -t 192.168.132.254:80 -r 192.168.132.68:80 -g //启用LVS服务
ipvsadm 两台real server上的配置: /*在回环设备上绑定了一个虚拟IP地址,并设定其子网掩码为255.255.255.255,与Director Server上的虚拟IP保持互通*/
ifconfig lo:0 192.168.132.254 broadcast 192.168.132.254 netmask 255.255.255.255 up
route add -host 192.168.132.254 dev lo:0
//禁用本机的ARP请求echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
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. 【webrtc】webrtc的rtp重传代码分析

    pgm不太能用,没有想象中的可靠,重传机制貌似仍然使用组播重传,丢包率80%的网络感觉没啥改进,如果有所好转延迟估计也是个不小的问题. 后听说rtp也有nack机制,webrtc基于rtp实现了重传在 ...

  2. Delphi支付宝支付【支持SHA1WithRSA(RSA)和SHA256WithRSA(RSA2)签名与验签】

    作者QQ:(648437169) 点击下载➨Delphi支付宝支付             支付宝支付api文档 [Delphi支付宝支付]支持条码支付.扫码支付.交易查询.交易退款.退款查询.交易撤 ...

  3. C基础 带你手写 redis adlist 双向链表

    引言 - 导航栏目 有些朋友可能对 redis 充满着数不尽的求知欲, 也许是 redis 属于工作, 交流(面试)的大头戏, 不得不 ... 而自己当下对于 redis 只是停留在会用层面, 细节层 ...

  4. 12. Scala模式匹配

    12.1 match 12.1.1 基本介绍 Scala中的模式匹配类似于Java中的switch语法,但是更加强大 模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需 ...

  5. MyBatis系列(二) MyBatis接口绑定与多参数传递

    前言 通过上一篇博文的,已经可以做到通过MyBatis连接数据库,现在再来介绍一种方法通过接口绑定SQL语句. 不使用接口绑定的方式 不使用接口绑定的方式,是通过调用SqlSession中的selec ...

  6. 《SAP微顾问和大数据 》公众号管理课程清单

    互联网商业模式创新 电子商务与传统企业转型 “一带一路”信息化:格局与对策 “一带一路”沿线国家主权信用及风险防范 大数据下的资源整合和知识共享 地产数字化改革的痛点与处方 携手共建“一带一路” 数字 ...

  7. vue使用html2canvas生成图片并保存到本地

    html2canvas官方文档 http://html2canvas.hertzen.com/ npm下载依赖 npm install html2canvas -S 在需要使用的地方引入 import ...

  8. Cheat Engine 字节数组类型

    BIG5 编码:http://www.qqxiuzi.cn/zh/hanzi-big5-bianma.php 打开游戏 准备修改名字 查找BIG5码 藤 吉 开始扫描 使用字节数组类型扫描 新BIG5 ...

  9. es倒排索引原理解析

    倒排索引原理 普通的存储方式是给每个文档编一个序号 然后让这个序号对应单个文档的所有内容  如果用这样的方式查找   当需要查找某个单词的时候需要遍历所有的文档集合 查找文档的效率会非常的慢 2.基本 ...

  10. Ansible-ansible命令

    Ansible是用于执行"远程操作"的简单工具.该命令允许针对一组主机定义并运行单个任务剧本. 常用选项 说明 --ask-vault-pass 请求保险库密码 --become- ...