0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux之HA高可用集群知识,学到就是赚到

马哥Linux运维 来源:互联网 作者:佚名 2017-12-23 07:10 次阅读

HA(High Availability)高可用集群,其特点为根据实际需求为前端Diretor,后端RS-server,数据库服务器,共享存储等集群节点做一个从备份服务器或者多个服务器互相备份,一旦主服务器挂掉,备份服务器能立马检测到并取代主服务器上的资源继续运行服务,从而最大限度避免了因服务器宕机造成的服务中止。


主节点(active/primary)备节点(passive/standby)

主调度器(Director)一般为集群中的关键节点,所以一般都有备份节点的存在;而后端RS-server可以根据实际可靠需求加备份节点,而存储服务器,如Mysql-Server,也作为集群的关键节点,一般都配有主从服务器。

HA集群着重服务的可靠性和稳定性两个方面

可用性=服务在线时间/(服务在线时间+故障处理时间)

可用性由 99%,99.9%,99.99%,99.999%不断提升,每多一个9,服务可用性提高十倍。在某些应用中服务可用性都要达到五个9的级别如:金融交易系统.....

HA Resource(高可用集群资源):一旦节点故障这些资源需要转移到其他备份节点上,包括VIP,服务,隔离设备,文件系统。每个RS上都运行有服务资源,当有多个RS节点时,一旦某个节点发生故障要立马进行资源转移到其他节点,让其他节点处理未处理完的请求,并且要防止Director将前端请求继续此节点,但有如此多的节点存在,故障发生时到底往哪个节点转移了?且要是这个故障节点又恢复了如何处理?这时就要定义资源的黏性,资源的约束等。

资源的粘性:资源更倾向运行在哪个节点上,即资源与节点的倾向性

如:定义web服务在A服务器上的资源粘性为120,在B服务器上的资源粘性为100,一旦A发生故障又恢复正常后web服务又会从B服务器上转移到A服务器

资源的黏性:资源是否倾向运行在当前节点,Score>0(倾向)Scoro<0(不倾向,即一有其他可运行此服务的节点,资源就立马转移到其他节点)

资源的约束:定义资源与资源的倾向性

  1. colocation(排列约束):定义不同资源能否运行在同一个节点上,Score>0(可以),Score<0(不可以) 

    -inf(负无穷。。决不能运行在同一节点)

    inf(正无穷。。必须运行在同一个节点)

  2. location(位置约束):每个节点都可以给某资源一个Score,Score >0(资源倾向运行在此节点)

  3. Score <0(资源不倾向运行在此节点)

一般资源黏性+位置约束 哪个大,资源更倾向运行在那个节点

Order(顺序约束):定义资源启动关闭时的顺序,因为不同资源可能有依赖关系如:VIP与IPVS规则,VIP先启动IPVS规则后启动

资源分类

  1. Primitive 一个资源单独只运行在一个节点上(主资源)。

  2. clone 每个节点上都运行此资源。

  3. group 将多个资源划分为一个组,同组资源同进退,一起在节点上进行转移。

  4. master/slave 主/从,一个资源只能运行在两个节点上,且一个为主一个为从。

备份节点如何知道主节点故障?

heartbeat(心跳信息):每个节点都要随时与备份节点上进行通信,目的为检测对方是否在线

但当存在三个及三个以上节点时且这些节点也要互相传输心跳信息(如 运行有同种服务的RS之间互为备份节点,),从而判断自己是否故障,是否为合法节点,如何判断?

将所有节点定义在一个组播内让其互相ping, 比如有A、B、C、D、E 五个RS节点运行有Web服务,某时刻A、B、C三个节点能互相ping通,而D、E两个节点可以互相ping 通,则可以定义一个Quorum(投票)机制,为每个节点定义为一票,则五个节点共五票,且定义只有获得一半以上票数才为合法节点,所以此时A、B、C节点共三票,而D,E节点共两票,可以认为D,E节点未非法节点(即D,E节点出了故障)

或者A节点ping不通其他节点获得一票,而B、C、D、E四个节点可以互相ping通获得四票,可以认为A节点为非法节点

