集群: LVS

 

                                               集群: LVS


集群(Cluster): 将多个计算机组合起来一起完成某个特定任务

 

 集群的分类

  LB, load Balancing 负载均衡集群

                                     LVS  实现多台主机以特定方式组合起来 分摊大容量的并发请求压力  

  HA, Hig Avaliability 高可用性集群 
                                    时时在线 7*24小时在线 服务不中断 关键性的业务要求达到59 (99.999%) 
                                    高可用集群要求至少要有两台主机同时在线 ,在某一个时刻只有一台主机在工作,一旦这条主机宕机了 另外的主机马上顶替上来提供同样的服务运行 要保证时时在线可用性
  HP, High Performance 高性能集群 也叫科学计算集群  解决需要用到大量复杂数据 如:天气监控  ,人口的统计 ,科学勘探 绘制DNA基因图谱

计算机扩展方式:
  scal on: 向上扩展  用更好的计算机代替原有的性能叫差的计算机
        也能实现高可用性,设计冗余结果,但成本过高 
  scal out向外扩展 组合方式足够先进 全球前500强超级计算机其中有90%的计算机大多数是使用 接近于 废弃的PC机组合成的集群 照样能排名全球前500强超级计算机 只要组合方式足够先进  

1.负载均衡
                   主要目的是分摊负载
                    要想具有负载均衡的能力 需要一个前端的负载器                 //负载均衡调度器  
                    够实现将来源于客户端的请求负载到其他节点上去
                    F5 : 硬件 实现负载均衡转发
                    LVS: (Linux虚拟服务器负责分配                                       // 章文嵩开发的一个基于Linux的开源软件
                    工作机制: 前端部署一个调度器 监控客户端发来的请求 当用户发来请求的时候 LVS 查找后台真正提供服务的服务器 而基于特定算法进行转发  
                     基于至少10种算法进行转换 分别用于计算不用应用的轮转 请求调度 优化后基本达到硬件速度
                     前端调度器 接收请求 转发到后台服务器节点 
             缺点:单点故障 (前端调度器,如果它坏了 ,那么工作肯定不能进行了)一个地方出错导致整个集群系统失效
             优点:
                   1.也能可提供高可用性 不考虑单点故障 考虑后端提供的真正服务器 一但后台一台服务器出现了故障 请求的数据就会自动转向于另外的服务器 一个服务器宕机了 只 要把请求转发到另外的服务器就0K 
                   2.负载均衡
                   3.便于扩展

2.高可用性集群HA
                           提供至少两台主机 时时在线的能力 保证时时在线
                           Source 资源 在个个节点之间流动(float)转移
                          保证服务器时时在线但特定时间内只有一个节点在运行    
                          集群间数据共享解决方案:
                                 NFS 共享存储 效率低 文件级
                                 文件同步  
                                rsync 检测双方节点上是否发生改变 检查文件是否同步  
                                rsync Server 服务器监控 是否发生改变
                                DRBD 在内核中基于块实现
                                SAN 专业级别的共享存储:输出的是块级别的共享
   
3.高性能集群HP 云计算 (分布式文件系统)
                              也需要前端的转发节点 前端主机可以实现把一个复杂的运算任务 解剖成N个小任务 然后每一个节点分别计算每一个小任务 每一个节点把小任务完成以后 把计算的结果返回给转发节点 转发节点在整合所有的结果
                              框架bowerfull Hadoop(java实现

各种开源集群常见的解决方案:
LB
     lvs linux虚拟服务器)
     haproxy (高可用的代理)
HA:
     heartbeat()
     corosync+openais: RHCS 红帽集群套件 // 可靠性 可部署性优于heartbeat
     ultramokey
     keepaliveTCP中有一个Keep-alive的机制可以检测死连接,原理很简单,TCP会在空闲了一定时间后发送数据给对方: 
HP: boweerful
Linux解决问题的思路:
集合一个个小软件 组合起来实现强大的功能 个个组件套件存在 
-----------------------------------------------------------------------------------------------------------------------------------
LVS : 开源软件
lvs 接受用户发来的请求 本身并不响应请求 把接受到的请求转发到后台真正的服务器
LVS只需要装在调度节点上 
               direcor 调度器 叫做四层交换机 默认情况下 判断用户请求端口是那种服务于是
               把用户请求的信息转发到后台真正提供服务的节点上去 转发机制在四层实现 客户端上几乎是透明的

    spacer.gif

术语:LVS (linux virtual server) 常见缩写地址:

VIP: Vitual IP address 并不提供真正的服务 把请求转发到后台上
RIP: real IP address 真正提供服务的地址
DIP: Director's IP 调度器 转发请求
CIP: Client computer's IP 客户端地址

LVS工作模式:
           特点: 高吞吐性 高并发 , 冗余 ,适应性(扩展服务器,缩减服务器)
 1.NAT LVS-NAT
                           1).集群节点必须在同一个网络中 DIP(调度器,转发请求) 和 RIP(真正提供服务的地址) 不能跨越网络
                           2).RIP 通常是私有地址  NAT 非路由地址
                           3).调度器要处理所有进出的请求 压力较大
                           4).所有RIP 必须以DIP为网关
                           5).NAT机制可以做端口映射  --> 端口转换[不但做地址转换还要做端口转换]
                           6).任何操作系统都能做RIP 只要能提供服务就OK ,对后台的操纵系统没有要求,很强的兼容性
                           7).单个Director 成为系统的瓶颈(那么可以把它本身也做成负载均衡,并且做成HA,前者可以减轻它的压力,后者可以实现高可用)

