LVS 之 集群概念介绍

1  概述

备注:本文主要结合自己的学习笔记,以及参考博客集群(cluster)原理(转)整理而成。

集群(cluster)就是一组计算机,他们作为整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意的增加和删除集群系统的节点。

2Linux Cluster类型

a)高可用性(High Availability)集群

HA集群致力于提供高度可靠的服务,避免SPOF单点失败(single Point Of failure)的问题。就是利用集群系统的容错性对外提供7*24小时不间断的服务,如高可用的文件服务器、数据库服务等关键应用。

b)负载均衡(Load Balancing)集群:

使任务可以在集群中尽可能平均的分摊不同计算机处理,充分利用集群的处理能力,提高对任务的处理效率。在实际应用中这几种集群类型可能混合使用,以提供更高稳定的服务,如在一个使用网络流量负载均衡的集群中,就会包含高可用的网络文件系统、高可用的网络服务。

其中负载均衡服务器的高可用性是指为了屏蔽负载均衡服务器失效,需要建立一个备份机。主服务器和备份机上都运行High Availability监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器IP并继续提供服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,他就释放IP地址,这样的主管理器就开开始再次进行集群管理的工作了。为在主服务器失效的情况下系统能正常工作,我们在主、备份机之间实现负载集群系统配置信息的同步和备份,保持两者系统的基本一致。

.LB Cluster分类

四层:lvs,nginx(stream),haproxy(modetcp)

七层:基于http,如nginx(http),haproxy(mode http), httpd(apache)...

c)性能计算(High Perfervidmance  Computing)集群

HPC集群,也称为计算集群。在这种集群运行的是专门开发的并行应用程序,它可以把一个问题的数据分不到多台计算机上,利用这些计算机的共同资源来完成任务,从而可以解决单机不能胜任的工作(如果问题规模太大,单机计算速度太慢)。

这类集群致力于提供了单个计算机所不能提供的强大的计算能力。如天气预报、石油勘探与油藏模拟、分子模拟、生物计算等。

3  集群的优点

a)高扩展性

b)高可用性HA:集群中的一个节点失效,它的任务可传递给其他节点。可以防止单点失效

c)高性能:负载平衡集群允许系统同时接入更多的用户

d)高性能价比:可以采用廉价的复合工业标准的硬件来构造高性能的系统

4 集群分类

4.1基于软硬件分类

.硬件:

F5 Big-IP

Citrix Netscaler

A10 A10

.软件:

lvs:LinuxVirtual Server,不能识别应用层数据

nginx:支持四层调度,也可以支持7层调度

haproxy:支持四层调度,也支持7层调度

应用层的调度器,需要对发过来的请求进行解开数据包,然后再封装。有一个问题是,socket一台机器上只能是65536个,并发请求太多,主机将不能正常提供请求。解决方案是把后台服务拆分开,对服务进行分类。把不同的服务拆开,独立提供服务

ats:apachetraffic server,yahoo捐助

perlbal:Perl编写

pound

4.2基于工作的协议层次划分:

.传输层(通用):DPORT

LVS:

nginx:stream机制

haproxy:mode tcp机制

实际工作中,生产环境用nginx和haproxy进行调度

.应用层(专用):针对特定协议,自定义的请求模型分类

proxy server:

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

fastcgi:nginx,httpd, ...

mysql:mysql-proxy,...

5  集群相关概念介绍

5.1  HA概念介绍

计算机系统的可用性(availability)是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上通常采用平均无故障时间(MTBF:MeanTime Between Failure)来度量系统的可靠性,用平均恢复时间(MTTR:MeanTime To Restoration(repair))来度量系统的可维护性。于是可用性定义为:A=MTTF/(MTBF+MTTR)*100%。可用性百分比范围是(0,1),如99%,99.5%, 99.9%, 99.99%, 99.999%, 99.9999%。其中99.999%表示一年内允许5分钟的故障时间

系统故障:

硬件故障:设计缺陷、wear out(损耗)、自然灾害……

软件故障:设计缺陷

5.1.1  HA的容错备援运作过程