而对于多节点集群来说,为了投票机制的实施,节点数最好为奇数,获得票数超过一半则认为合法

且可以定义不同节点的拥有票数不同,如A节点性能好有两票投票权,B节点性能一般拥有一票投票权,此时就不用节点奇数,只要总票数为奇数便可以产生决策。

一旦节点被认为为非法节点应对其采取什么措施?

  1. Freeze(冻结) 此非法只处理已经连接的请求,不再接受新的请求,处理完请求后再进行资源转移

  2. stop 非法节点直接停止运行服务,进行资源转移,这种措施最常用

  3. ignore 直接忽略 继续正常运行服务

什么时候会用到ignore?

只有两个互为备份的节点时

当只有两个节点互为备份时,一旦主节点ping不通备份节点,这时因为只有两个节点无法采取投票机制(一旦采取投票机制则两个节点都只获得一票,都认为自己挂掉了,那么不但主节点会停止服务,原本应该替代主节点的备份节点也因为认为自己非法而无法对主节点进行取代),主节点只能继续运行服务,直到被Stonish设备或fence设备隔离进行资源转移,这时备份节点也会取代主节点。

为了提供一个一个MySQL服务要具有哪些资源?

  1. VIP 专门提供服务

  2. FIP(float IP)流动的IP,可以再节点之间转移

  3. Mysql服务

  4. 文件系统(要进行挂载)

一旦一个节点挂掉,向哪个节点转移?

定义个节点的资源约束score,哪个score大,更倾向于向哪个节点转移

脑裂:假设一个集群有4个RS_Server A、B、C、D

其中A正在往一个文件中写入数据,并且由于A服务器的CPU繁忙或错误添加了一条Iptables规则隔离了heartbeat传输等原因,未对其备份节点发出自己的心跳信息,这时CRM(cluster resource manager 专门用来收集集群资源或服务信息的集群资源管理器)发现检测不到A的心跳信息,认为A服务器挂掉了,便把A上的所有资源转移到了其他节点比如B上,这是B节点继续完成A节点的任务(向文件中写入数据),就会造成A和B同时往一个文件中写入,便会造成文件系统的崩溃及文件错乱。

如何避免脑裂?

在进行资源转移之前先将原来的节点进行资源隔离:

  1. 节点隔离

    Stonish设备 如 直接断电爆头,一发现某节点无法传输heartbeat直接给其断电

  2. 资源级别隔离

    FC-SAN (光纤交换机)可以实现在存储资源隔离故障节点的访问

如何检测一个节点是否故障?

  1. 加仲裁磁盘 主节点往一个共享磁盘中不断写入数据,一旦备节点发现自己可以访问共享磁盘但未发现主节点写入数据,则可以认为主节点挂掉,进行隔离

  2. ping网关 只要能ping通网关 说明本节点正常,一旦ping不同则可以认为自己发生故障进行隔离

  3. watchdog看门狗,协调同一个节点上不同进程每隔一段时间往watchdog中写入数据,一旦写入中断watchdog会尝试重启此进程,如果重启不了,则此节点故障,从此集群中去掉

Massaging Layer(负责以UDP协议在主节点与备节点间以组播模式传输heartbeat,资源黏性,资源约束,等信息),Massaging Layer 也是一个服务(UDP/694),且要让其开机自启动。

Cluster Resource Manager(集群的资源管理器):专门处理统计收集群上每个资源的状态如:资源黏性资源约束,节点是否健康;并又CRM的子件PE计算出资源现在应该运行在哪个节点上,再由CRM的子件TE指挥每个节点的LRM完成相应操作如:将服务从A节点迁移到B,在B节点上启用VIP,文件系统.....

高可用集群节点上的服务启动都要由CRM决定,不能让其自启动,所以必须#chkocnfig 服务名称 off

PE:policy engine 策略引擎

TE:Tranaction Engine 事物引擎

LRM:location Resource Manager 本地资源管理器

PE,TE,LRM都是CRM的组成

RA:Resource Agent资源代理

所有能够负责资源启动、关闭、重启、状态监测的脚本都叫RA,RA运行在每个节点上

RA的类别

Legency heartbeat v1 RA