三种模式:
  2. LVS-DR  直接路由 出去的请求直接发送至客户端
                           进来的请求经过Director 出去的请求不经过Drector
                            LVS-DR 基本 properties   必须在同一个物理网络
                            RIP 可以使用公网地址仅处理请求 不处理响应 集群节点的网关不能指向DIP不支持端口转换
                            绝大多数操作系统都支持RealServer
                            基于二层转发实现 响应速度比NAT 速度快N倍以上 应用于小型网络  

  3. LVS-TUN  隧道

 经过修改过的DR 模型可以跨越网段转发

  不需要在同一个网段
  RIP(真正提供服务的地址) 必须要使用公网地址 
  调度器只需要处理进来的请求
  不能做端口映射

  只能使用支持IP隧道的 REAL server

 

LVS 模型的配置:
    1.定义集群服务
           ipvsadm -A|-E -t|-u|-f VIP:port -s schedule_menthod
           -A 添加集群服务
           -E 修改
           -t|-u|-f 定义服务 tcp udp firewal(基于防火墙标记服务)  
          -s (scheduler)调度算法 默认WLC
          -D 删除
          -C 清空规则
          -s 保存  
    2.realserver  
            ipvsadm -a|-e -t|-u VIP:port -r REALSERVER [ -g|-i|-m ] 
            -a 向某个集群服务当中添加某个对应的realserver 地址
            -e 
            -g|-i|-m [gateway| internet(tunnel)|地址伪装] // 指定LVS 的类型  
   3.查看 
           -L|-n
           --stats 数据统计

 e.g.        

[csharp] view plaincopy

1. ipvsadm -A -t 172.16.100.1:80 -s rr   

2. ipvsadm -a -t 172.16.100.1:80 -r 10.0.0.11 -m   

3. ipvsadm -a -t 172.16.100.1:80 -r 10.0.0.12 -m  

4. ipvsadm -L -n  


spacer.gif

 LVS Scheduling Methods 调度 10种算法

 静态调度算法:

RR : 轮调

WRR: 加权轮调 按比例轮调  
DH 目标地址散列 目标地址的请求做固定地址转发 
       将同一个目标的请求转发到一个目标上
SH 源地址散列实现来自于同一个用户的请求 转发到同一个 路由器或者 防火墙上
       实现平均内网负载 特定防火墙

       静态算法不考虑当前状态的情况

活动状态一直处于 ; ESTABLISHED 状态 

            优先级 : 活动连接*256+分活动连接

动态调度算法

LC least-connection 最少连接算法
                                         连接数最少的会接受下一个连接请求 谁最小 谁胜出 接受下一次请求
                                         同时考虑连接和非连接

                                         缺陷:不能区分服务器响应能力

WLC加权最少连接数                          // 最好的算法  
SED: shortest expected delay 最短期望延迟 对WLC 的简单改进
NQ :不用排队 不用考虑非活动连接状态
LBLC基于本地算法 基于DH算法 动态算法 考虑后台连接数
LBLCR: 基于本地的最少连接数 对整个负载均衡上的真正负载均衡

 

 


你可能感兴趣的:(算法,集群,高可用,LVS,keepalived,高性能)