集群基本介绍

Linux Cluster:

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

Linux Cluster类型:

  • LB:Load Balancing,负载均衡;主机来平均访问的压力。由负载均衡器和多个后端主机分担主。

  • HA:High Availiablity,高可用,靠冗余节点实现;提高服务的可用性,有多个负载均衡器(和备份)来接收来自用户的请求

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

      (0,1):90%, 95%, 99%, 99.5%,  99.9%, 99.99%, 99.999%
  • HP:High Performance,高性能;提升系统性能的!分布式系统解决方案的初期。解决计算难题。

      www.top500.org

    系统扩展方式:

      Scale UP:向上扩展,指的是计算机性能跟不上了以后就换个性能更好的
      Scale Out:向外扩展
          Cluster

负载均衡集群

负载均衡器(调度器)用来接收来自用户的请求并按调度的算法发送到后端主机分担处理的计算机。这些主机的集合就叫做负载均衡集群

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,每个独立客户端对服务器的访问。每个访问者就是一个UV(客户端就是浏览器进程)

  • IP:独立的地址访问次数

注意:Cookie:用来追踪用户身份。服务器端用seession来保存客户端的各种活动

会话保持:
(1) session sticky(会话粘性)访问绑定
    Source IP基于源ip绑定
    Cookie 基于cookie绑定

(2) session replication; 复制集群
    session cluster:把后边的主机的session做同步

(3) session server

lvs:Linux Virtual Server 虚拟服务器

VS: Virtual Server(负载均衡器就是vs)
RS: Real Server(后端服务器)

作者:章文嵩;alibaba –> didi

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

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

iptables/netfilter:

iptables:用户空间的管理工具;
netfilter:内核空间上的框架;

        流入:PREROUTING --> INPUT 
        流出:OUTPUT --> POSTROUTING
        转发:PREROUTING --> FORWARD --> POSTROUTING

DNAT:目标地址转换; PREROUTING;

和iptables类似 lvs: ipvsadm/ipvs

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

ipvs:工作于内核空间的netfilter的INPUT钩子之上的框架;
集群基本介绍

lvs集群类型中的术语:

vs:Virtual Server, Director, Dispatcher, Balancer
rs:Real Server, upstream server, backend server3

CIP:Client IP, VIP: Virtual serve IP, RIP: Real server IP, DIP: Director IP

通信方式:
集群基本介绍
CIP <–> VIP == DIP <–> RIP

lvs集群的类型:

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

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

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

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

1.lvs-nat:

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

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

2.lvs-dr:

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

Director和各RS都得配置使用VIP;

Director将接受的请求进行重新封装,添加MAC首部发向交换机,让交换机发往后端主机。

RS的vip配置在lo上,接收到路由转发过来的请求后,拆解报文送往lo上的vip后再处理。

发送信息也要先经过lo再通过外部网卡转发发出去,这样就保证了源ip为vip,目标ipione为Cip了!

(1) 确保前端路由器将目标IP为VIP的请求报文发往Director:
    (a) 在前端网关做静态绑定;
    (b) 在RS上使用arptables;
    (c) 在RS上修改内核参数以限制arp通告及应答级别 
        arp_announce
        arp_ignore
(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;
(3) RS跟Director要在同一个物理网络;
(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;
(5) 不支持端口映射;

3.lvs-tun:

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

(1) DIP, VIP, RIP都应该是公网地址;
(2) RS的网关不能,也不可能指向DIP;
(3) 请求报文要经由Director,但响应不能经由Director;
(4) 不支持端口映射;
(5) RS的OS得支持隧道功能;
(6)可以跨越互联网进行转发。

4.lvs-fullnat:

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

        CIP --> DIP 
        VIP --> RIP 

(1) VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;
(2) RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;
(3) 请求和响应报文都经由Director;
(4) 支持端口映射;

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

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/56328

(0)
qzxqzx
上一篇 2016-10-30 21:32
下一篇 2016-10-30 22:31

相关推荐

  • Liunx课前准备

            经过与家人的沟通终于来到了北京,开始了期待已久的Linux学习之路。    今天是讲课前第一天,和上学时代一样,各位同学做了自我介绍,仿佛又置身于10年前的课堂,同学们有序的介绍着自己,今天我们坐到了一起就为了同一个梦想。之前还有很大的顾虑:学不会怎么办?出来找不到工作怎么办?……但听了大家的介绍后发现很多同学与我一样,所有的顾虑瞬间消失,希…

    2018-03-26
  • ansible——自动化运维工具

    Ansible SSH-based configuration management, deployment, and task execution system 运维工具的分类: agent:基于专用的agent程序完成管理功能,puppet, func, zabbix, … agentless:基于ssh服务完成管理,ansible, fab…

    Linux干货 2016-11-06
  • redis主/从配置及基于sentinel的故障转移

    一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统不…

    Linux干货 2014-10-15
  • 第十一周:OPENSSL和DNS

    详见我的51cto博客:http://afterdawn.blog.51cto.com/

    Linux干货 2016-12-09
  • N25-第四周作业

    第四周 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@zf ~]# cp -r /etc/skel/ /home/tuser1 [root@zf ~]# chmod -R&nbs…

    Linux干货 2016-12-21
  • bash的基础特性[更新中]

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-03-17