一、Cluster常见集群类型

在生成环境中使用最多的是LB和HA集群,而HPC也开始活跃起来,例如hadoop就是并行处理集群
1、LB:Load Balancing,负载均衡(增加处理能力),有高可用能力,但不是高可用集群 负载均衡集群是以提高服务的并发处理能力为根本着眼点
2、HA:High Availability,高可用集群(增加服务可用性)
高可用集群是以提升服务的始终在线能力为着眼点,不会因为当机而导致服务不能用
衡量可用性:在线时间/(在线时间+故障处理时间)
 
    
  1. 99%:一年有三天不在线 
  2. 99.9%:一年有0.3天不在线 
  3. 99.99%:一年有0.03天不在线 
  4. 99.999%:一年有0.003天不在线 
3、HPC:High performance,高性能计算集群,计算海量数据,解决复杂问题
平时所说的超级计算机就是高性能计算集群,查看每秒钟浮点运算的能力
运用到的名词:
向量机:尽可能向上进行扩展,如果CPU过多,在架构上纵然会有问题的
并行处理集群:包括两部分
1、分布式文件系统;
2、将大任务切割为小任务,分别进行处理的机制
二、负载均衡设备分类
1、Hardware:硬件负载均衡设备
 
    
  1. F5,BIG IP 
  2.    Citrix,Netscaler 
  3.    A10 
2、Software:软件负载均衡设备,包括两部分
四层实现的有:功能略优于七层设备
   LVS(四层路由设备),是由中国人张国松研发的(阿里巴巴的副总裁)根据用户请求的IP与端口号, 实现将用户的请求分发至一个客户端不同的主机   
七层实现的有:(七层是反向代理)
   nginx:是由俄罗斯人开发的,主要功能是针对http,smtp,pop3,imap等协议实现负载均衡,只负责 解析有限的七层协议
   haproxy:主要功能是针对http协议实现负载均衡,也可以实现tcp(mysql,smtp)等协议的负载均衡
3、LVS是什么?      
LVS是Linux Virtual Server的缩写,Linux虚拟服务器,本身是一个负载均衡设备(director server), 自身不提供任何服务,如果有用户请求此处,它负责将用户请求转发至后端真正提供了此服务的服务器。 因此后端服务器称为realserver--》真正意义上的服务器,能够解析三层四层请求,根据用户请求的IP对其 进行响应,本身工作在内核的tcp/Ip协议栈上,工作在input链上
注意:LVS和iptables不能同时使用
LVS分为两段:
   ipvsadm:管理集群服务的命令行工具(用户空间)
   ipvs:内核模块,工作在INPUT链上
 
    
  1. VIP:virtual IP,向外提供服务的IP 
  2. DIP:director IP 
  3. RIP:realserver IP 
  4. CIP:client IP 
4、LVS有三种常见类型:
NAT:地址转换,类似于DNAT
DR:直接路由,只处理请求报文,响应报文不经过DR
TUN:隧道, 多目标,前端至少有两个网络接口,一个面向互联网,让互联网的用户能够访问到;
一个面向realserver,而用户请求到达时,它将用户请求转换为realserver中的某一个地址的方式来实现的
(1)、NAT:地址转换遵循的法则
        集群节点跟director必须在同一个IP网络中
        RIP通常是私有地址,仅用于各集群节点间的通信
director位于client和real server之间,并负责处理进出的所有通信
real server必须将网关指向DIP
支持端口映射
real server可以使用任意OS
较大规模应用场景中,Director易成为系统瓶颈
(2)、DR:直接路由
        集群节点跟director必须在同一个物理网络中
RIP可以使用公网地址,实现便捷的远程管理和监控
director仅负责处理入站请求,响应报文则由real server直接发往客户端
real server不能将网关指向DIP
不支持端口映射
LVS-DR模型有三种,如下:
 
    
  1. 1、VIP:MAC(DVIP) 
  2. 2、arptables: 
  3. 3、kernel parameter:内核参数,响应级别和通告级别 
  4.      arp_ignore:定义接收到ARP请求时的响应级别,默认级别为0 
  5.         0:只要本地配置的有相应地址,就给予响应 
  6.         1:仅在请求的目标地址配置请求到达的接口上的时候,才给予响应 
  7.      arp_announce:定义将自己的地址向外通告时的通告级别,默认级别为0 
  8.         0:将本地任何接口上的任何地址向外通告(可能是交叉通告) 
  9.         1:试图仅向目标网络通告与其网络匹配的地址 
  10.         2:仅向与本地接口上地址匹配的网络进行通告 
(3)、TUN:隧道
        集群节点可以跨越互联网(Internet)
