欢迎,来自IP地址为:35.171.164.77 的朋友



Pacemaker  是 Linux 系统常用的服务器集群工具,可以方便的在 RHEL/CentOS 系统和 Debian 系列发行版中获得预安装版本。

Pacemaker 是一个高可用集群资源管理器,它在集群中的所有主机上运行,以确保我们使用的服务正常运行,减少停机时间。Pacemaker 支持以下节点冗余配置:主动/主动,主动/被动,N + 1,N + M,N对1和N对N。

配置集群的常见作法是所有节点底层的操作系统版本相同,硬件规格也匹配。本教程将使用 CentOS 7 作为节点的操作系统。

首先,集群中的所有节点均最小化安装 CentOS 7,以准备配置 Pacemaker 集群。集群对于各节点的状态变化非常敏感,在配置前,请确保各节点具有相同的时区设置,时间同步、正确的 IP 地址配置以及磁盘配置。

实验环境说明

为了详细演示 Pacemaker 集群的配置步骤,我们使用如下实验环境进行演示:

No. HOSTNAME SHORT NAME IP Address
1 node1 node1.daehub.tld 172.16.200.1
2 node2 node2.daehub.tld 172.16.200.2
3 node3 node3.daehub.tld 172.16.200.3
4 VirtualIP VirtualIP 172.16.200.100

教程首先使用两台主机创建集群,之后将演示如何将节点添加至已经集群中。

以下的内容除了”配置 CoroSync”部分外,所有节点都相同,使用虚拟机的话可以从”node1″克隆出其它主机,之后按照上面的配置修改 IP 地址和主机名即可。

设置节点基本信息

节点 CentOS 7 系统安装完成后,需要对各节点按如下步骤进行基本信息配置,注意在设置主机名及 IP 地址时按上面表中的数据修改。教程以”node1″为例。

1) 设置本地语言:

# localectl set-locale LC_CTYPE=en_US.utf8
# localectl status

2) 设置 IP 地址(以”node1″为例):

# nmtui

3) 设置主机名(以”node1″为例):

# hostnamectl set-hostname node1
# vi /etc/hosts

所有节点均使用内容:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.200.1 node1.daehub.tld node1
172.16.200.2 node2.daehub.tld node2
172.16.200.3 node3.daehub.tld node3

4) 设置时区和时间同步(时区设置为上海):

# timedatectl set-timezone Asia/Shanghai
# yum -y install ntp
# timedatectl set-ntp true
# timedatectl status

5) 配置SSH免密认证:

为执行管理任务、运行特权命令以及复制文件方便,我们可以通过生成 SSH 密钥方式来设置 SSH 免密码身份验证。当然,如果觉得没有必要的话,这一步可以省略。

# ssh-keygen

# ssh-copy-id root@node2

命令执行完成后,就可以使用如下命令登录”node2″主机而不需要输入密码:

# ssh root@node2

5) CentOS 防火墙放行集群服务

CentOS 7 系统防火墙已经为高可用设置了放行端口,文件保存于”/usr/lib/firewalld/services/high-availability.xml”当中,涵盖了大部高可用软件常用的端口。使用如下命令放行高可用服务:

# firewall-cmd --add-service=high-availability --zone=public --permanent
# firewall-cmd --reload

安装并启动集群软件包

以上所有准备工作完成后,就可以安装集群软件包了。命令如下:

# yum install pacemaker pcs psmisc policycoreutils-python -y

安装完成后,使用如下命令启动集群服务并启动开机启动:

# systemctl start pcsd.service
# systemctl enable pcsd.service

创建集群用户密码

当然安装集群软件包时,会自动创建一个用于操作和执行 pcs 命令的用户”hacluster”,安全起见,为该用户设置一个密码:

# echo daehub | passwd --stdin hacluster

配置 CoroSync 同步

在配置 CoroSync 之前,我们需要使用如下命令让”hacluster”用户作为集群的认证用户在所有节点可以通过认证:

# pcs cluster auth -u hacluster -p daehub node1 node2

认证成功后,会生成令牌文件,令牌文件保存于”/var/lib/pcsd/tokens”文件中,默认情况下,集群中的所有节点保存其它成员的认证信息。可以查看该令牌文件的内容,大致如下:

# pcs cluster auth -u hacluster -p daehub node1 node2

集群认证成功后,就可以使用以下命令创建集群并同步 corosync 配置:

# pcs cluster setup --name daehub-cluster node1 node2

我们用”–name”参数指定了集群的名称为”daehub-cluster”,命令执行结果出下所示:

集群创建成功后,就可以使用下面的命令启动集群服务并查看集群状态了:

# pcs cluster start --all
# pcs status

永久启用群集服务

以下命令是用于在系统时便启动集群服务,以便出现同步问题:

# pcs cluster enable --all

检查仲裁状态

使用如下命令查看所有节点的仲裁和投票状态:

