一、基础概念
1.什么是Pacemaker?
Pacemaker是 Linux环境中使用最为广泛的开源集群资源管理器, Pacemaker利用集群基础架构(Corosync或者 Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。从逻辑功能而言, pacemaker在集群管理员所定义的资源规则驱动下,负责集群中软件服务的全生命周期管理,这种管理甚至包括整个软件系统以及软件系统彼此之间的交互。 Pacemaker在实际应用中可以管理任何规模的集群,由于其具备强大的资源依赖模型,这使得集群管理员能够精确描述和表达集群资源之间的关系(包括资源的顺序和位置等关系)。同时,对于任何形式的软件资源,通过为其自定义资源启动与管理脚本(资源代理),几乎都能作为资源对象而被 Pacemaker管理。
此外,需要指出的是, Pacemaker仅是资源管理器,并不提供集群心跳信息,由于任何高可用集群都必须具备心跳监测机制,因而很多初学者总会误以为 Pacemaker本身具有心跳检测功能,而事实上 Pacemaker的心跳机制主要基于 Corosync或 Heartbeat来实现
Pacemaker是整个高可用集群的控制中心,用来管理整个集群的资源状态行为,客户端通过 pacemaker来配置、管理、监控整个集群的运行状态。Pacemaker是一个功能非常强大并支持众多操作系统的开源集群资源管理器,Pacemaker支持主流的 Linux系统,如 Redhat的 RHEL系列、 Fedora系列、 openSUSE系列、Debian系列、 Ubuntu系列和 centos系列,这些操作系统上都可以运行 Pacemaker并将其作为集群资源管理器。
2.Pacemaker的主要功能包括:
- 监测并恢复节点和服务级别的故障。
- 存储无关,并不需要共享存储。
- 资源无关,任何能用脚本控制的资源都可以作为集群服务。
- 支持节点 STONITH功能以保证集群数据的完整性和防止集群脑裂。
- 支持大型或者小型集群。
- 支持 Quorum机制和资源驱动类型的集群。
- 支持几乎是任何类型的冗余配置。
- 自动同步各个节点的配置文件。
- 可以设定集群范围内的 Ordering、 Colocation and Anti-colocation等约束。
- 高级服务类型支持,例如:
Clone功能,即那些要在多个节点运行的服务可以通过 Clone功能实现, Clone功能将会在多个节点上启动相同的服务;
Multi-state功能,即那些需要运行在多状态下的服务可以通过 Multi–state实现,在高可用集群的服务中,有很多服务会运行在不同的高可用模式下,如:Active/Active模式或者 Active/passive模式等,并且这些服务可能会在 Active 与standby(Passive)之间切换。 - 具有统一的、脚本化的集群管理工具。
主机环境:rhel6.5 selinux and iptables disabled
主机名 | ip | 服务 |
---|---|---|
server1 | 172.25.254.1 | pacemaker |
server2 | 172.25.254.2 | pacemaker |
server3 | 172.25.254.3 | nfs-utils、rpcbind |
二、Pacemaker实现高可用
搭建步骤:
1.配置高级的yum源(server1、server2)
[root@server1 yum.repos.d]# vim rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.73/rhel6.5/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.73/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.73/rhel6.5/HighAvailability
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ResilientStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.73/rhel6.5/ResilientStorage
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ScalableFileSystem]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.73/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@server1 yum.repos.d]# yum clean all
[root@server1 yum.repos.d]# yum repolist
server2操作相同
[root@server1 yum.repos.d]# scp rhel-source.repo server2:/etc/yum.repos.d/
[root@server2 ~]# yum clean all
[root@server2 ~]# yum repolist
2.下软件,提供crm命令行接口,配置心跳节点,同时启动
01.安装支持crm命令行接口的软件
[root@server1 ~]# yum install pacemaker -y
[root@server1 ~]# ls
anaconda-ks.cfg install.log pssh-2.3.1-2.1.x86_64.rpm
crmsh-1.2.6-0.rc2.2.1.x86_64.rpm install.log.syslog
[root@server1 ~]# yum install pssh-2.3.1-2.1.x86_64.rpm crmsh-1.2.6-0.rc2.2.1.x86_64.rpm -y
[root@server2 ~]# yum install pacemaker -y
[root@server2 ~]# ls
anaconda-ks.cfg install.log pssh-2.3.1-2.1.x86_64.rpm
crmsh-1.2.6-0.rc2.2.1.x86_64.rpm install.log.syslog
[root@server2 ~]# yum install pssh-2.3.1-2.1.x86_64.rpm crmsh-1.2.6-0.rc2.2.1.x86_64.rpm -y
02.查看安装完成后对应生成的文件
03.修改配置文件(让corosync在pacemaker启动时也启动)
[root@server1 corosync]# cp corosync.conf.example corosync.conf
[root@server1 corosync]# vim corosync.conf
10 bindnetaddr: 172.25.254.0 #同网段
11 mcastaddr: 226.94.1.1 #多播地址(不需要修改)
12 mcastport: 5405 #多播端口
35 service {
36 name:pacemaker
37 ver:0
38 }
[root@server1 corosync]# scp /etc/corosync/corosync.conf server2:/etc/corosync/
04.两边同时启动corosync服务
[root@server2 corosync]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync): [ OK ]