负载均衡-四层负载均衡:LVS

之前也写过相关的文章,但是写的太烂了。。。自己都不也敢直视。。。

现在有空决定重新全面学习了下LVS.总结出本博客。好了,其他的不多说了,我们开始吧。

一、负载均衡

负载均衡包括如下:

1、硬件负载均衡:

F5,BIG IP

Citrix,Netscaler

A10

2、软件负载均衡:

四层:

LVS

七层:反向代理

Nginx

代理的协议有:http smtp pop3 imap

HAProxy

代理的协议有:http,tcp(mysql,smtp)

二、LVS的介绍

1、简介:

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

-----------百度百科。

LVS是一个四层的负载均衡软件,工作在内核空间。性能非常强大,而所支持的特性很少。工作在INPUT链上,所以lvs与iptables在INPUT链不能同时使用。

2、组成:

有两部分:

ipvsadm lvs规则管理

ipvs 是内核程序

ipvs在linux 2.6内核所有版本中已存在。只需要安装ipvsadm就可以了。

安装命令:yum -y install ipvsadm

三、LVS的三种模型

NAT:地址转换

DR:直接路由

TUN:隧道

三种模型的特性:

1、NAT

后端的集群节点也就是real server 必须与LVS所在的服务器在同一个IP网络中;

后端的real server所使用的ip通常是私有地址,仅用于各集群节点间的通信;

LVS服务器位于client和real server之间,并负责处理进出的所有通信;

real server必须将网关指向DIP;

支持端口映射;

real server可以使用任意OS;

较大规模应该场景中,director易成为系统瓶颈;

2、DR

集群节点real server 跟LVS必须在同一个物理网络中;

real server 可以使用公网地址,实现便捷的远程管理和监控;

LVS仅负责处理入站请求,响应报文则由real server直接发往客户端;

real server不能将网关指向DIP;

不支持端口映射;

在这个模型下vip和real server所对应的端口要一样才行。

3、TUN

集群节点可以跨越Internet;

real server必须是公网地址;

LVS仅负责处理入站请求,响应报文则由real server直接发往客户端;

real server网关不能指向LVS;

只有支持隧道功能的OS才能用于real server;

不支持端口映射;

LVS默认使用的模型为DR模型

四、LVS的调度算法

1、静态调度算法

rr: 轮叫,轮询

wrr: 加权轮叫

sh: sourch hash,源地址hash session 绑定到同一主机上

dh: destination hash 目的地址hash session 通过目的地址来绑定到同一主机上。

2、动态调度算法

lc: least-connect 最少连接 active * 256 + inactive 谁的小,挑谁

wlc: 加权最少连接,( active * 256 + inactive ) / weight

sed: 最少期望延迟 (active + 1 ) * 256 / weight

nq: never queue 永不排队,改进的sed

LBLC: 基于本地的最少连接

LBLCR: 基于本地的带复制功能的最少连接

LVS默认的调度算法是wlc

五、LVS的ipvadm命令的使用

安装:

在redhat/centos 6系统中:yum install ipvsadm -y

ipvsadm命令的使用:

1、管理集群服务

添加或修改:

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]

-A: 添加

-E:修改

-t: tcp

-u: udp

-f: FirewallMark FWM 防火墙标记。service-address: Mark Number

service-address:VIP:PORT 使用VIP和端口号

-s: 调度算法

-p: 后跟超时时间,在支持链接时使用,默认300s 单位是:秒

-M: 指定子网掩码,默认是255.255.255.255

删除:

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

-D:删除

-t: tcp

-u: udp

-f: FirewallMark FWM 防火墙标记。service-address: Mark Number

service-address:VIP:PORT 使用VIP和端口号

保存规则:

ipvsadm -S > /path/to/somefile

重载规则:

ipvadm -R < /path/to/somefile

清除规则:

ipvsadm -C

示例如下:

ipvadm -A -t 192.168.1.10:80 -s rr

#添加一个规则,指定的-t tcp协议,使用192.168.1.10 为VIP 端口为80 -s指定为rr 也就是轮询。

2、管理集群服务中后端的real server

