高可用集群技术理论基础知识

目录

1、引言

2、高可用架构框架

3、资源的约束与隔离

4、高可用模型

5、配置高可用架构的前提

1、引言

一言以蔽之,高可用集群技术是为了解决业务因服务器宕机而中断业务的一种技术,它能保障业务7*24*365不间断。

在linux开源的世界里,常见的开源解决方案有如下:

keepalived(vrrp+script)

heartbeat

corosync+pacemaker

要想用好这些开源软件,不得不先来了解一下一个高可用集群中的一些基础知识。

2、高可用架构框架

高可用架构一般可分为以下几个层次:

1、Messaging Layer(ML):基础信息事务层,也叫心跳层,主要功能是心跳信息传递,集群事务信息的传递,工作在此层次上的软件有:heartbeat v1,v2,v3、corosync(openais)、cman(openais)

2、Cluster Resource Manager(CRM):集群资源管理,主要功能将无HA能力的服务、资源能够利用messaging layer层上的功能实现高可用功能,起到承上启下的作用。

工作在此层次上的软件有:

heartbeat v1自带资源管理器haresources,此资源管理器的配置接口是一个叫haresources的配置文件

heartbeat v2自带资源管理器crm,此资源管理器的配置需要在各节点上运行一个mgmtd(监控端口5560/tcp)的进程,配置文件为cib.xml(cluster information base),配置接口可以是图形化的程序(hb_gui)或命令接口(crmsh);

heartbeat v3版时项目进行了拆分,分成了三个子项目:heartbeat(提供基础事务层功能),pacemaker(提供资源管理器),cluster-glue(集群资源粘合器)。pacemaker的配置接口有:CLI客户端程序为crm和pcs,GUI接口有hawk,LCMC,pacemaker-mgmt

cman中的资源管理器是rgmanager(resource group manager),其配置接口有命令行接口:clustat,cman_tool;图形化接口:Conga

3、LRM:Local Resource Manager(本地资源管理器)

是CRM的子模块,不具备完整层次上的意义,因CRM不会直接去调用一个资源的启动、关闭等,它只是去负责去调度RA(Resource Agent)上的脚本资源,

4、Resource Agent(RA):资源代理

4.1、RA有以下的类别:

heartbeat自带的,v1版本的,传统的资源代理,在/etc/ha.d/haresources.d/目录下的脚本

LSB风格的脚本文件,通常在/etc/rc.d/init.d/目录下

OCF(Open Cluster Framwork,开放集群框架)专用于集群环境下的脚本

STONITH:是一种隔离机制,为防止资源被争用而有意设计的控制机制,实现控制硬件实现“资源隔离”的脚本,以避免集群分裂

4.2、Resource的类型:

primitive(native):表示主资源

group:表示组资源,组资源里包含多个主资源

clone:表示克隆资源

master/slave:表示主从资源

3、资源的约束与隔离

在高可用环境下,默认时高可用集群会把资源平均的运行在各个节点上,显然这样在实际的高可用方案中是不可取的,所以我们要定义这些高可用的资源,让这些高可用的资源按照一定的规则组织在一起并运行在高可用的集群的某一个节点上,这样集群才能正常的工作,能定义这样高可用集群的方法有两种,一种是把资源定义成一个group资源,另一种方法是定义这些资源间的约束(constraint)关系,约束有以下几种:

location:位置约束,表示一个资源对一个节点的倾向性,以一个分数(score)的表示,分数为“inf”表示对一个资源对一个节点有正无穷的倾向性,“-inf”表示一个资源对一个节点有负无穷的倾向性,需要注意的是“inf”+"-inf"=“-inf”

order:顺序约束,表示资源启动及关闭的顺序关系,启动时的顺序与关闭时的顺序刚好相反

colocation:排列约束,表示各个资源在一起的倾向性有多大,也是可以用score来表示

在集群分裂(split-brain)时需要使用到资源隔离,有两种隔离级别:

a、节点级别的隔离,通过断开一个节点的电源或者重新启动节点的方式,这种叫STONITH

b、资源级别的隔离,类似通过向交换机发出隔离信号,特意让数据无法通过此接口的方式,这就叫资源隔离级别的隔离,专业术语叫fencing。

当集群分裂,即分裂后的一个集群的法定票数小于总票数一半时采取对资源的控制策略,有以下几种策略:

a、stopped,关闭、释放资源

b、ignore,忽略分裂带来的影响,在两个节点的高可用方案中一般会配置成此种策略

c、freeze,冻结

d、suicide,自杀

4、高可用模型

HA集群常用的工作模型:

