Linux Cluster

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Cluster相关的知识,希望对你有一定的参考价值。

Linux Cluster

===========================================================================

概述:




===========================================================================

Linux Cluster

 1.介绍

Cluster:

  • 定义:计算机集合,为解决某个特定问题组合起来形成的单个系统;

Linux Cluster类型:

  • LB:Load Balancing,负载均衡集群;

  • HA:High Availiablity,高可用集群;

      可用性=MTBF(平均无故障时间)/(MTBF+MTTR(平均修复时间))

      取值范围(0,1),无限接近于1最好:

      百分比衡量:90%, 95%, 99%, 99.5%,  99.9%, 99.99%, 99.999%

  • HP:High Performance,高性能集群;

系统扩展方式:

  • Scale UP:向上扩展(用更好的性能的主机来替代较差性能的主机)

  • Scale Out:向外扩展(当一个主机不足以承载请求时,就多加一台,也就是所谓的集群方式)


LB Cluster:负载均衡集群

 LB Cluster的实现:

原理:

  • 通过一个调度器,能够将一类请求分发至多个不同的后端主机来实现负载均衡;

硬件实现:

  • F5 Big-IP

  • Citrix Netscaler

  • A10 A10

件实现:

  • lvs:Linux Virtual Server

  • nginx

  • haproxy

  • ats:apache traffic server 

  • perlbal

  • pound

基于工作的协议层次划分(软件实现):

  • 传输层(通用):(根据DPORT分发)(为一个四层交换机)

      lvs:不依赖于端口转发

      nginx:(stream)

      haproxy:(mode tcp)

  • 应用层(专用):(根据自定义的请求模型分类完成分发)

      proxy sferver:

         http:nginx, httpd, haproxy(mode http), ...

         fastcgi:nginx, httpd, ...

         mysql:mysql-proxy, ...

站点指标:

  • PV:Page View(页面浏览量)

  • UV:Unique Vistor(唯一访客)

  • IP:

会话保持:

(1)session sticky(会话粘性)

     Source IP(源ip)

     Cookie

(2)session replication; 

     session cluster

(3)session server


附加概念:

  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

  • Cookie的工作原理

        由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了,这就是Cookie的工作原理。

  • Session

        是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

  • 如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

lvs:Linux Virtual Server

 1.介绍

概念:

  • VS: Virtual Server(虚拟服务器)

  • RS: Real Server(后端服务器,上游服务器,真实服务器指的都是同一个组件)

作者:章文嵩;alibaba --> didi

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

  • VS作用

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

工作模型

iptables/netfilter:(类似lvs的工作模型)

  • iptables:用户空间的管理工具;

  • netfilter:内核空间上的框架;

      流入:PREROUTING --> INPUT 

      流出:OUTPUT --> POSTROUTING

      转发:PREROUTING --> FORWARD --> POSTROUTING

  • DNAT:经过目标地址转换,进入后端主机; 在PREROUTING链;

lvs: ipvsadm/ipvs

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

  • ipvs:工作于内核空间的netfilter的INPUT钩子之上的框架;

lvs集群类型中的术语:

  • vs:Virtual Server, Director, Dispatcher, Balancer

  • rs:Real Server, upstream server, backend server

  • CIP:Client IP,

  • VIP: Virtual serve IP;

  • RIP: Real server IP;

  • DIP: Director IP;

通信过程:CIP <--> VIP == DIP <--> RIP 


附图:

 LVS内核模型

技术分享

 

工作过程 

   1.当客户端的请求到达负载均衡器的内核空间时,首先会到达PREROUTING链。

   2.当内核发现请求数据包的目的地址是本机时,将数据包送往INPUT链。

   3.LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间。

   4.如果数据包里面的目的地址及端口在规则里面,那么这条数据报文将被修改目的地址为事先定义好的后端服务器,并送往POSTROUTING链。

   5.最后经由POSTROUTING链发往后端服务器。

lvs集群的类型:

  • lvs-nat:修改请求报文的目标IP

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

  • lvs-tun:在原请求IP报文之外新加一个IP首部;

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

2.lvs各集群类型详解

lvs-nat:

原理:

  • 多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发;

特点:

  • RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP;

  • 请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;

  • 支持端口映射,可修改请求报文的目标PORT;

  • vs必须是Linux系统,rs可以是任意系统;

附图:

 工作原理图: 

技术分享


lvs-dr:

  Direct Routing,直接路由;

原理:

  • 通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;

特征:

  • 前提:Director和各RS都得配置使用VIP;

  • 确保前端路由器将目标IP为VIP的请求报文发往Director:

       (a)在前端网关做静态绑定

       (b)在RS上使用arptables;

       (c)在RS上修改内核参数以限制arp通告及应答级别;(建议使用)

            arp_announce:arp通告参数

            arp_ignore:arp应答参数

  • RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;

  • RS跟Director要在同一个物理网络;

  • 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;

  •  不支持端口映射;

附图:

 工作原理图1:

技术分享


工作原理图2:

技术分享


lvs-tun:

转发方式:

  • 不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;

特征:

  • DIP, VIP, RIP都应该是公网地址;

  • RS的网关不能,也不可能指向DIP;

  • 请求报文要经由Director,但响应不能经由Director;

  • 不支持端口映射;

  •  RS的OS得支持隧道功能;

注意:此类型默认不支持;

附图:

 工作原理图1:

技术分享


lvs-fullnat:

转发方式:

  • 通过同时修改请求报文的源IP地址和目标IP地址进行转发;

      CIP --> DIP ;VIP --> RIP 

特征:

  • VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;

  • RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;

  • 请求和响应报文都经由Director;

  • 支持端口映射;

附图:

 工作原理图1:

技术分享

ipvs scheduler:(ipvs调度算法)

根据其调度时是否考虑各RS当前的负载状态,可分为静态方法动态方法两种:

静态方法:仅根据算法本身进行调度;

  • RR:roundrobin,轮询;

  • WRR:Weighted RR,加权轮询;(权重越大其负载能力越大)

  • SH:Source Hashing(源地址哈希算法),实现session sticy,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定;

  • DH:Destination Hashing;目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS;(大多数为缓存代理服务器才会用到)


动态方法:主要根据每RS当前的负载状态及调度算法进行调度;

  Overhead(计算负载的标准)=

  • LC:least connections(最少连接)

        Overhead=activeconns*256+inactiveconns(非活动链接),

          计算值较小的被挑中

  • WLC:Weighted LC (加权最少连接)默认的调度算法

        Overhead=(activeconns*256+inactiveconns)/weight

  • SED:Shortest Expection Delay(最短期望延迟)

        Overhead=(activeconns+1)*256/weight

  • NQ:Never Queue

  • LBLC:Locality-Based LC,动态的DH算法;

  • LBLCR:LBLC with Replication,带复制功能的LBLC;

























































以上是关于Linux Cluster的主要内容,如果未能解决你的问题,请参考以下文章

Linux集群Cluster简介面试必看

K8S 重要概念 及 部署K8S集群

K8S 重要概念 及 部署K8S集群

LVS调度

Command to destroy cluster

Kubernetes核心模块