Lvs(一):集群简介与Lvs基础
集群简介:
集群:Cluster,即计算机集群;是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。
系统的可扩展性:
scale up:向上扩展、垂直扩展、纵向扩展,即用性能好的主机(或硬件)替代性能差的主机(或硬件);成本高,随着性能的提高,会在某个临界点遇到瓶颈,导致性能随后降低
scale out:向外扩展、水平扩展;低成本,提供高并发能力和高可用性,更好的可扩展性
集群按功能和结构可以分成以下几类:
HA:High-Availability Clusters,高可用性集群;一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。
HA集群方案:
heartbeat:
corosync + pacemaker
RHCS:
CentOS 5:cman + rgmanager
CentOS 6:cman + pacemaker
keepalived
LB:Load-Balancing Clusters,负载均衡集群;负载均衡集群运行时,一般通过一个或者多个前端负载均衡器,将工作负载分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。这样的计算机集群有时也被称为服务器群(Server Farm)。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。
LB集群方案:
硬件:
F5:BIG-IP
Citrix:Netscaler
A10:A10
Array
Redware
软件:
传输层(4层):lvs
应用层(7层):nginx(http,smtp,pop3,imap)、haproxy(主要是http,tcp(mysql,smtp))
HP:High-Performance Clusters,高性能计算集群;高性能计算集群采用将计算任务分配到集群的不同计算节点而提高计算能力,因而主要应用在科学计算领域。
HP集群方案:
Hadoop
lvs简介:
lvs:Linux Virtual Server,linux虚拟服务器;
开源项目创始人:章文嵩(阿里花名:正明);
Lvs的组成:
ipvsadm:工作于用户空间,用于编写和管理集群服务的命令行工具;
ipvs:IP-Virtual server,工作于netfilter的input链上,当访问请求到达本机后prerouting转到input链,经过input上定义的集群策略审查,若是集群服务则请求报文会被送至forward并通过postrouting向后端服务器转发。
lvs工作于传输层(4层):
四层交换、四层路由,根据目标IP和目标port实现请求转发;无法在session级别(应用层)转发;不能到用户空间,因此不能进行更加精细的控制;在精细控制方面,haproxy和ngnix可以更好的实现。
Lvs的术语:
Director:调度器
RS:Real Server,集群节点服务器,后端真实提供服务的服务器
IP:
CIP:Client IP,客户端IP;
VIP:Virtual IP,虚拟IP;Director用来向外部提供服务的IP地址;
DIP:Director IP;Director用来和RS进行交互的IP地址;
RIP:Real Server IP,真实IP;后端服务器的IP;
Lvs的Director类型:
lvs-nat:Network Address Translation,网络地址转换
lvs-dr:Direct Routing,直连路由
lvs-tun:Tunneling,隧道
lvs调度方法:
静态方法:仅根据调度算法本身进行调度
rr:Round Robin,轮流,轮询,轮叫
wrr:Weighted RR,加权轮询
sh:Source Hashing,源地址hash、session保持、session绑定,表示来源于同一个CIP的请求将始终被定向至同一个RS;
dh:Destination Hashing,目标地址hash
动态方法:根据算法及各RS当前的负载状况进行调度
lc:Least Connection,最少连接
wlc:Weighted LC,加权最少连接
sed:Shortest Expection Delay,最少期望延迟
nq:Never Queue,永不排队
lblc:Locality-Based Least Connection,基于本地的最少连接
lblcr:Replicated lblc,带复制功能的lblc
lvs配置:
ipvsadm命令格式;
集群服务相关:
# ipvsadm -A|E|D -t|u|f service-address [-s scheduler]
-A:添加一个服务
-E:修改一个服务
-D:删除一个服务
-C:清空所有集群服务
-t VIP:port:定义集群服务类型为tcp的某端口
-u VIP:port:定义集群服务类型为udp的某端口
-f firewallmark:定义集群服务类型为防火墙标记
-s scheduler:定义集群服务的调度算法,默认为wlc
集群节点相关:
# ipvsadm -a|e|d -t|u|f service-address -r server-address [options]
-a:添加一个节点到集群服务
-e:修改集群服务中的节点
-d:从集群服务中删除一个节点
-t|u|f VIP:port:定义的到的集群服务
-r:RIP:port:定义节点的IP和端口
-m:masquerading (NAT),定义为NAT模型
-g:gatewaying (direct routing),定义为DR模型,默认即为DR模型
-i:ipip encapsulation (tunneling),定义为TUN模型
-w weight:定义服务器的权重
查看已经定义的集群服务及RS:
# ipvsadm -L -n
-c: 查看各连接
--stats:统计数据(总和)
--rate:速率(平均)
--exact:精确值
保存集群服务定义:
1、# ipvsadm -S > /path/to/some_rule_file
2、# ipvsadm-save > /path/to/some_rule_file
让规则文件中的规则生效:
1、# ipvsadm -R < /path/from/some_rule_file
2、# ipvsadm-restore < /path/from/some_rule_file
lvs持久连接功能:
无论使用什么调度方法,持久连接功能都能保证在指定的一段时间内,来自同一个用户的请求始终被定向至同个RS;其调度基准为集群服务;
Session持久机制:
1、session绑定:始终将来自同一个源IP的请求定向至同一个RS;没有容错能力;有损均衡效果;
2、session复制:在RS之间同步session,每个RS拥有集群中的所有的session;对规模集群不适用;
3、session服务器:利用单独部署的服务器来统一管理集群中的session;
持久连接的类型:
PCC:持久客户端连接;在基于tcp或udp定义集群服务时,其端口为0,格式为VIP:0,表示将来自于用户请求的任何一种请求(无论请求指定协议的哪个端口)统统转给后端的RS;基于持久连接时,来自于同一个Client的所有请求统统被转发至同一个RS;
PPC:持久端口连接;持久机制;单服务调度;各集群服务分开调度
PFM:持久防火墙标记连接;单服务调度;可以通过防火墙标记将多个协议定义为同一个服务;