热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LVS初步

LVS初步一见目录目录11.前言22.思考23.名词解释24.OSI参考模型35.LVS架构45.1.负载均衡器(LoadBalancer)45.2.服

LVS初步

一见

目录

目录 1

1. 前言 2

2. 思考 2

3. 名词解释 2

4. OSI参考模型 3

5. LVS架构 4

5.1. 负载均衡器(Load Balancer) 4

5.2. 服务器集群(Server Cluster) 4

5.3. 后端存储(Storage) 5

6. 区别 5

6.1. 包层次关系 5

6.2. IP包头结构 6

6.3. TCP包头结构 6

6.4. LVS/DR 7

6.5. LVS/NAT 7

6.6. LVS/TUN 8

7. 配置 8

7.1. LVS/DR配置 8

7.1.1. 配置Director 8

7.1.2. 配置RS 9

7.2. LVS/NAT配置 10

7.2.1. 配置Director 10

7.2.2. 配置RS 10

7.3. LVS/TUN配置 10

7.3.1. 配置Director 10

7.3.2. 配置RS 11

8. ipvsadm 11

 

1. 
前言

很多人知道LVS,但可能知之不多,希望阅读本文后,能够对LVS有一个基本的感性认识

LVS是国内最早出现的自由软件之一,由国防科技大学章文嵩博士在19985月创立,章博士目前是淘宝网高级研究员,是淘宝网核心系统负责人。

LVS首要的是解决路由问题,结果不但解决了耦合问题,实现了网络隔离,而且顺带实现了负载均衡,负载均衡复杂的地方在于不同的均衡策略。常常均衡和路由成对出现,象分布式中的一致性哈希,也是路由和均衡,实际上还达到了容灾的效果,可以说是一举多得。

2. 思考

一个数据包,是如何从一个机器达到另一个机器的?两个机器可以连接在同一个交换机上;也可以挂在不同的交换机上;甚至可能一个在内网,另一个在外网。

抓包工具tcpdumpWiresharkSniffer等是如何工作的?Linux内核中的Netfilter原理是什么?最好可以,动手写一个基于RAW SOCKET的抓包工具,按IPTCP/UDP格式解析,并以可视化方式展现出来,甚至可以进一步解析诸于HTTP之类的。

3. 名词解释

下表中,蓝色字体部分是最基础的名词,其它可最后反过来再细读:

缩写

全称

说明

LVS

Linux Virtual Server

Linux虚拟服务器,它有三种工作模式:NATDRTUN

IPVS

IP Virtual Server

运行在LVS下的,提供负载均衡的一种技术

NAT

Network Address Translation

网络地址转换,也可叫IP地址转换

DR

Direct Routing

直接路由,也可叫MAC地址转换

TUN

Tunneling

隧道

LD

LVS Director

 

LB

Load Balancer

负载均衡器

 

IP Tunneling

IP隧道

VS

Virtual Server

虚拟服务器

RS

Real Server

真实服务器

VIP

Virtual IP

虚拟IP

VPN

Virtual Private Network

虚拟专用网络,也叫虚拟私有网络,利用加密技术在公网上封装出一个数据通讯隧道

LAN

Local Area Network

本地局域网

WAN

Wide Area Network

广域网

 

Switch

交换机

AS

Autonomous System

自治系统,处于一个管理机构控制下的路由器和网络群组,有权自主决定在本系统中采用何种路由协议

BGP

Border Gateway Protocol

边界网关协议,用于AS间的动态路由协议,是一种外部网关协议

IGP

Interior Gateway Protocol

内部网关协议

EGP

Exterior Gateway Protocl

外部网关协议,在AS的相邻两个网关主机间交换路由信息的协议,是一个轮询协议

GGP

Gateway to Gateway Protocol

网关到网关协议

LSA

Link State

链路状态,OSPF接口上的描述信息,例如IP地址、子网掩码、网络类型等

OSPF

Open Shortest Path First

