ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5-1企业级高可用集群介绍以及开源软件应用

2019-04-29 21:55:39  阅读:209  来源: 互联网

标签:软件应用 优先级 主机 企业级 网卡 开源 客户端 节点 路由器


HA Cluster:
集群类型:LB(lvs/nginx(http/upstream,stream/upstream))、HA、HP
SPoF:Single Point of Failure
系统可用性的公式:A=MTBF/(MTBF+MTTR)---失效转移(fail over)
(0,1),95%
几个9(指标):99%,...,99.999%
系统故障:
硬件故障:设计缺陷、wear out、自然灾害、...
软件故障:设计缺陷、
提升系统高用性的解决方案之降低MTTR;
手段:冗余(redundant)
active/passive(主备),active/active(双主)
active-->HEARTBEAT-->passive
active<-->HEARTBEAT<-->active
高可用的是“服务”:
HA nginx service:
vip/nginx process[/shared storage]
资源:组成一个高可用服务的"组件";
(1)passive node的数量?
(2)资源切换?

现在的开源冗余解决方案:keepalived,heartbeat(基本被弃用),corosync(heartbeat代替者,并且是通用的,专业的,以后接触不会太多)
怎么实现冗余呢?在两个节点上都装上一个软件,并基于这个软件通信(传递心跳信息,并基于心跳信息判断是否故障,触发操作,完成资源转移),又叫心跳信息传递层(heartbeat layer),集群基础架构层(infrastructure layer),也叫消息传递层(messaging layer)
向上一层是资源管理层:管理资源(资源有很多种ip、应用等)又叫集群资源管理器(cluster resource manager,crm)做决策的
向上一层lrm本地资源管理器(local resource manager),用来执行
一个一个的具体实现叫做RA(resource agent)(脚本或者unitfile)
一共是4个层次

一个集群一般最少有3个节点,并且总数是奇数,一般而言
如果A不能连接B,A不能连接C,BC也不能连接A,这就表示发生了网络分区(network partition)(彼此之间访问不到了,网络之间发生分隔了),BC会重新选举(少数服从多数的原则),并且向A补刀,例如:通过交换机发信号,让A的电源闪一下,让A重启
这种发生了网络分区的方式叫隔离,这种隔离是为了避免双方争论资源
隔离有两种方式:1、stonith:一枪打在其他节点头上,需要借助其他设备来实现2、fence:让故障节点不再访问关键资源
一会A主机抢过来资源,一会B主机抢过来资源,这样并不会造成致命故障,但有时会造成致命故障,例如:A主机允许用户存放数据,但是A主机挂了,用户就访问不到数据了,所以需要共享存储,并且谁是活动节点谁挂载使用。那么A主机挂了,B主机也认为A主机挂了,B主机会把IP地址拿过了,进程启动起来,并别把共享存储挂载上,然后才能访问数据,此时A主机仍然挂载在共享存储上,如果没有卸载,共享存储中的硬盘如果是能够多线接入的设备,如果是一个块设备的话,会有严重问题,每一个块设备的数据都是被节点载入内存中访问操作的,文件系统元数据崩溃,意味着整个文件系统全部崩溃
一般块设备都是san(网络区域存储)、scsi通过光纤交换机接入进来的,可以通过专业设备(光纤交换机)屏蔽接入A节点的接口

判断节点故障的机制叫做quorum机制(quorum:法定人数)with quorum > total/2 without quorum <= total/2
选举领导有很多协议:(流言协议,听说谁当领导了,就全部同意了),还有很多可以查看两篇论文paxos(太麻烦了,作者用了十几年),raft(比较简单)

那么判定节点故障后,资源转移到哪个节点呢?一般是在节点上设置优先级,但是这样太死板了,而且会浪费资源(服务器上运行的服务应该不止一个),有一个节点是随时备用的状态,这种模型叫NM模型(N个节点M个服务),这种模型定义节点的优先级不太现实(每个资源都运行在某一个优先级高的节点,其他节点都闲置备用,浪费),所以要定义资源的倾向性
每个节点上都运行一个服务,每个服务(资源)都倾向于运行在的节点,这种模型叫N/N模型

这里注意:corosync可以高可用几乎所有服务,上边讲的两种模型就是corosync可以做到的,而keepalived主要是用来高可用ipvs的,并且添加了ipvs后端服务器的健康状态检测功能

把问题推向客户端一侧是不明智的(客户端可以通过两个路由连接互联网,其中一个路由挂了,不能让客户端自己修改网关地址)vrrp:virtual routing redundant protocol虚拟路由冗余协议,而是把两个路由器的网卡设置成一个群组,使用同一个ip地址,并且网卡也有优先级之分,把IP地址优先配置到网卡上,如果优先级相同,则选择mac地址其中一个路由挂了,客户端(网关是相同的)还可以通过另一个路由连接互联网

keepalived就是利用软件实现VRRP协议
虚拟路由器:每个路由器可能不止有一块网卡,那么可以把每个路由器的1号2号3号网卡组成3个集群(虚拟路由器),用VRID来标识
在高可用集群中,免费ARP是必须的一步:客户端缓存的是一个路由器的mac,当缓存还没失效时,ip地址转移到另一台路由器,则这台路由器必须发送免费arp,好让客户端知道ip地址已经转移,

如果有一台新的路由器(优先级特别高)装上了keepalive软件上线了,这种情况就不安全了,有可能泄露信息的。所以需要认证(VRRP有三种认证:无认证、简单字符认证(不超过8个字符)、MD5认证(keepalive不支持))

15:25min-30min没好好听

标签:软件应用,优先级,主机,企业级,网卡,开源,客户端,节点,路由器
来源: https://blog.51cto.com/13852573/2386887

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有