码迷,mamicode.com
首页 > 其他好文 > 详细

LVS负载均衡

时间:2015-05-27 19:19:08      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:ip地址   服务器   副教授   客户端   linux   

相关术语:

Host相关:

Director:调度器----提供调度的主机

Real Server: RS,后端提供服务的主机

IP相关:

Client: CIP----客户端ip地址

Director Virtual IP: VIP---面向客户端的ip地址(做单点高可用时用vip

Directory IP: DIP---跟后端主机的ip地址

Real IP: RIP---实际提供服务的ip地址

 

 

一、LVS简介

LVS是什么呢?lvs的全称是Linux Virtual Server,由国防科技大学副教授章文嵩在19985月研发的一个虚拟的服务器集群系统

LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。

 

二、LVS组成部分以及类型

 1.LVS的组成部分

    LVS是由ipvsipvsadm两部分组成。ipvs工作在内核,ipvsadm工作在用户空间,是一个为ipvs提供定义集群服务、以及使用何种调度方法的工具,类似于netfilteriptables的关系。此外,ipvs工作于netfilterINPUT ipvsadm用于ipvs上定义集群服务:同时也得定义此集群服务对应于有哪个后端主机可用;根据所指定的调度方法(算法)作出调度决策;真正实现调度的是工作于内核空间的ipvs,而且ipvs接受来自ipvsadm所生成的规则,并让这个规则在INPUT链上真正生效起来。

 

技术分享

2.lvs的四种类型:


lvs-nat也称masquerade,基于地址伪装
lvs-dr也称directrouting,直接路由
lvs-tuntunneling,有隧道之意,基于ip隧道
lvs-fullnatfullnat,完全nat,既改目标ip又改源ip

 

2.1.lvs-nat类似于iptables中的DNAT, 支持多目标转发

它通过修改请求报文的目标地址为根据调度算法挑选出的某RSRIP来进行转发;

 

                     架构特性:

(1) RS应该使用私有地址,即RIP应该为私有地址;各RS的网关必须指向DIP

(2) 请求和响应报文都经由Director转发;高负载场景中,Director易于成为系统瓶颈;

(3) 支持端口映射;

(4) RS可以使用任意类型的OS;

(5) RSRIP必须与DirectorDIP在同一网络;

 

2.2.lvs-dr:直接路由

Director在实现转发时不修改请求的IP首部,而是通过直接封装MAC首部完成转发;目标MACDirector根据调度方法挑选出某RSMAC地址;拓扑结构有别有NAT类型;

 

                     架构特性:

(1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Director

解决方案两种:

(1)静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为DirectorMAC地址;

(2)arptables:在各RS上,通过arptables规则拒绝其响应对VIPARP广播请求;

(3)内核参数(容易实现的方案):在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对VIPARP广播请求

(2) RSRIP可以使用私有地址;但也可以使用公网地址,此时可通过互联网上的主机直接对此RS发起管理操作;

(3) 请求报文必须经由Director调度,但响应报文必须不能经由Director;

(4)RIP必须与DIP在同一个物理网络中

(5) 不支持端口映射;

(6) RS可以使用大多数的OS

(7) RS的网关一定不能指向Director

 

2.3.lvs-tun: 不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外再封装IP首部经由互联网把请求报文交给选定的RS 

 

架构特性:

(1) RIP, DIP, VIP都是公网地址;

(2) RS的网关不能,也不可能指向DIP;

(3) 请求报文由Director分发,但响应报文直接由RS响应给Client

(4) 不支持端口映射;

(5) RSOS必须得支持IP隧道;

 

2.4.lvs-fullnat:通过请求报文的源地址为DIP,目标为RIP来实现转发;对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发;

 

架构特性

(1) RIP,DIP可以使用私有地址;

(2) RIPDIP可以不在同一个网络中,且RIP的网关未必需要指向DIP

(3) 支持端口映射;

(4) RSOS可以使用任意类型;

(5) 请求报文经由Director,响应报文经由Direct

 

三、LVS的scheduler(LVS调度方法)


技术分享

 

技术分享

 

 

四、ipvsadm工具的使用

4.1管理集群服务:

a.创建或修改集群服务

ipvsadm -A|E -t|u|f service-address [-sscheduler]

选项:

-A: 添加

-E:修改

 

-t: 承载的应用层协议为基于TCP协议提供服务的协议;其service-address的格式为“VIP:PORT,如“172.16.100.6:80”

-u: 承载的应用层协议为基于UDP协议提供服务的协议;其service-address的格式为“VIP:PORT,如“172.16.100.6:53”

-f:承载的应用层协议为基于TCPUDP协议提供服务的协议,但此类报文会经由iptables/netfilter打标记,即为防火墙标记;其service-address的格式为“FWM”即一个数字,例如“10”;(比如将web服务的80端口和https443端口归类为同一个服务类,此时就需要将此类报文都打上防火墙标记为10,即可归为同一类了)

 

-s scheduler: 指明调度方法;默认为wlc

 

b.删除集群服务:

ipvsadm -D -t|u|f service-address

 

4.2管理集群服务上的RS

a.添加或修改RS(在现存的集群服务上):

ipvsadm -a|e -t|u|fservice-address -r server-address [-g|i|m] [-w weight]

选项:

                   -rserver-address: 指明RSserver-address格式一般为“IP[:PORT]”

【注意,只支持端口映射的lvs类型中才应该显式定义此处端口,否则不用写port,比如NAT,FULLNAT 需要指明端口】例如:-r 192.168.10.7:80

     

    [-g|i|m]: 指明lvs类型

    -g: gateway,意为dr类型;

    -i: ipip, 意为tun类型;

    -m: masquerade(伪装之意), 意为nat类型;

    [-w weight]:当前RS的权重;

【注意:仅对于支持加权调度的scheduler,权重才有意义;】

        b.删除RS:

ipvsadm -d -t|u|f service-address -r server-address

 

4.3清空所有集群服务的定义:

    ipvsadm -C

 

4.4保存及恢复集群服务及RS的定义:

ipvsadm -S > /etc/sysconfig/ipvsadm

ipvsadm-save > /etc/sysconfig/ipvsadm

service ipvsadm save

 

 

ipvsadm -R < /etc/sysconfig/ipvsadm

ipvsadm-restore < /etc/sysconfig/ipvsadm

service ipvsadm restart

 

4.5查看规则:

ipvsadm -L|l [options]

-c: 列出当前所有connection

--stats: 列出统计数据

--rate: 列出速率

-n,--numeric: 数字格式显示IP及端口;(而不要反解成服务名或主机名)    --exact: 精确值;

 

4.6清空计数器:

ipvsadm -Z[-t|u|f service-address]

 


LVS负载均衡

标签:ip地址   服务器   副教授   客户端   linux   

原文地址:http://tanjie.blog.51cto.com/10027618/1655731

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!