一、集群的类型:
scale on :向上扩展 意思就是将我们的服务器的内存容量调大和cpu数量增加些.
缺点:在一定的范围之内它的性能是上升的趋势,但是超出范围之后就是下降的趋势。因为随着它的cpu的个数增加我们需要给我们的cpu仲裁。而且随着cpu个数的增加资源竞争性越大。
scale out :向外扩展 意思就是一台服务器应付不过来,我们就再增加一台服务器.
优点:增减服务器很方便、而且没有向上扩展随着增加性能下降。
向外扩张的工作模式:当客户端向服务器端发送请求,服务器端只拿出来一台服务器来相应我们的客户端的请求。
LB:load balancing:负载均衡集群
负载均衡集群中有一个分发器或者叫调度器,我们将其称之为Director,它处在多台服务器的上面,分发器根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来响应客户端发送的请求。
调度的方式:
rr:round robin: 轮调 轮流的使用
wrr:weight round robin :加权
HA:highavailability
高可用意思就是服务的可用性比较高,当我们某台服务器死机后不会造成我们的服务不可用。其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断。
health check:健康检查
一般来说我们集群中工作在前端(分发器)的服务器都会对我们的后端服务器做一个健康检查,如果发现我们服务器当机就不会对其在做转发。
HP:Hight Performance 高性能
高性能的集群是当某一个任务量非常大的时候,我们做一个集群共同来完成这一个任务。这种处理方式我们称为并行处理集群,并行处理集群是将大任务划分为小任务,分别进行处理的机制。一般这样子的集群用来科研工作方面。现在比较火的hadoop就是使用的并行处理集群。
小结:负载均衡和高可用区别:
负载均衡着重在于提供服务并发处理能力的集群,高可用以提升服务在线的能力的集群。
高性能着重用于处理一个海量任务。
二、LB:负载均衡集群之LVS.
实现负载均衡的类别:
从Hardware分类:
F5 : BIG IP
Citrix公司: NetScaler
A10 :
从Software分类;
四层:LVS(国人开发的)
七层:Nginx 、haproxy
LVS:Linux Virtual Server的解释:
一般来说,LVS采用三层结构:负载调度器、服务器池、共享存储。工作在TCP/IP协议的四层,其转发是依赖于四层协议的特征进行转发的,由于其转发要依赖于协议的特征进行转发,因此需要在内核的TCP/IP协议栈进行过滤筛选,可想而知,这就需要在内核的模块来完成,而这样的过滤转发规则又是由管理员进行定义的,所以,LVS就是两段式的架构设计,在内核空间中工作的是"ipvs",而在用户空间中工作的,用来定义集群服务规则的是"ipvsadm"。这就很容易想到iptables。LVS工作在input链上.
LVS中每个主机IP地址的定义:
VIP:Director用来向客户端提供服务的IP地址
RIP:集群节点(后台真正提供服务的服务器)所使用的IP地址
DIP:Director用来和RIP进行联系的IP地址
CIP:公网IP,客户端使用的IP。
LVS的三种转发模式:
LVS-NAT:网络地址转换 Network address translation
LVS-DR:直接路由 Direct routing
LVS-TUN:IP隧道 IP tunneling
LVS的三种转发模式特点:
NAT:
集群节点跟director必须在同一个IP网络中;
RIP通常是私有地址,仅用于各集群节点间的通信;
director位于client和real server之间,并负责处理进出的所有通信;
realserver必须将网关指向DIP;
支持端口映射;
realserver可以使用任意OS;
较大规模应该场景中,director易成为系统瓶颈;
DR:
集群节点跟director必须在同一个物理网络中;
RIP可以使用公网地址,实现便捷的远程管理和监控;
director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
realserver不能将网关指向DIP;
不支持端口映射;
TUN:
集群节点可以跨越Internet;
RIP必须是公网地址;
director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
realserver网关不能指向director;
只有支持隧道功能的OS才能用于realserver;
不支持端口映射;
LVS的调度算法:
固定调度:不考虑server服务器是否空闲.
rr : round robin :轮叫,轮询
wrr: weight round robin :加权轮叫
sh : source hashing : 源地址hash 实现会话绑定session affinity
dh : destination hashing : 将同样的请求发送给同一个server
动态调度:
lc :leash-connection 最少连接 active*256+inactive 谁的小调谁.
wlc : 加权最少连接 (active*256+inactive)/weight 谁的小调谁.
sed : 最少期望延迟 (active+1)*256/weight 谁的小调谁.
nq : never queue 永不排队
LBLC :基于本地的最少连接
LBLCR:基于本地的带复制功能的最少连接
LVS默认调度算法是 wlc
定义集群服务规则的ipvsadm命令的实用:
管理集群服务
添加
ipvsadm -A -t|u|f server-adddress [-s scheduler]
-t :tcp协议的集群 service-address后面必须写成ip:port
-u :udp协议的集群 service-address后面必须写成ip:port
-f :fwm 防火墙的标记 service-address后面必须写成mark number
修改
ipvsadm -E -t|u|f server-adddress
删除
ipvsadm -D -t|u|f server-adddress
管理集群服务中的realserver
添加
ipvsadm -a -t|u|f server-adddress -r server-address [-g|i|m] [-w weight]
-t|u|f service-address 实现定义好的某集群服务
-r server-address 某rs的地址在nat模型中可使用ip:port实现端口映射
[-g|i|m] lvs类型:
-g : DR
-i : TUN
-m : NAT
[-w weight]
修改
ipvsadm -e -t|u|f server-adddress
删除
ipvsadm -d -t|u|f server-adddress
查看
ipvsadm -L | ipvsadm -l ....
-n 显示主机地址和端口为数字格式
--stats 显示进出站数据
--rate 显示速率
--timeout 显示每一个tcp tcpfin udp 的超时时间值
--deamon 显示进程信息
--sort 显示排序规则 默认是升序的
-c 显示多少个客户连接进来
删除所有集群服务:
清空ipvs规则
ipvsadm -C
保存定义的规则:
service ipvsadm save
ipvsadm -S > /path/to/somefile
载入此前的规则
ipvsadm -R
ipvsadm -R < /path/to/somefile