lvs初探

1,lvs是什么

lvs是Linux Virtual Server缩写,linux虚拟服务器,担任负载调度器(load balance)的角色,它不提供任何服务,用户请求到这里的时候,它是将客户需求转发至后端真正提供服务的服务,LVS分为两部分组成,ipvsadm管理集群服务的命令行工具,ipvs,是内核模块。由于ipvs采用基于ip负载均衡技术,所以具有很好的吞吐量。

lvs简单拓扑

blob.png

lvs相关术语

RS:后端服务器

CIP: 客户端IP

VIP:虚拟IP

RIP:后端服务器IP

DIR:调度器Director IP

2,lvs集群类型。

1,lvs-nat: 网络地址转换

接到用户请求,通过网络地址地址转换,(类似iptables的DNAT),根据预设的调度算法,调度器重写请求报文的目标地址,将请求报文分发到后端的相应的真实服务器;真实服务器的响应报文通过调度器时,响应报文的源地址被重写,返回客户端。完成整个请求。 NAT模式是通过修改请求报文的目标ip跟port完成的转发,修改响应报文的源地址的ip,port完成对客户端的透明性,所有nat模式有以下特性

(1) 请求报文响应报文都通过Director,Director容易成为性能上的瓶颈

(2)RIP,DIP在同一个私网网段

(3)VS是linux系统,RS可以是任意OS

2,lvs-dr:直接路由技术

DR模式是通过改写请求报文的MAC地址完成,将请求报文发送到后端的RS,RS将响应报文直接返回给客户端。DR模式有以下特性:

(1)确保上级路由器将目标IP的请求发送到Director, 即目标的IP对应的MAC地址为Director的mac地址

1.1 在RS上做arptables;

1.2 上级路由做mac静态绑定

1,3 在RS上修改内核参数限制ARP通告级别

arp_ignore:定义对目标地址为本地IP的ARP询问不同的应答模式
arp_announce: 对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制

(2)RS的DIP的不限制地址类型,公私网都可,但是不能设置网关为Director

(3)Director,RS必须在同一物理网段,中间可以有交换机,但是不能有路由器

(4)DR模式不支持端口映射

3,LVS-TUN: IP隧道

类似于lvs-nat,由于nat模式都经过Director,吞吐量相对DR模式较小,所以封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器,LVS-TUN模式的有以下特征:

(1) DIP,VIP,RIP都应该是公网IP

(2) RS网关不能指向DIP

(3)请求报文经过Director,响应报文不能经过Director

(4)不支持端口映射,

(5)RS需支持IP隧道功能

4 lvs-fullnat: 修改请求报文的源,目标IP

修改请求报文的源IP跟目标IP进行转发

(1)VIP是公网,RIP,DIP是私网地址,通常不在统一网段

(2) 请求报文和响应报文都经过Director

(3)支持端口映射

3,LVS调度算法

调度器可以分为静态调度跟动态调度

(1) 静态调度: 根据算法本身调度

RR:轮询,轮流的分配到RS,适用于后端服务器性能一样,或者是大致相近
WRR:加权轮询,根据真实服务器的权重比例分配到后端的RSSH: 源地址哈希,将同一个CIP分配到后端的同一RS,用于会话绑定
DH: 目标地址哈希,将同一目标地址的请求分配到后端同一RS

(2) 动态调度:根据后端RS负载情况及调度算法动态的调度

LC: 最少连接,调度器通过该算法动态的把请求分配到已建立数量最少的服务器WLC: 加权最小连接,调度器采用该算法调度,具有较高权重的服务器承受相对比例的请求数量
SED: 最短期望延迟
LBLC:基于局部性最少连接
LBLCR: 带复制的LBLC

4,LVS-NAT模式搭建

hostname ip gateway role
node-1

192.168.6.101

192.168.2.105

192.168.2.1 Director
node-2 192.168.6.102 192.168.6.101 real node
node-3 192.168.6.103 192.168.6.101 real node

准备工作

安装ipvs,默认是没有安装,使用yum安装 yum install ipvsadm

在node-2,node-3安装nginx,启动端口是80,为了明显区分配到了哪个RS,修改nginx的index.html的内容,我这里是修改为机器的hostname

RS只需要把网关改为192.168.6.101

(1)开启路由转换功能

[root@node-1 ~]# echo "1" >/proc/sys/net/ipv4/ip_forward

(2)配置node-2,node-3加入集群

[root@node-1 ~]# ipvsadm -C
  [root@node-1 ~]# ipvsadm  -A -t 192.168.2.105:80 -s rr
  [root@node-1 ~]# ipvsadm  -a -t 192.168.2.105:80 -r 192.168.6.102 -m
  [root@node-1 ~]# ipvsadm  -a -t 192.168.2.105:80 -r 192.168.6.103 -m

(3) 测试访问

[root@node-1 ~]# for i in `seq 10`; do curl http://192.168.2.105/;done
 node-3
 node-2
 node-3
 node-2
 node-3

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

(0)
N24_chuanshuoN24_chuanshuo
上一篇 2016-10-30 21:03
下一篇 2016-10-30 21:32

相关推荐

  • 关于大型网站技术演进的思考(四):存储的瓶颈(4)

    原文出处: 夏天的森林    如果数据库需要进行水平拆分,这其实是一件很开心的事情,因为它代表公司的业务正在迅猛的增长,对于开发人员而言那就是有不尽的项目可以做,虽然会感觉很忙,但是人过的充实,心里也踏实。 数据库水平拆分简单说来就是先将原数据库里的一张表在做垂直拆分出来放置在单独的数据库和单独的表里后更进一步的把本来是一个整体…

    2015-03-11
  • linux软件包安装与管理

    一、RPM包简介     linux之所以那么强大,除了linux强大的内核,还有很大一部分取决于linux的软件包,假想没有软件包,就一个内核在运行,人类需要和内核打交道是多么痛苦,但是聪明的人类发明了bash,通过bash,人就可以使用高级语言,和机器沟通,这其中的bash起始也是一个软件包,当然linux除了ba…

    Linux干货 2016-08-24
  • lvs-dr模型

    dr 模型 1、 directory ,node1 ,node2 三台主机都是一块网块, 并且网卡都为桥接,且node1,nod2,不需要指定网关 在director主机中执行   #ip addr add 192.168.1.20/32 dev ens33 # ipvsadm -A -t 192.168.1.20:80 -s rr # ipvsa…

    Linux干货 2017-08-26
  • Docker入门

    一、Docker 架构 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。 Docker 容器通过 Docker 镜像来创建。 容器与镜像的关系类似于面向对象编程中的对象与类。 Docker 面向对象 容器 对象 镜像 类 Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的…

    2018-01-20
  • sed使用小命令及课后作业

    Stream EDitor,  行编辑器 sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed …

    Linux干货 2017-03-18
  • 学习笔记–文本处理工具

    Linux下有很多文本处理工具,本文将介绍几款比较常用的文本处理工具,比如对文本查看的工具:cat和less,文本截取工具:head和tail,按列抽取文本工具:cut,按关键字查询文本工具:grep,下面将具体介绍各种工具的使用。 1、文本查看命令cat 用法: cat [OPTION]… [FILE]… cat命令一次性…

    Linux干货 2016-08-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-02 16:35

    内容格式把握得很好,原理部分可以加入一些自己的理解,加油!