Linux之Heartbeat实现服务器的高可用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之Heartbeat实现服务器的高可用相关的知识,希望对你有一定的参考价值。
Heartbeat简介
Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。
Heartbeat结构图
基准层:(心跳传递层)运行在每一个节点,通过组播的方式传寄给每个备用节点。此协议工作在udp的694端口。
CRM:(集群资源管理器)依赖与心跳层,并且可以向上传及信息,安装与每个节点。
LRM:(本地资源管理器)由CRM进行调度,施行CRM的决策,找到RA进行执行。
RA:(资源代理)能够接受CRM的调度,用于实现在某一个的节点上资源调度和配置,一般为脚本。脚本必须接受{start|stop|restart|status}
CRM的工作方式
在众多的CRM中会选出一个CRM作为管理员,负责调度使用那个备用服务器作为主服务器。
Heartbeat各层常用的软件
1. 信息层: a.Heartbeat V1,V2,V3 b.corosync 2. CRM: a.Heartbeat v1:配置接口(配置文件) b.Heartbeat v2:crm(命令) c.Heartbeat v3:heartbeat+pacemaker+gluster-glue(粘和挤) d.pacemake 3. RA: a.heartbeat legacy:heartbeat的传统类型 b.OCF:开源集群框架
防止脑裂
节点级别:以少数服从多数的形式,切断少数集群的电源。
资源级别:屏蔽少数集群访问公共资源。
集群的工作模式
N-M模型:N>M 在N个节点上运行M个服务,M个服务上出现故障,将服务转移到N-M个节点上的其中一个,这个集群模式中,至少3台主机 N-N模型: 在N个节点上运行N个服务,每个节点上运行一个服务,当其中一个节点出现故障时,将服务转移到另一个节点。至少两台主机。 A/A模型: 此模型为双主模式,两台主机分别运行两个主服务,两个主服务分别对应不同的IP,当其中一台出现故障时,将会转移到另一台。123456123456
资源转移方式
rgmanager:(故障转移域)指只能在指定的节点上转移 pacemaker:资源约束 资源粘性:是指资源约束一样时,根据粘性判断,更倾向于运行在那个节点。 1. 位置约束:资源更倾向于运行的那个节点 inf:无穷大,资源一定运行在这个节点上 -inf:无穷小,单反有可能离开这个节点 2. 顺序约束:定义资源启动顺序和关闭次序 3. 排序约束:两个资源是否愿意在一起 inf:表示愿意 -inf:表示不愿意常常使用顺序约束和排序约束
资源类型
primitive,native:主资源,只能运行于一个节点
group:组资源
clone:克隆资源,可以在多个节点上运行,需要定义两个参数(总克隆数,每个节点的最大克隆数)
master/slave:主从资源
不在集群中的资源处理方式
stop:停止服务
ignore:忽略是不是集群成员,继续运行。
freeze:冻结,不解收新的请求。
suicide:kill sever
Heartbeat V1实现web资源高可用
1. yum安装heartbeat [[email protected] ~]# wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm [[email protected] ~]# rpm -ivh epel-release-6-8.noarch.rpm [[email protected] ~]# yum install heartbeat* 2. 配置文件/etc/ha.d/目录下 [[email protected] ~]# cp /usr/share/doc/heartbeat-3.0.4/{ha.cf,authkeys,haresources} /etc/ha.d/ [[email protected] ~]# chmod 600 /etc/ha.d/authkeys 3. authkeys配置文件 格式: auto {1,2,3} 1 crc 2 sha1 密码 3 md5 密码 4. ha.cf常用配置文件 logfile /var/log/ha-log //日志文件 keepalive time //多长时间进行一次心跳检测 deadtime 30 //多长时间没有检测到心跳,接管资源 warntime 10 //多长时间没有检测到心跳,将写入日志 initdead 120 //在系统重启或者启动之后,多长时间过后网络再一次工作 dpport 694 baud 19200 //设置串行通信波特率 bcast eth0 //设置广播接口 mcast eth0 225.0.0.1 694 1 0 //多播 ucast eth0 ip //单播 auto_failback on //主节点恢复后,能够切回 node Clone1 //主节点主机 node Clone2 //备用节点主机 compression bz2 //压缩传送 compression_threshold 2 //压缩最小极限,单位为KB 5. haresources资源配置文件 格式: 第一种:主节点(nodel) vip|vip/mask/dev 服务名称 第二种:主节点(nodel) vip|vip/mask/dev Filesystem::/dev/sad1::/挂在点 服务名称 eg:Clone1 192.168.80.150 httpd
测试结果
关闭主节点的heartbeat
使用Heartbeat V2配置web高可用
配置步骤 1. 在Heartbeat V1的基础上安装heartbeat-gui,只在主服务上安装 2. 在配置文件ha.cf中添加crm on这一行 3. 删除haresources文件 4. /usr/lib64/heatbeat/ha_propagate可以将配置文件同步到替他节点上。 5. 启用hearbeat-gui [[email protected] ~]# hb-gui &
由于Heartbeat V3配置都是命令和corosync+pacemaker的配置方式一样,所以在此就不配置Heartbeat V3,下期使用corosync+pacemaker配置。
以上是关于Linux之Heartbeat实现服务器的高可用的主要内容,如果未能解决你的问题,请参考以下文章
linux集群学习实验:使用heartbeat实现对httpd的高可用
heartbeat v2基于haresources实现HA Web
Mysql DBA 高级运维学习笔记-Heartbeat实现web服务的高可用案例及维护要点