欢迎,来自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 高可用集群的全部内容,至于每台服务器上的应用,同样可以添加为集群资源,用于提升应用的高可用性。