开放式最短路径优先,是一种IGP,用于在单一AS内决策路由,运作于AS内部,是链路状态协议。OSPF路由器间交换的不是路由表,而是LSA

RIP

Routing Information Protocol

路由信息协议,使用最广泛的IGP,但正在被OSPF等所取代

ARP

Address Resolution Protocol

地址解析协议,根据IPMAC的协议

RARP

Reverse Address Resolution Protocol

反向地址解析协议,根据MACIP的协议

OSI

Open System Interconnection

一个开放性的通行系统互连参考模型,是一个协议规范

4. OSI参考模型

 

5. LVS架构

 

5.1. 负载均衡器(Load Balancer)

它是整个集群对外面的前端机,负责将Client的请求发送到一组服务器上执行,而Client认为服务是来自一个IP地址上的。它可以是用IP负载均衡技术的负载均衡器,也可以是基于内容请求分发的负载均衡器,还可以是两者的结合。

5.2. 服务器集群(Server Cluster)

是一组真正执行Client请求的服务器,执行的服务有WEBMAILFTPDNS等。

5.3. 后端存储(Storage)

它为服务器集群提供一个共享的存储区,这样很容易使得服务器集群拥有相同的内容,以便提供相同的服务。

6. 区别

 

特点

适用网络

LVS/DR

修改MAC,RS将响应返回给Client

LAN,同一物理网段

LVS/NAT

修改IPRSIP,LD响应返回给Client

私有网络

LVS/TUN

不修改IP,但包装一个新的IP头,RS将响应返回给Client

LANWAN

 

DR特点导致它不能跨LAN,这个比较容易理解。

IP处理上,NAT是修改,而TUN是新增,后者可跨LAN,为何NAT不行?要理解这一点,只需要知道响应是怎么回去的就明白了。

6.1. 包层次关系

 

6.2. IP包头结构

 

6.3. TCP包头结构

 

6.4. LVS/DR

 

6.5. LVS/NAT

从下图,可以看出NAT模式只需要一个公网IP:

 

6.6. LVS/TUN

 

7. 配置

7.1. LVS/DR配置

7.1.1. 配置Director

Diector机器上完成下列所有操作:

1) 为Director配置VIP,此IP用于对外提供服务:

#ifconfig eth0:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up

 

上述操作,在eth0上绑定了一个虚拟设备eth0:0,同时设置VIP192.168.1.100

2) 指定eth0:0的路由:

#route add -host 192.168.1.100 dev eth0:0

3) 开启包转发,让Director充当路由器角色:

#echo 1 > /proc/sys/net/ipv4/ip_forward

 

注意,对于DR,开启包转发不是必须的,但对于NAT是必须的。

4) 接下来,配置ipvs,执行以下操作:

① #ipvsadm -C

② #ipvsadm -A -t 192.168.1.100:80 -s rr -p 600

③ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -g

④ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30:80 -g

 

上面,第一行是清除内核中的虚拟服务器列表中的所有记录;第二行是添加一条新的VIP记录,这个新的VIP192.168.1.100,同时指定它的持续服务时间为600秒;第三和第四行,是在VIP记录中添加两条RS记录,并且指定LVS的工作模式为DR

5) 至此,配置完成,即可启动LVS服务:

#ipvsadm

7.1.2. 配置RS

DRTUN两种工作模式下,请求达到RS后,响应直接返回给Client,而不经过Director。因此,需要在每个RS上配置VIP,这个VIPDirector上的相同,这样数据才能直接返回给Client

 

在所有RS机器上分别完成下列所有操作:

1) 配置VIP:

#ifconfig lo:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up

2) 指定lo:0的路由:

#route add -host 192.168.1.100 dev lo:0

3) 禁止本机的ARP请求:

① echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

② echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

③ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

④ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

 

Ø arp_ignore

定义响应ARP请求的策略:

作用

0

默认值,响应任何对本地IPARP请求

1

只响应目标IP是访问本机IPARP请求

2

只响应目标IP是访问本机IPARP请求,且源IP和本地IP须在同一子网