添加或修改:

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

-a: 添加

-e: 修改

-t: tcp

-u: udp

-f: FirewallMark FWM 防火墙标记。service-address: Mark Number

service-address: 此前添加的的service-address: VIP:PORT

-r: 指定后端real server

server-address: RIP:PORT

-g: DR模型

-i: TUN模型

-m: NAT模型

-w: 指定权重

删除:

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

-d:删除

示例如下:

ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.9:80 -g -w 3

ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.8:80 -g -w 5

#定义了两个后端server 并指定为DR模型和各个服务器的权重

3、查看规则

ipvsadm -L -n

ipvsadm -L -n -c 查看当前连接信息

六、LVS的持久连接

无论使用什么算法,LVS持久都能实现在一定时间内,将来自同一个客户端请求派发至此前选定的后端服务器即RS。Real Server。

LVS 持久连接模板(内存缓冲区):每一个客户端分配给它的RS的映射关系;

ipvsadm -A|E ... -p timeout:

timeout: 持久连接时长,默认300秒;单位是秒;

应用场景如:在基于SSL,需要用到持久连接;后端服务器有session应用时,比较用户登录,这时多个后端服务器session共享问题无法解决时,需要持久连接到同一个后端服务器。

三种持久连接:

1、PPC:将来自于同一个客户端对同一个集群服务的请求,始终定向至此前选定的RS;     持久端口连接

ipvsadm -A -t 192.168.1.10:23 -s rr -p 600

ipvsadm -a -t 192.168.1.10:23 -r 192.168.1.9:23 -g -w 2

ipvsadm -a -t 192.168.1.10:23 -r 192.168.1.8:23 -g -w 5

#注:此时的权重没有作用了。

2、PCC:将来自于同一个客户端对所有端口的请求,始终定向至此前选定的RS;           持久客户端连接

把所有端口统统定义为集群服务,一律向RS转发;

ipvsadm -C

ipvsadm -A -t 192.168.1.10:0 -s rr -p 600

ipvsadm -a -t 192.168.1.10:0 -r 192.168.1.9 -g -w 2

ipvsadm -a -t 192.168.1.10:0 -r 192.168.1.8 -g -w 5

此时后端服务器的所有端口都可以转发了,并绑定到同一个后端服务器上。

3、PNMPP:持久防火墙标记连接

把多个端口持久连接到后端同一台服务器上,此前两种方法都无法做到。

防火墙标记,可以做到把多个端口定义为同一个标记数(1-99) 把标记号进行转发到后端即可。

方法如下:

如把80和23端口标记为8

在PREROUTING链上标记:

操作如下:

iptables规则:

iptables -t mangle -A PREROUTING -d 192.168.1.10 -i eth0 -p tcp --dport 80 -j MARK --set-mark 8

iptables -t mangle -A PREROUTING -d 192.168.1.10 -i eth0 -p tcp --dport 23 -j MARK --set-mark 8

#使用的-d 后面是VIP地址

添加LVS规则:

ipvsadm -A -f 8 -s rr -p 600

ipvsadm -a -f 8 -r 192.168.1.9 -g -w 2

ipvsadm -a -f 8 -r 192.168.1.8 -g -w 5

此时应当实现了之前的把多个端口定位到此前所选定的后端同一台服务器上。

以上就是LVS的基于概念和ipvsadm命令基本使用详情。如有批漏请各位指出,多谢关注。

下一篇会有三个脚本来实现LVS在负载均衡端和Real Server的设置,其中有一个脚本来提供后端Real Server健康状态检测,并自动添加恢复后的Real Server服务器。

本文转自 ZhouLS 51CTO博客,原文链接:http://blog.51cto.com/zhou123/1683952

