Linux Cluster

1、Linux集群类型、系统扩展方式及调度方法前端

1.概念node

Linux cluster,Linux集群系统是一种计算机系统, 它经过一组松散集成的计算机软件和/或硬件链接起来高度紧密地协做完成计算工做。一个集群(cluster)就是一组计算机,它们做为一个总体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群,用户是不会意识到集群系统底层的节点的。在他们看来,集群是一个系统,而非多个计算机系统。而且集群系统的管理员能够随意增长和删改集群系统的节点。
Linux 集群系统的优势在于:
(1)高扩展性,管理员可自行增长或删除集群系统中的节点。
(2)高可用性,当集群中某一个节点失效时,其负责的任务能够传递给其余节点,所以可以有效防止单点失效。
(3)高性能,负载均衡的集群系统可以同时接入更多的用户。
(4)高性价比,可使用廉价的硬件构造出高性能的系统。mysql

2. Linux Cluster类型

(1)LB:Load Balancing,负载均衡;
提供和节点个数成正比的负载能力,这种集群很适合提供大访问量的Web服务。负载均衡集群每每也具备必定的高可用性特色。Turbolinux Cluster Server、Linux Virtual Server都属于负载均衡集群。主流架构Nginx+Keepalived(利于动静分离)、LVS+Keepalived。linux

(2)HA:High Availiablity,高可用集群;nginx

  通常是指当集群中有某个节点失效的状况下,其上的任务会自动转移到其余正常的节点上。还指能够将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。计思想就是要最大限度地减小服务中断时间。这类集群中比较著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。算法

  高可用集群通常是经过系统的可靠性(reliability)和系统 的可维护性(maintainability)来衡量的。一般用平均无端障时间(MTTF)来衡量系统的可靠性,用平均维护 时间(MTTR)来衡量系统的可维护性。所以,一个高可用集群服务能够这样来定义:sql

  A=MTBF平均故障间隔时间/(MTBF平均故障间隔时间+MTTR平均恢复时间)apache

(0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, 99.999%, 99.9999%
通常高可用集群的标准有以下几种:
99%:表示 一年不在线时间不超过87小时
99.9% :表示一年不在线时间不超过8.7小时
99.99%: 表示一年不在线时间不超过1小时
99.999% :表示一年不在线时间不超过3-5分钟后端

(3)HP:High Performance,高性能集群;
HPCC高性能计算集群也称为DAS(数据分析超级计算机)服务器

(4)分布式系统集群:
分布式存储:分布式存储是一种数据存储技术,经过网络使用企业中的每台机器上的磁盘空间,在元数据服务器作索引,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。

分布式计算:分布式计算是一种计算方法,和集中式计算是相对的。随着计算技术的发展,有些应用须要很是巨大的计算能力才能完成,若是采用集中式计算,须要耗费至关长的时间来完成。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样能够节约总体计算时间,大大提升计算效率。

3. 系统扩展类型

常见的系统扩展类型有:

  • scale up(向上扩展):利用现有的硬件资源,经过增长硬件资源来知足日益增加的性能消耗的需求,可是此方式一般来讲能提高的性能有限。

  • scale out(向外扩展):经过硬件或软件的方式,将以往由单一服务器负责的业务需求分配到其余节点的服务器上进行处理,可是从用户的视角来看,这些服务器是单一的系统。而lvs集群的扩展方式正是属于scale out。

4. 负载均衡集群实现:

4.一、硬件设备实现负载均衡:

  • F5公司的 Big-IP产品: 性能好价格高
  • Citrix公司的 Netscaler产品
  • A10 公司的A10产品

4.二、软件实现负载均衡:

  • lvs:Linux Virtual Server虚拟服务,不处理服务,而是转到其余地方处理
  • nginx伪四层调度
  • haproxy
  • ats:apache traffic server 雅虎公司的开源项目
  • perlbal
  • pound

4.三、基于工做的协议层次划分:
(1)四层负载均衡:传输层调度器(通用):(DPORT)

  • lvs:基于udp、tcp调度
  • nginx:stream模块用来模拟四层调度
  • haproxy:mode tcp模块用来模拟四层调度

(2)七层负载均衡:应用层调度器(专用):(自定义的请求模型分类)
proxy server:

  • http:nginx(使用http的模块), httpd, haproxy(使用http的模块)
  • fastcgi:nginx, httpd, ...
  • mysql:ProxySQL, ...

4.四、集群的站点指标:

  • PV:Page View页面浏览量
  • UV:Unique Vistor单独浏览者

4.五、集群的会话保持问题:
为了对访问用户的追踪

  • (1) session sticky会话绑定
    Source IP-----基于原ip识别原用户
    Cookie----基于原Cookie识别原用户

  • (2) session replication;复制集群
    session cluster会话集群

  • (3) session server指定一台专门储存会话的服务器

五、lvs
  LVS:Linux virtual server
  VS:Virtual Server
  RS: Real Server

  l4:四层交换机,四层路由器。

    VS:根据请求报文的目标IP和目标协议及端口将其调度转发至某RealServer,根据调度算法来挑选RS。

  iptables/netfilter:

    iptables:用户控件的管理工具

    netfilter:内核空间上的框架

      流入:PREROUTING--->  INPUT

      流出:OUTPUT---> POSTROUTING;

      转发:PREOUTING---> FORWARD---> POSTROUTING

    DNAT:目标地址转换;PREROUTING;

    SNAT:源地址转换;POSTROUTING;

  lvs:ipvsadm/ipvs

    ipvsadm:用户空间的命令行工具,规则管理器,用于管理集群服务及相关的RealServer;

    ipvs:工做与内核空间的netfilter的INPUT钩子之上的框架。

六、讲解lvs

   

    CIP:全部的客户端都成为CIP

    VIP:接收客户端的请求称之为VIP。

    DIP:与后端主机通讯的称之为DIP。

    RIP:后端主机对应的ip称之为RIP。

LVS的工做原理:

1)当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
(2)PREROUTING链首先会接收到用户请求,判断目标IP肯定是本机IP,将数据包发往INPUT链
(3)IPVS是工做在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和本身已定义好的集群服务进行比对,若是用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
(4)POSTROUTING连接收数据包后发现目标IP地址恰好是本身的后端服务器,那么此时经过选路,将数据包最终发送给后端的服务器

LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。

    1. ipvs(ip virtual server):一段代码工做在内核空间,叫ipvs,是真正生效实现调度的代码。
    1. ipvsadm:另一段是工做在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

七、lvs集群类型中的术语

    

八、lvs集群的类型:

    lvs-nat:修改请求报文的目标IP;多目标IP的DNAT

    lvs-dr:操纵封装新的MAC地址;

    lvs-tun:IP隧道。在原请求IP报文以外新加一个IP首部

    lvs-fullnat:修改请求报文的源IP和目标IP。

  1)lvs-nat讲解:

  

  

多目标IP的DNAT,经过将请求报文中的目标地址和目标端口来实现调度(一般修改成某挑出的RS的RIP和PORT实现转发);
(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP;
(2)请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;
(3)支持端口映射,可修改请求报文的目标PORT;
(4)vs必须是Linux系统,rs能够是任意系统;

  扩展问题:全部的应答再次转向VS调度器,这样子形成VS的压力过大。能够优化的方向是RS远端服务器直接向用户客户端发送响应报文。

  2)lvs-dr:

   

Direct Routing,直接路由;
经过为请求报文从新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;
Director和各RS都得配置使用VIP;
一、 确保前段路由器将目标ip为VIP的请求报文发往Director,有如下三种方式:
    在前端网关作静态绑定。这种方法不适用。
    在RS上使用arptables;
    在RS上修改内核参数以限制arp通告及应答级别;修改两处
      arp_announce
      arp_ignore
二、 RS的RIP可使用私网地址,也可使用公网地址;RIP和DIP在同一个ip网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director; 三、 RS跟Director要在同一个物理网络; 四、 请求报文要经由Director,但响应报文不能经由Director,而是由RS直接发往Client; 五、 不支持端口映射

   3)lvs-tun

   

  

  

    转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原IP报文以外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP);
    一、 DIP VIP RIP 都应该是公网地址;
    二、 RS的网关不能,也不可能指向DIP;
    三、 请求报文要经由Director,但响应不能经由Director;
    四、 不支持端口映射
    五、 RS的OS得支持隧道功能;

      使用场景:广域网负载;

  4)lvs-fullnat

  

  经过同时修改请求报文的源IP地址和目标IP地址进行转发
      CIP< - - > DIP
      VIP< - - > RIP
  一、 VIP是公网地址,RIP和DIP是私网地址,且一般不在同一个IP网络;所以,RIP的网关通常不会指向DIP
  二、 RS收到的请求报文源地址是DIP,所以,只能响应给DIP;可是Director还要将其发往Client;
  三、 请求和响应报文都经由Director;Director的压力会比较大。
  四、 支持端口映射;
    注意:此类型默认不支持。

 总结:

  lvs-nat,lvs-fullnat:请求和响应报文都经由Director;

    lvs-nat:RIP的网关要指向DIP;

    lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通讯。

  lvs-dr,lvs-tun:请求报文要经由Director,但响应报文有RS直接发往Client;

    lvs-dr:经过封装新的MAC首部实现,经过MAC进行网络转发

    lvs-tun:经过在原IP报文以外封装新的IP首部实现转发,支持远距离通讯;

相关文章
相关标签/搜索