1、A/P:两节点,active/passive,工作于主备模型

2、A/A:两节点,active/active,工作于主主模型

3、N-M:N>M,N个节点,M个服务,假设每个节点运行一个服务,活动节点数为N,备用节点数为N-M

5、配置高可用架构的前提

a、各节点时间保持同步(nfp服务器)

b、各节点必须使用名称互相通信,使用/etc/hosts来解析,集群中所使用的主机名与“uname -n”显示相同

c、偶数节点需要ping node设备,或可忽略没有足够法定票数时的集群报错

d、各节点间互相无密钥进行通信,这并非必须的

时间: 2024-12-25 22:07:02

高可用集群技术理论基础知识的相关文章

高可用集群技术之corosync应用详解(一)

Corosync概述: Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等.它是一个新兴的软件,2008年推出,但其实它并不是一个真正意义上的新软件,在2002年的时候有一个项目Openais , 它由于过大,分裂为两个子项目,其中可以实现HA心跳信息传输的功能就是Corosync ,它的代码60%左右来源于Openais. Corosync可以提供一个完整的HA功能,但是要实现更多,更复杂的功能,那就需要使用Openais了.Cor

高可用集群技术之heartbeat+NFS实现web服务高可用(文本方式配置接口--gui图形配置)

一.高可用集群基本概念   什么是高可用技术呢?在生产环境中我既要保证服务不间断的服务又要保证服务器稳定不down机,但是异常还是会发生,比如说:服务器硬件损坏...导致服务器down机,我该如何保证服务器down机后继续提供服务呢?这时我就应该请出高可用技术来帮忙了,当我们的服务器发生故障后不能继续时,高可用集群技术解决将业务及服务自动转移至其他主机服务器上继续服务,保证服务架构不间断运行. 高可用集群的架构层次: 后端主机层: 这一层主要是正在运行在物理主机上的服务. 2.Message l

keepalived高可用集群技术介绍及实战演练

一.Keepalived是什么 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器. 二.Keepalived的特性 配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能 稳定性强:keepalived是一个类似于

高可用集群技术之corosync案例应用及pcs使用详解(二)

案例概述: 案例(一):使用ansible全自动化配置corosync集群环境 在生产环境中,经常遇到需要配置集群环境或相同配置的服务器,如果手工一台一台的去调试,这样会增加我们再运维过程中的工作量及错误的发生,我们应怎样去优化及减少错误的发生?下面我们通过一个案例实现自动化部署corosync环境: 准备工作: (1)将已经配置好的corosync配置文件做好模板存放 # mkdir -pv ansible/corosync/{conf,packages} # cp -p /etc/coros

高可用集群技术之keepalived实现lvs高可用并负载均衡web服务

Keepalived概述: Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器. keepalived实现lvs高可用并负载均衡web服务: 准备工作: 2台keepalived节点为: node1.samlee.com

高可用集群技术之RHCS应用详解(一)

前提:1)本配置共有3个测试节点,分别node1.samlee.com.node2.samlee.com和node3.samlee.com,相的IP地址分别为172.16.100.6.172.16.100.7和172.16.100.8:系统为 CentOS 6.5 X86_64bit: 2)node4.samlee.com 172.16.100.9 作为共享存储使用 3)director.samlee.com 172.16.100.3 作为RHCS管理平台使用 4)集群服务为apache的htt

线上测试高可用集群部署文档【我的技术我做主】

线上测试高可用集群部署文档 目录: 目录:1 项目需求:2 实现方式:2 拓扑图:3 系统及软件版本:3 安装步骤:4 IP分配:4 LVS和keepalived的安装和配置:4 LVS主配置:4 LVS2备 配置:7 web服务器配置9 Mysql-MHA高可用:13 Mysql主配置:13 manager管理端操作:15 VIP切换:16 测试:26 下面是centos5.6的系统环境,如果是centos6版本,只需改动少许地方即可,步骤一致 . ---- by 金戈铁马行飞燕 项目需求:

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们可以一起探讨,共同进步.也保证今后只要一有空就更新博文,推出更多的干货. 我的学生经常对我说:"张老师,每次我遇到报错,有时还是会百度,但是最烦的是不知道百度哪篇帖子说的是正确的".其实这些呢,都是因为自己还没有对MySQL数据库核心知识的不熟悉,和对技术掌握的不牢固.平时下得功夫还是不到

Redis高可用集群

Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术. Redis 3.0 之后便支持集群.Redis 集群中内置了 16384 个哈希槽.Redis 会根据节点数量大致均等的将哈希槽映射到不同