负载均衡之LVS详解相关推荐

  1. NLB网路负载均衡管理器详解

    原文:NLB网路负载均衡管理器详解 序言 在上一篇配置iis负载均衡中我们使用啦微软的ARR,我在那篇文章也中提到了网站的高可用性,但是ARR只能做请求入口的消息分发服务,这样如果我们的消息分发服务器 ...

  2. ①lvs负载均衡集群 详解

    文章目录 负载均衡集群 1.集群是什么? 7.七层的负载均衡(基于虚拟的URL或主机IP的负载均衡) 8.四层负载与七层负载的区别 LVS 实现四层负载均衡项目实战 1.LVS 介绍 2.LVS 优势 ...

  3. 高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)

    第一章:HAproxy简介及安装配置 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 目录 HAproxy简 ...

  4. 高可用高性能负载均衡软件HAproxy详解指南-第三章:HAproxy实例

    目录 haproxy案例1:定义独立日志文件 haproxy案例2:haproxy统计页面的输出机制 haproxy案例3:动静分离示例: haproxy案例4:实现web负载 haproxy案例5: ...

  5. 阿里云负载均衡SLB网络型NLB负载均衡架构性能详解

    阿里云网络型负载均衡NLB是阿里云推出的新一代四层负载均衡,支持超高性能和自动弹性能力,单实例可以达到1亿并发连接,帮您轻松应对高并发业务.网络型负载均衡NLB具有超强性能.自动弹性伸缩.高可用.TC ...

  6. 腾讯云公网负载均衡技术实现详解

    相关阅读: 阿里P7/P8学习路线图--技术封神之路 十几位资深架构师,整理了最新架构师学习体系,分享给大家...... 互联网技术(java框架.分布式.集群)干货视频大全,不看后悔!(免费下载) ...

  7. Nginx负载均衡配置实例详解(转)

    | 时间:2013-09-05 20:19:17 | 阅读数:810738 [导读] 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的 ...

  8. Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  9. java rocketmq消费_rocketmq消费负载均衡--push消费详解

    前言 本文介绍了DefaultMQPushConsumerImpl消费者,客户端负载均衡相关知识点.本文从DefaultMQPushConsumerImpl启动过程到实现负载均衡,从源代码一步一步分析 ...

  10. 路由器NAT负载均衡实验过程详解

    实验拓扑图: 实验环境配置说明: 1.将R1的Fa0/0接口的IP设为:192.168.2.1/24,S1/2接口的IP设为:202.96.134.1/24: 2.将R2的S1/2接口的IP设为:20 ...

最新文章

  1. mysql查找执行效率慢的SQL语句
  2. ALV中下拉列表列的实现
  3. 母婴品牌与AI的碰撞:第四范式为美素佳儿提供智能推送服务
  4. BZOJ.4553.[HEOI2016TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
  5. mongoose populate 返回 指定 字段
  6. QString转char*的问题
  7. 课堂笔记——计算机体系结构(1)
  8. springboot actuator_Spring Boot之程序性能监控
  9. oracle操作记录
  10. 计蒜客-最后一个单词的长度
  11. osg动态加载模型不显示_探索未知种族之osg类生物---渲染遍历之Renderer::draw()简介...
  12. Java中的优先队列——二叉堆
  13. 基于Java的在线音乐网站的设计_基于javaweb的音乐网站的设计与实现论文.doc
  14. 基于php014居民小区物业管理系统
  15. C#之放入透明背景字体(label标签的透明设置)
  16. 鹏业安装算量软件8.0.0.41 升级内容
  17. LSD(线段检测测试文件)
  18. JS-计算日期差,计算日期之间的月数
  19. java 静态全局变量_静态变量static和全局变量global
  20. 2D横版跳跃游戏第三节

热门文章

  1. java jtable 监听_【Java】在JTable中设置鼠标监听器,点击操作对应数据
  2. python双重for循环 列表推导式_Python轻量级循环-列表推导式
  3. c语言编程秒表multisim,用定时器计数器设计一个简单的秒表.docx
  4. java 映射servlet,java – 将映射或对象从jsp传递到servlet
  5. java xstream json_详解XML,Object,Json转换与Xstream的使用
  6. python如何提取json_python实现提取str字符串/json中多级目录下的某个值
  7. split-lapply-cbind模式--R语言
  8. Asp.net core 学习笔记 ( OData )
  9. 阿里面试记录-程序上机
  10. php引用()详解及注意事项