一、集群类型:
1、负载均衡集群(LB集群--Load Balancing):
考虑提高服务器容量,是实现伸缩性扩展的主要技术。
当并发请求出现下面的情形时,就要考虑扩展:
1200请求:1s
1500请求:2s
1800请求:10s
扩展类型:
Scale up:向上,需要更强大性能的服务器,缺点是:提高的上限是有限的,并且它的性价比较差。
Scale out:向外,需要n多台主机。
A、LB的软件解决方案:
LVS(Linux Virtual Server)、
Haproxy、
Nginx等。
B、LB的硬件解决方案:
F5 BIG-IP、
Citrix Netscaler、
A10、
Array 、
Redware等。
2、高可用集群(HA集群--High Availability):
高可用,衡量服务可用性,平均无故障时间/(平均无故障时间+平均故障修复时间)。
高可用是用冗余设计,来保障稳定性。
HA的解决方案:Heartbeat、Corosync+pacemaker、
Cman+pacemaker、Cman+rgmanager、Keepalived等。
3、高性能集群(HP集群--High Performace):
向量机。
并行处理进群。
HP的解决方案:Hadoop
二、提高服务器性能的技术:
1、NoSQL:
MongoDB
2、分布式文件系统:
MogileFS
三、LVS:ipvsadm/ipvs,根据请求的目标套接字(包括端口协议类型TCP或UPD)来实现转发。
只有在并发连接数非常大时,才使用LVS做负载均衡,如淘宝、京东;对于小型的站点一般使用Haproxy。
CIP<----->VIP----DIP<----->RIP
1、LVS类型:
(1)、NAT:
A、RS应该使用私有地址;
B、RS的网关必须指向DIP;
C、RIP和DIP必须在同一网段内;
D、请求和响应的报文都要经过Director;
在高负载场景中,Director很可能成为系统性能瓶颈;
注意:一般请求报文较小,但响应报文比请求报文大的多。
E、支持端口映射;
(2)、DR(Direct Routing):让前端路由将请求发往VIP时,只能是Dirctor上的VIP
解决方案:
a、静态地址绑定,但不可用,因为未必有路由器的配置权限
或者Dirctor调用时静态地址绑定将难以适用。
b、修改Linux内核参数,将RS的VIP配置为LO接口别名,
限制linux仅对对应的接口的ARP请求做响应。
特性:
A、RS可以使用私有地址;但也可以使用公有地址,此时可以直接通过
互联网连入RS以实现配置、监控等。
B、RS的网关一定不能指向DIP
C、RIP跟Directory要在同一物理网络内 (不能由路由器分隔)
D、请求报文进过Directory,但响应报文一定不经过Directory
E、不支持端口映射;
F、RS可以支持大多数的OS(隐藏VIP)
(3)、TUN:IP隧道,实现跨互联网转发。
特性:
A、RIP、DIP、VIP都得是公网地址。
B、RS的网关一定不能指向DIP
C、RIP跟Directory不在同一物理网络内。
D、请求报文进过Directory,但响应报文一定不经过Directory
E、不支持端口映射;
F、RS的OS必须要支持隧道功能(两个IP首部)。
(4)、FULLDAT:这是linux的内核发展的2.3.2以后引入的一种新类型,但需要对LVS内核打补丁后才能使用的一种类型。跨网络的NAT类型。
2、Session持久机制:
(1)、session绑定:始终将同一个请求者的练级诶定向至同一个RS,这种方式无容错能力,并反均衡。
(2)、session复制:在RS质检同步session,因此,每个RS持有集群中所有的session;对于大规模集群环境不适用。
(3)、session服务器:利用单独部署的服务器,来统一管理session,这种方式避免的上两种的缺陷,是最好的。
3、LVS的调度算法scheduler method:共10种。
LVS的缺陷无法感知后台RS的运行状态,如果某个RS故障,LVS一样会根据调度算法将请求分配给它。
(1)、静态方法:仅根据算法本身进行调度。
RR:Rount Robin轮询。这种调度方式的Session持久机制:session复制/session服务器
WRR:Weighted RR 加权轮询,根据权重比例进行调度。这种调度方式的Session持久机制:session复制/session服务器
SH:Source Hashing 源地址哈希。这种调度方式的Session持久机制:session复制/session服务器/session绑定.
DH:Destination Hashing 目标地址哈希。服务器端有多个防火墙时,为了保证请求和响应从同一个防火墙进出,这种方式比较少见。
(2)、动态方法:不但根据算法还要根据RS当前的负载状况。
LC:Least Connection 最少链接算法。
Overhead=Active*256+Inactive,结果小者胜出,结果一样轮询。
WLC:Weighted Least Connection 加权最少链接算法。
Overhead=(Active*256+Inactive)/weighted,结果小者胜出,结果一样轮询。
SED:Shortest Expect Delay 最小期望延迟。
Overhead=(Active+1)*256/weighted,结果小者胜出,结果一样轮询。
NQ:Nerver Queue 永不排队。现根据权重挑选,叫每个服务器都接收一个请求,然后根据算法
Overhead=(Active+1)*256/weighted,结果小者胜出,结果一样轮询。
LBLC:locality-Based Least Connection 基于本地的最少链接,相当于DH+LC,用的较少。
LBLCR:Replicated and Locality-Based Least Connection带复制的基于本地的最少链接,用的较少。
4、LVS集群服务CS(Cluster Service):
根据请求的目标套接字(包括端口协议类型TCP或UPD)来实现转发。
172.16.100.7:80
#yum -y install ipvsadm
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-O] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
(1)、集群服务相关,注意ipvs不可和iptables同时使用,定义ipvs是要至少要清空iptables的filter,要执行如下命令。
iptables -F -t filter
service iptables save
A、-A:定义一个集群服务。
a、-t:tcp
b、-u:udp
c、-f:firewall mark防火墙标记,通常用于将两个或以上的服务绑定为一个服务进行处理时使用。
d、service-address:
-t IP:Prot
-u IP:Prot
-f firewall_mark
e、-s scheduler:默认WLC
f、-p [timeout] :persistent Connection 持久链接。
B、-E:修改定义过的集群服务属性。
C、ipvsadm -D -t|u|f service-address 删除指定的集群服务。
D、ipvsadm -C :清空所有的集群服务
E、ipvsadm -S:定义的集群服务要保存,否则机器重启失效。
F、ipvsadm -R :载入集群服务。
G、ipvsadm -L :查看ipvs规则
-n:数字格式显示IP地址。
-c:显示连接数相关信息。
--stats:显示统计数据。
H、ipvsadm -Z :计数器清零。
(2)、RS相关。
A、-a:向指定的集群服务CS中添加RS
-t|u|f service-address :将RS添加到那个集群服务CS中
-r server-address:指定RS,可以包含IP:port,只有支持端口映射的LVS类型才允许此处使用跟集群服务不同的端口。
[-g|i|m] 指定LVS类型,-g(Gateway) 为DR,默认为DR;-i(ipip)TUN;-m(masquerade)NAT
-w weight:指定RS权重,可以省略默认为1.
B、-e:修改指定的集RS属性
C、ipvsadm -d -t|u|f service-address -r server-address:从指定的CS中移除一个RS
5、LVS持久连接类型:可以对LVS的任意调度算法实现持久连接;在定义集群服务时,使用参数-p 指定持久连接类型即可,这样就实现了session的绑定。
PCC 持久客户端连接:在有效时长内,将来自于同一个客户端发往VIP的所有请求(注意不管端口)统统定向同一个RS。
PPC:在有效时长内,将来自于同一个客户端发往某VIP的某端口的所有请求统统定向同一个RS。
PFMC:端口绑定(port affinity ),基于防火墙标记,将两个或以上的端口绑定为同一个服务。可PFMC其端口范围介于PCC和PPC之间。
6、LVS的缺陷以及使用场景。
(1)、LVS的缺陷是自身无法感知后台RS的运行状态,如果某个RS故障,LVS一样会根据调度算法将请求分配给它。
解决方案:写脚本检查或者keeplalived、ldirectord(heartbeat、corosync)
(2)、Director的自身可用性,即高可用问题?
解决方案:keeplalived、ldirectord(heartbeat、corosync)
(3)、只有在并发连接数非常大时,才使用LVS做负载均衡,如淘宝、京东;对于小型的站点一般使用Haproxy。
本文转自lzf0530377451CTO博客,原文链接: http://blog.51cto.com/8757576/1660510如需转载请自行联系原作者