# pcs status quorum
# corosync-quorumtool

检查 CoroSync 状态

CoroSync 是集群引擎,提供成员资格审核、消息传递和仲裁等服务。需要查看其状态,使用如下命令:

# pcs status corosync

查看 CIB 文件

集群启动成功后,会生成一个 CIB(集群信息库)的文件,用以维护集群节点和资源的信息。CIB 会在集群中的所有节点中同步,并处理修改它的请求。可以使用如下命令查看其内容:

# pcs cluster cib
OR
# cat /var/lib/pacemaker/cib/cib.xml

查看集群日志信息

根据 corosync 的配置文件”/etc/corosync/corosync.conf”中的设置,集群日志文件默认保存在”/var/log/cluster/corosync.log”,可以查看该文件来了解集群的详细信息。

以上就是创建集群的基本步骤,但是这个集群启动起来并没有实际意义,因为它还没有任何可用资源。我们可以通过修改配置文件来管理集群和资源,但是比较方便的办法是通过 Web GUI 界面来管理它。

下面,我们就来讲解如何使用 Web GUI 界面来管理集群。

GUI界面管理集群

集群启动成功后,会自动启动一个 GUI 界面,我们可以通过浏览器访问该 Web GUI 界面,其地址为:

https://IP_OF_NODE_IN_CLUSTER:2224/login

这里”IP_OF_NODE_IN_CLUSTER”指的是集群中节点的 IP 地址,教程中使用 172.16.200.1。

使用之前安装集群软件时自动添加的用户名”hacluster”和设置的密码”daehub”来登录系统,登录成功后界面如下:

界面最上面管理集群(Manage Cluster)有三个按钮,分别为删除(x Remove)、添加现有(+ Add Existing)和创建全新(+ Create New),下面为集群的状态信息。由于没有向管理端添加任何集群,其内容暂时为空。

我们已经通过命令行创建了一个集群,点击”Add Existing”把这个集群添加到管理端。

点击后会见到如下对话框,请求输入节点信息:

输入节点的 IP 地址后,点击”Add Existing”继续,之后会提示输入”hacluster”用户的密码进行认证,认证成功后,就会将我们之前创建的集群”daehub-cluster”添加到管理端了,界面如下:

这里有一个警告,提示集群中没有配置隔离设备,也就是没有硬件来监视集群状态,当然,这些信息在创建集群的时候也有提示,需要的时候配置到集群就可以了,如果没有,则需要关闭隔离设备监视,这些会在后面讲到。

之前说过,这个集群创建完成后,还没有任何作用,为了能够让它在实际运行环境中可以真正起到集群的作用,我们需要为这个集群添加资源。点击集群名称,这里是”daehub-cluster”后,会进行该集群的管理界面,也是 Web GUI 的核心功能区。

管理菜单包括节点(NODES)、资源(RESOURCES)、隔离设备(FENCE DEVICES)、访问控制(ACLs)以及集群属性设置(CLUSTER PROPERTIES),想要添加浮动IP,属于集群中的资源,点击资源菜单,进行添加集群资源页面:

通过GUI界面添加集群资源

当初创建集群时并没有添加资源,现在通过GUI界面添加比使用命令来的方便,可以达到一样的效果。点击”Add”按钮添加集群资源。

想要添加浮动IP,则选择如图所示内容,然后输入资源ID(也就是资源名称)以及浮动IP地址值后,点击”Create Resource”即可。

现在,集群的一个浮动IP就添加成功了,其状态显示为”running”,并且在详细信息中会显示使用的实际节点为”node1″,因为我在其”Location Perferences”中设置两个节点的分值不同,node1稍高,则会优先使用。

如果浮动IP添加后显示为”blocked”,是因为Pacemaker心跳默认使用隔离设备来监视,由Stonithd守护进程来管理,没有隔离设备,需要将该功能设置为停用。

这个属性同样可以通过GUI界面来设置,点击集群属性设置菜单,将”Stonith Eanble”设置为”false”即可。

为了测试浮动IP是否生效,我们可以尝试将node1节点关机,然后通过浏览器访问如下地址进行测试:

https://Virtual_IP:2224/login

其中”Virtual_IP”是指我们为集群添加的浮动IP,这里是 172.16.200.100,如果一切正常,会见到登录界面,按之前方式登录进去后,再查看集群信息,会发现浮动IP的位置会变为node2,节点node1会显示为红色,表示存在故障。

将节点添加至集群

最后,我们讲一下如何通过 GUI 管理界面将节点添加至集群中。

在集群管理界面,进行NODES菜单,点击”Add”,之后输入节点名和”hacluster”用户的密码,即可完成添加。当然,此节点已经安装并启动了集群管理软件。

以上就是 CentOS 7 系统配置 Pacemaker 高可用集群的全部内容,至于每台服务器上的应用,同样可以添加为集群资源,用于提升应用的高可用性。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注