自动侦测(Auto-Detect)阶段 由主机上的软件通过冗余侦测线,经由复杂的侦听程序。逻辑判断,互相侦测对方运行情况,所检查的项目有:主机硬件(CPU和周边)、主机网络、主机操作系统、数据引擎以及其他应用程序、主机与磁盘阵列连线。为确保侦测的正确性,而防止错我的判断,可设定安全侦测时间、包括侦测时间间隔、侦测次数以调整安全系数,并且由主机的冗余通信连线,将所汇集的讯息记录下来,以供维护参考。

自动切换(Auto-Switch)阶段 某一主机如果确认对方故障,则正常主机继续进行原来的任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序以及服务。

自动恢复(Auto-Recovery)阶段  在正常主机代替故障机工作后,故障机可离线进行修复工作。在故障主机修复后,通过冗余通讯线与原来主机连线,自动切换回修复完成的主机上。整个回复过程完成有EDI-HA自动完成,亦可依靠预先配置,选择回复动作为半自动或不回复。

5.1.2 HA三种工作方式

a) 主从方式(非对称方式)

工作原理:主机工作,备机处于监控状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。

b) 双机双工方式(互备互援)

工作原理:两台主机同时运行各自的服务工作且互相检测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统中。

c) 集群工作方式(多服务器互备方式)

工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。

5.1.4  HA集群实现方案

keepalived: vrrp协议,和lvs配合使用。keepalive实现高可用,lvs实现调度。

ais:应用接口规范

heartbeat

cman+rgmanager(RHCS)

coresync_pacemaker

5.2会话保持:负载均衡(LB)

(1) session sticky:同一用户调度固定服务器

Source IP:LVS sh算法(对某一特定服务而言)

注意,基于源地址调度不太靠谱,因为可能IP经过NAT转换,该源IP后端可能有很多机器发起请求,如果将这些请求都集中调度到

同一台机器,可能会会后端该服务器造成较大的负担

Cookie:服务器分发给客户端的

cookie用来表示客户端的身份的。早期用重cookie,包含了所有的信息。

后来用轻cookie,主要有session的id.session是在服务器端的。

根据cookie的信息来决定分发给哪台机器上。cookie属于应用层的数据。因此要使用应用层的调度器,如Ngnix或haproxy

(2) session replication:每台服务器拥有全部session,如session multicastcluster

(3) session server:专门的session服务器,如Memcached,Redis

6高可用的实现

有如下6种方法实现高可用

1)共享存储(shared storage)

NAS:网络附属存储(NetworkAttached Storage),文件共享服务器

SAN:存储区域网络,(Storage Area Network),块级别的共享

2)网络分区(Networkpartition)

有以下两个方式:

a)法定人数(quorum):

with quorum:> total/2

without quorum: <= total/2

b)隔离设备:fence,有两种手段

当监测到有设备异常是,可以通过以下两个方法隔离异常设备

断电重启:STONITH = ShootingThe Other Node In The Head,

隔离资源:断开存储的连接

3)双节点集群(TWO nodes Cluster)

4)Failover:故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作

5)Failback:故障移回,即某资源的主节点故障后重新修改上线后,将之前已转移至其它节点的资源重新切回的过程

6)HACluster实现方案:

有以下两个方案:

vrrp协议的实现:轻量级解决方案,如keepalived

ais:重量级的解决方案,应用接口规范完备HA集群,逻辑比较复杂。有三个解决方案

RHCS:Red Hat Cluster Suite红帽集群套件,完整解决方案

heartbeat

corosync

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • Linux服务器集群系统各概念辨析 计算机集群 WEB的负载均衡、集群、高可用解决方案 计算机集群 计算机集群简称...
    Zhang21阅读 3,250评论 0 18
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,494评论 18 139
  • 本文索引 1 概述 2 HAProxy功能 3 HAProxy组成 4 相关配置 4.1 global配置 4.2...
    ghbsunny阅读 4,898评论 0 2
  • 画花朵其实挺练技巧的,平涂、渐变、叠色都会练习到。 临摹一朵玫瑰花。(自飞乐鸟工作室的《彩色铅笔 从新手到高手》)...
    若辰读书阅读 469评论 1 3
  • toString 方法的主要用途是返回对象的字符串形式,除此之外,还有一个重要的作用,就是判断一个值的类型。 上面...
    某尤阅读 224评论 0 0