3

不响应ARP请求

4-7

保留未使用

8

不响应所有的ARP请求

Ø arp_announce

定义响应ARP请求的限制:

作用

0

无论哪块网卡收到ARP请求,只要是本机的MAC,都作出响应

1

尽量避免响应MAC不是本网卡的ARP请求

2

使用最合适的网卡来响应ARP请求

 

4) 为使禁止ARP请求生效,执行:

#sysctl -p

 

由于VIPDirector和所有RS共享的,如果不禁止,产生ARP请求时,会导致Director和所有RS都应答,从而产生冲突,因此需要禁止RS响应ARP请求。

7.2. LVS/NAT配置

7.2.1. 配置Director

Diector机器上完成下列所有操作:

1) #ifconfig eth0:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up

2) #echo 1 > /proc/sys/net/ipv4/ip_forward

3) 接下来,配置ipvs,执行以下操作:

① #ipvsadm -C

② #ipvsadm -A -t 192.168.1.100:80 -s rr

③ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -m

④ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30:80 -m

4) 至此,配置完成,即可启动LVS服务:

#ipvsadm

7.2.2. 配置RS

在所有RS机器上分别完成下列所有操作:

1) 配置默认网关为Director,以保证数据可从Director返回:

#route add default gw 192.168.1.100

7.3. LVS/TUN配置

7.3.1. 配置Director

Diector机器上完成下列所有操作:

1) 设置tunl0(隧道网卡)的IPVIP:

#ifconfig tunl0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up

2) 指定tunl0的路由:

#route add -host 192.168.1.100 dev tunl0

3) 接下来,配置ipvs,执行以下操作:

① #ipvsadm -C

② #ipvsadm -A -t 192.168.1.100:80 -s rr

③ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -i

④ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30:80 -i

4) 至此,配置完成,即可启动LVS服务:

#ipvsadm

7.3.2. 配置RS

在所有RS机器上分别完成下列所有操作:

1) #ifconfig tunl0 192.168.1.100 netmask 255.255.255.255 up

2) route add -host 192.168.1.100 dev tunl0

3) 禁止本机的ARP请求:

① echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

② echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

③ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

④ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

4) 为使禁止ARP请求生效,执行:

#sysctl -p

8. ipvsadm

参数

解释

-A

--add-service,往内核VS表添加一个VS

-a

--add-server,在内核VS表中添加一个RS

-t

--tcp-service,表示VS提供的是TCP服务

-m

--masquerading,指定LVS的工作模式为NAT

-i

--ipip,指定LVS的工作模式为TUN

-g

--gatewaying,指定LVS的工作模式为DR

-r

--real-server,指定RS的地址和端口

-p

--persistent [timeout],来自同一个Client的多次请求,转发给同一台RS,timeout默认为300

-s

--scheduler,指定调度策略,有以下几个选项:

1) rr,轮询方式(Round-Robin)

2) wrr,加权轮询方式(Weighted Round-Robin),按顺序许循环分派请求给RS,但给能力的RS分派更多

3) lc,最小连接(Least-Connection)

4) wlc,加权最小连接(Weighted Least-Connection)

5) lblc,基于局部性的最少链接(Locality-Based Least-Connection)

6) lblcr,带复制的基于局部性最少链接(Locality-Based Least-Connection with Replication),某页面缓存在服务器A上,被访问次数极高,而其它服务器负载较低,监视是否访问同一页面,如果是则把请求转发给其它服务器

7) dh,目标地址散列(Destination Hash),对目标IP进行hash,将同一目标IP的请求转发给相同的RS

8) sh,源地址散列(Source Hash),与dh刚好相反,基于源IP

9) sed,最短预期延时(Shortest Expected Delay)

10) nq,不排队(Never Queue),如果某RS连接数为0,则直接分配

默认的调度策略为wlc

 

 

 

转:https://www.cnblogs.com/aquester/p/9891587.html



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
author-avatar
mobiledu2502886077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有