RIP必须是公网地址
director仅处理入站请求,响应报文则由real server直接发往客户端
real server不能将网关指向director
只有支持隧道功能的OS才能用于real server
不支持端口映射
这三种模型以NAT最为简单,以DR最为常见
三、调度算法分析
调度算法的含义:英文是schedule method,它是挑选一个后端服务器接收一个新请求的计算标准
通常情况下,一个调度器只为一个服务提供调度功能,可为N个服务提供集群能力
大致分为两种类型的调度
1、静态(固定)调度:在调度时不考虑当前服务器上是否空闲
   rr:轮询调度
   wrr:(Weight,加权)加权轮询,以权重比例作为轮询标准,在轮询之前会事先计算各服务器
之间权重的比例,按照这个比例实现在各主机之间进行调度
   sh:source hash,源地址hash,来自同一个客户端的请求都发至同一个real server(实现会话绑定的 功能),但在一定程度上破坏了公平实现调度性,但又必须使用,是因为要追踪用户此前访问过 哪些内容,实现会话绑定(web服务器是无状态的,cookie---》session(会话))客户端第一
次访问服务器时,服务器端会生成一段标识符给客户端,客户端会把这段标识符保存在本地的cookie文件中 当客户端再次访问此站点时,它都会把这个cookie(cookie中包含用户身份认证,url等等信息) 信息附加在请求中,服务器端收到两个的cookie信息都是一样的他就可以判定此客户端访问过哪些网站,进而可以给你提供一些你可能喜欢看的东西
   dh:destination hash,目标地址hash,将同一IP地址请求发送给同一个real server
(以目标地址为标准,进行挑选),举例说明:前端是一个director server,后端是两个缓存服务器(cache server) 此时某用户发起的请求被轮到其中的某个cacheserver上,若缓存中没有,就会去找原始服务器,原始服务器的 数据会先保存在缓存中,在经缓存服务器返回给客户端;若第二次客户端请求了同个内容,那就会发往同一个cacheserver上, 提高了缓存命中率
2、动态调度方法:
   lc:最少连接(active*256+inactive)挑选最小值(值越小连接数越少)
   wlc;加权最少连接(active*256+inactive)/weight,挑选最小值
   sed:最短期望延迟,非活动连接可以忽略,(active+1)*256/weight,挑选最小值
   nq;永不排队(nerve queue),不管权重多大,每个服务器都会先给一个,再进行计算权重,不会让服务器 闲着的,只是权重大的会优先发到,不管怎样都会被发到的
   LBLC:基于本地的最少连接
   LBLCR:基于本地带复制功能的最少连接
active:活动连接,用户请求进来,并且正在实现数据传输,占据大量的内存空间
inactive:非活动连接,连接建立,数据传输结束,但没有断开(例如长连接,会话没有断开),占据内存少
最理想的调度方法:wlc(默认的)
四、LVS实现高可用集群的工具
ipvsadm:主要功能
1、管理集群服务
 
    
  1. 添加:-A -t|u|f service-address [-s scheduler] 
  2.              -t:TCP协议的集群 
  3.              -u:UDP协议的集群,service-address: IP:PORT 
  4.             -f:FWM,防火墙标记 service-address: Mark Number 
  5.     修改:-E 
  6.     删除:-D -t|u|f service-address  
  7. # ipvsadm -A -t 172.16.100.1:80 -s rr      
2、管理集群服务中的RS
 
    
  1. 添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]  
  2.               -t|u|f service-address:事先定义好的某集群服务 
  3.               -r server-address:某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射 
  4.                 [-g|i|m]:LVS类型 
  5.                    -g:DR 
  6.                    -i:TUN 
  7.                    -m:NAT 
  8.                  [-w weight] :定义服务器权重 
  9.     修改:-e 
  10.     删除:-d -t|u|f service-address -r server-address  
  11. # ipvsadm -a -t 172.16.50.1:80 -r 192.168.10.2 -m 
  12. # ipvsadm -a -t 172.16.50.1:80 -r 192.168.10.3 -m 
3、查看
 
    
  1. -L|l 后面有很多子命令,如下 
  2.     -n:数字格式显示Ip(主机)地址和端口号 
  3.     --stats:统计数据信息 
  4.     --rate:速率 
  5.     --timeout:显示tcp、tcpfin、udp的会话超时时长 
  6.     --sort:根据升序进行排序(默认是升序) 
  7.     -c:显示当前的ipvs连接状况 
  8. # ipvsadm -L -n --stats 
4、删除所有集群服务
 
    
  1. -C:清空ipvs规则 
  2. #ipvsadm -C 
5、保存规则
 
    
  1. -S 
  2. # ipvsadm -S > /path/to/somefile(默认保存在/etc/sysconfig/ipvsadm) 
6、载入此前的规则
 
    
  1. -R 
  2. # ipvsadm -R < /path/from/somefile 
知识更新中...................