LSB 所有遵循linux的shell编程支持start|restart|stop|status的脚本都是LSB类型 如/etc/rc.d/init.d/目录中的所有脚本

OCF(open cluster framework)此类脚本不但可以接受start|restart|stop|status等参数,甚至可以接受monitior(监控)等参数

DC(designated coordinator)事物协调员,DC也为CRM的子件,是在多节点中选举出的一个节点

Messager Layer的软件实现

  1. heartbeat(v1 v2 v3 三个版本)

  2. heartbeat v3 又分为heartbeat、pacemaker、cluster-glue

  3. CoroSync 红帽6.0后默认使用的Messaging Layer

  4. Cman 红帽5.0后默认使用的Messaging Layer 但由于工作在内核空间且配置复杂所以6.0后换成了工作在用户空间的CoroSync

  5. keepalived keepalived的配置与应用与前几个相比有所不同,如对VIP的配置是基于VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议实现的

CRM(cluster resource manager)层的软件实现

CRM必须工作在Messaging Layer 层上

  1. Haresources (heartbeat v1 v2 都有自带)

  2. CRM (heartbeat v2 自带)

  3. Pacemaker (heartbeat v3 独立出去的项目)

  4. Ragmanager (专门为Cman提供的一种crm)

所以集群的Messager Layer与CRM 组合如下:

  1. haresource + heartbeat v1/v2

  2. crm + heartbeat v2

  3. pacemaker + corosync

  4. pacemaker + heartbeat v3

  5. cman + ragmanager

那么定义一个Web服务的高可用集群至少要几个节点?要定义几个资源?

至少需要两个节点,上面要运行MassagerLayer 和 CRM

至少要定义四个资源 VIP 、httpd服务 、Filesystem、Stonish设备

为了避免随便一个服务器配好资源,装上MassagerLayer和CRM,时间再一同步就可以随便加入我们的集群系统,该如何处理?

首先每个节点要装Messager Layer和CRM节点之间进行heartbeat等信息传输时都因该采取加密传输(如进行hash运算),如果有两个节点可以进行单播传输heartbeat信息,两个以上节点可以进行单播、组播、广播传输heartbeat信息,高级可用集群节点上的服务必须由CRM控制,所以要设置CRM自启动而服务要用chkconfig关闭开机自启动,而Massager Layer也是一个服务且要开机自启动,Messager Layer监听在UDP/694上,以UDP协议在Messager Layer层传输heartbeat等信息。

如果要配置一个HA集群要注意什么?

节点名称要与uname -n的结果一致;节点名称/IP的解析最好在/etc/hosts文件中,不要用DNS解析,否则DNS-Server挂掉会对集群造成影响;节点的时间必须同步;SSH互信通信(当要停止或其他节点的HA集群服务时,不能从此节点进行,而要从一个正常的节点进行HA服务的关闭或启动)这是就必须要求能够以SSH远程登录到其他节点。

那第一个节点怎么办?

第一个节点要自我启动,然后启动其他节点上的服务

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1263

    浏览量

    69458
  • Linux
    +关注

    关注

    87

    文章

    11303

    浏览量

    209439
  • 集群
    +关注

    关注

    0

    文章

    86

    浏览量

    17177
  • SQL
    SQL
    +关注

    关注

    1

    文章

    764

    浏览量

    44127
  • Cyclone
    +关注

    关注

    0

    文章

    54

    浏览量

    30093

