Linux集群--lvs
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux集群--lvs相关的知识,希望对你有一定的参考价值。
下面介绍的是Linux集群
一、Linux集群基础
1、Linux集群类型:LB、HA、HP、DS
(1)、LB:负载均衡集群
缺陷:单点故障,其调度器会成为性能瓶颈
(2)、HA:高可用集群
平均无故障时间(MTBF)、平均故障修复时间(MTTR)。
有效值==MTBF/(MTBF+MTTR) -------------提高可用性公式
(3)、HP:高性能集群
(4)、DS:分布式系统集群
功能:分布式处理、分布式存储
2、Linux集群调度器:硬件(F5)、软件(lvs)。
3、负载均衡
(1)、传输层的负载均衡:四层交换
应用协议工具:lvs、nginx、haproxy
(2)、应用层的负载均衡:七层交换
应用协议工具:httpd、nginx、haproxy
(3)、FastCGI负载均衡:------------性能好,没httpd稳定
应用协议工具:httpd、nginx
(4)、mysql的负载均衡:
管理工具:mysql-proxy
二、lvs --------------Linux虚拟服务器
虚拟服务器:vs ------------调度器
真实服务器:rs(Real Server)----------后端服务器
CIP:客户端 ip,请求发送方 ip地址
VIP:虚拟服务器 ip,客户端访问的地址
DIP:调度器 ip
RIP:真实服务器的 ip
1、lvs基础
lvs是基于套接字(ip:port)来实现数据分发的。lvs,根据目标套接字,调度数据报文到后端真实服务器(rs)上,调度时,通过不同的算法来调度响应的服务器。
lvs使用的调度规则链:INPUT
iptables 和 lvs 的规则,不能同时使用,至少INPUT规则链不能同时使用。
lvs 的内核组件:ipvs ----------接收 ipvsadm 的管理命令,支持TCP、UDP、SCTP、AH、ESP、AH_ESP协议
用户空间工具为:ipvsadm ------------集群服务和 rs 管理
2、lvs的集群类型:lvs-nat、lvs-dr、lvs-tunnel。
(1)、lvs-nat -----------多目标IP地址的DNAT
client ---------> DIP ---------- >RIP ------------> RS(目标地址、目标端口)
(同一网段、私有IP)
具体步骤:
client ------> VIP --------> INPUT ------> DIP ------> RIP ------>RS
lvs-nat:(注意)
1、RIP和DIP在同一个网段,并应该是私有IP地址,RS的网关指向DIP。
2、请求报文和响应报文,都必须通过director转发器转发,易引发性能瓶颈、单点故障。
3、可以实现端口重定向,即VIP、DIP端口号可以不同。
4、vs必须是Linux系统,而RS可以是任意的操作系统。
(2)、lvs-dr(默认类型) ----------重要
dr:直接路由(注意判断网关)----------------响应报文不经过转发器
具体步骤:
client -------> 路由器 ----------> 交换机 ---------> VS -----------> RS ---------------> 交换机 -------->路由器 ---------> client (RIP、DIP同一网段)
lvs-dr:(注意)
1、通过对请求报文封装一个数据链路层首部(MAC地址)。
2、重新封装的源MAC地址,是DIP所在网络的MAC地址。
目的MAC地址,是调度选出来的RS的RIP接口的MAC地址。
3、源IP地址和源PORT,目的IP地址和目的PORT,在整个报文转发过程中保持不变
4、交换机 -------> VS:将目标地址为VIP的报文发往VS,方法:在路由器上静态绑定IP地址和MAC地址。
交换机 --------> RS:交换机到RS的方法,有两种:在RS上使用arptables,RS的内核参数(arp_announce、arp_ignore)
5、不支持端口重定向
6、RS为Linux
7、RS上必须配置RIP和VIP,并且VIP应该配置在lo接口的lable上
(3)、lvs-tun ----------只经过一次VS
tunnel:隧道封装,VS和RS之间的数据传输。
不修改请求报文的ip首部(CIP/VIP),而是在之外再封装一个IP首部(DIP/RIP)。
具体步骤:
client ----------> VS --------> RS ---------> client(只经过一次VS)
lvs-tun:(注意)
1、CIP,VIP,DIP,RIP都应该是公有IP地址
2、RS的网关无法指向DIP,因此响应报文不会经过Director转发,而是直接发往CIP
3、不支持端口重定向
4、RS必须支持隧道协议
5、RS上必须配置RIP和VIP
(4)、lvs-fullnat -----------非标准类型(VS的开销更大,但可增加一定的安全性)
同时修改请求报文的源IP地址、目的IP地址,实现报文转发。
CIP --------->DIP
VIP --------->RIP
即:CIP/VIP -------> DIP/RIP
lvs-fullnat:(注意)
1、CIP、VIP为公有地址,DIP、RIP为私有地址。DIP、RIP可不在同一网段。
2、RS对收到的请求报文的响应报文的目的地址是DIP,所以请求报文和响应报文都必须经过Director
3、支持端口重定向
3、lvs的调度算法
根据是否与RS的负载状态有关,分为:静态算法(无关)、动态算法(有关)。
(1)、静态算法:与算法本身有关
RR:轮询算法
WRR:加权轮询算法
SH:源地址哈希算法(源地址绑定)
DH:目标地址哈希(正向代理服务器) ---------缓存方式实现
(2)、动态算法:与RS当前负载状态有关,RS的负载:Overhead。
LC:最少连接数算法(选择Overhead值小的)------------存在【起点问题】
*WLC(默认算法):加权最小连接算法 -------------存在【起点问题】
SED:最短期望延迟算法 -------------解决了起点问题,存在【连续请求问题】
NQ:无序列排队算法 ------------开始据RS权重依次分配一个,保证一个活动连接,然后再SED
LBLC:基于本地的最少连接数算法 ----------------动态DH(正向代理)
LBLCR:带有复制功能的LBLC算法 ------------带复制的动态DH(正向代理)
以上是关于Linux集群--lvs的主要内容,如果未能解决你的问题,请参考以下文章