集群基本介绍

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

相关推荐

  • Redis集群明细文档

    Redis目前版本是没有提供集群功能的,如果要实现多台Redis同时提供服务只能通过客户端自身去实现(Memchached也是客户端实现分布式)。目前根据文档已经看到Redis正在开发集群功能,其中一部分已经开发完成,但是具体什么时候可以用上,还不得而知。文档来源:http://redis.io/topics/cluster-spec 一、介绍   该文档是…

    Linux干货 2015-04-04
  • 文本处理工具之grep正则表达式

    grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,…

    Linux干货 2016-08-08
  • 计算机基础知识

    命令总结 echo :回显 echo $PATH:显示命令定义的路径变量 Init 3,5:关闭和打开图形界面 chvt切换虚拟终端(此命令只能本机切换) startx从新打开图形界面 powerr off关机 hostname 显示当前主机名 lsb_release -a显示操作系统版本 lscpu显示cpu信息 cat查看 who am显示当前用户身份 …

    Linux干货 2016-07-26
  • MySQL/MariaDB数据库基于SSL实现主从复制

    前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,由于MySQL/MariaDB的主从复制是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输。 部署配置 实验拓扑 实验环境 系统环境:CentOS6.6 数据库版本:mari…

    Linux干货 2015-06-21
  • 初识Linux基础

    一:计算机的组成及其基本功能 计算机主要由五大基础部件组成:控制器,运算器,存储器,输入设备,输出设备。 1、控制器:计算机的核心组件,协调各程序的运行,对计算机的各项资源进行控制分配; 2、运算器:计算机实现算术运算以及逻辑运算的部件; 3、存储器:计算机用来存放数据和程序的基本部件,存储器由若干存储单元组成,每个存储单元都有一个             …

    Linux干货 2018-03-04
  • 进程查看及管理

        在Linux系统中,触发任意一个事件时,系统都会将它定义为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程与用户相关的属性关系,给予这个PID一组有效的权限设置。 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。…

    Linux干货 2016-11-27