原文标题:Linux之HA高可用集群的基础概念总结

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于kafka和zookeeper可用集群的shell脚本使用步骤

    kafka+zookeeper可用集群搭建shell脚本使用教程
    发表于 03-11 16:50

    基于KeepAlive的可用配置

    KeepAlived集群可用搭建
    发表于 06-11 16:36

    Hadoop 311可用HA安装步骤

    大数据基础Hadoop311 的可用HA安装~踩坑记录
    发表于 09-20 08:23

    zabbixHA 可用设计

    【zabbix HA】zabbixHA 可用的实现
    发表于 03-26 08:12

    基于开源系统的可用集群应用

    随着硬件价格的逐步下降,PC 服务器已经不是什么高端设备了。而近些年虚拟化的发展,架设一台服务器已经是很容易的事情。通过组建集群来对关键服务提供可用性(High-availabili
    发表于 07-07 17:47 29次下载
    基于开源系统的<b class='flag-5'>高</b><b class='flag-5'>可用</b>性<b class='flag-5'>集群</b>应用

    LSI与微软合作开发HA服务器集群解决方案

    LSI 公司日前宣布其正在与微软合作,共同针对云数据中心和中小企业 (SMB) 环境开发基于 Windows 的低成本、可用性 (HA) 服务器集群解决方案。这些解决方案将把微软使用
    发表于 09-21 09:12 831次阅读

    Linux C编程从初学到精通》

    Linux C编程从初学到精通》
    发表于 12-10 00:09 26次下载

    Mesos可用集群解决方案

    )设计方案的了解以及在Mesos社区贡献的经验,深度剖析了Mesos集群可用的解决方案,以及对未来的展望。 Mesos可用架构概述 首先
    发表于 10-10 09:48 0次下载
    Mesos<b class='flag-5'>高</b><b class='flag-5'>可用</b><b class='flag-5'>集群</b>解决方案

    浅谈Kubernetes集群可用方案

    Kubernetes作为容器应用的管理中心,通过对Pod的数量进行监控,并且根据主机或容器失效的状态将新的Pod调度到其他Node上,实现了应用层的可用性。针对Kubernetes集群
    发表于 10-11 10:04 1次下载
    浅谈Kubernetes<b class='flag-5'>集群</b>的<b class='flag-5'>高</b><b class='flag-5'>可用</b>方案

    Eureka的集群搭建方法-保证可用

    在微服务架构中,注册中心是一个必不可少的组件 前面我们搭建的注册中心只适合本地开发使用,在生产环境必须搭建一个集群来保证可用 Eureka的集群搭建很简单,每一台Eureka都需要在
    发表于 11-29 10:41 7551次阅读
    Eureka的<b class='flag-5'>集群</b>搭建方法-保证<b class='flag-5'>高</b><b class='flag-5'>可用</b>

    通过安装该Linux-HA软件可以实现Linux双机系统的可用性解决方案

    简介通过安装该Linux-HA软件,可以实现Linux双机系统的可用性解决方案,实现双机系统的热备份,这篇文章对于HA做了一个详细的解读。
    的头像 发表于 12-20 14:24 7662次阅读
    通过安装该<b class='flag-5'>Linux-HA</b>软件可以实现<b class='flag-5'>Linux</b>双机系统的<b class='flag-5'>高</b><b class='flag-5'>可用</b>性解决方案

    linux高级技巧:服务器集群keepalived

    linux高级技巧:集群keepalived
    的头像 发表于 03-20 13:36 5121次阅读
    <b class='flag-5'>linux</b>高级技巧:服务器<b class='flag-5'>集群</b><b class='flag-5'>之</b>keepalived

    简单分析Java可用集群和微服务架构

    可能大部分读者都在想,为什么在这以 dubbo、spring cloud 为代表的微服务时代,我要还要整理这种已经“过时”可用集群架构?
    的头像 发表于 05-03 18:17 2091次阅读
    简单分析Java<b class='flag-5'>高</b><b class='flag-5'>可用</b><b class='flag-5'>集群</b>和微服务架构

    搭建Keepalived+Lvs+Nginx可用集群负载均衡

    Server)实现可用负载均衡 附:LVS的负载均衡算法 八、搭建Keepalived+Lvs+Nginx可用集群负载均衡 一、Ngi
    的头像 发表于 06-25 15:39 2989次阅读
    搭建Keepalived+Lvs+Nginx<b class='flag-5'>高</b><b class='flag-5'>可用</b><b class='flag-5'>集群</b>负载均衡

    FusionCompute集群重点知识点梳理

    虚拟机HA定义:是一种可用特性,当物理机或虚拟机故障时,会根据集群HA策略将宕掉的虚拟机在正常工作的主机上开启,从而减少业务中断时间。
    的头像 发表于 02-23 14:31 819次阅读
    FusionCompute<b class='flag-5'>集群</b>重点<b class='flag-5'>知识</b>点梳理