如何在CentOS 7上使用Pacemaker和Corosync设置Nginx的高可用性

在本教程中,我们将逐步指导您如何使用Pacemaker,Corosync和Pcsd创建高可用性群集Nginx Web服务器。我们...

如何在CentOS 7上使用Pacemaker和Corosync设置Nginx的高可用性

在本教程中,我们将逐步指导您如何使用Pacemaker,Corosync和Pcsd创建高可用性集群Nginx Web服务器。 我们将在CentOS 7系统上使用Pacemaker创建主动 - 被动群集或故障转移群集Nginx Web服务器。

Pacemaker是一款开源的集群管理软件,可以实现最高的服务可用性。 它是由ClusterLabs分发的高级可扩展HA集群管理器。

Corosync Cluster Engine是一个在新的BSD许可下从OpenAIS项目派生的开源项目。 这是一个群组通信系统,具有在应用程序中实现高可用性的附加功能。

有一些应用程序的Pacemaker接口。 Pcsd是用于管理Pacemaker的Pacemaker命令行界面和GUI之一。 我们可以使用pcsd命令来创建,配置或添加一个新节点到群集。

先决条件

  • 2个或更多的CentOS 7服务器
    • web01 10.0.15.10
    • web02 10.0.15.11
    • web03 10.0.15.12
  • 浮动IP地址10.0.15.15
  • 根权限

我们将要做什么:

  1. 映射主机文件
  2. 安装Epel Repository和Nginx
  3. 安装和配置Pacemaker,Corosync和Pcsd
  4. 创建和配置群集
  5. 禁用STONITH并忽略仲裁策略
  6. 添加浮动IP和资源
  7. 将规则添加到群集
  8. 配置Firewalld
  9. 测试设置

第1步 - 映射主机文件

注意 :在所有服务器web01,web02和web03上执行第1步-3。

我们必须做的第一步是编辑每个服务器上的主机文件,以映射所有服务器的主机名。 我们有'web01','web02'和'web03'服务器,用ssh帐户登录到每台服务器。

ssh root@web[01,02,03]

vim编辑'/ etc / hosts'文件。

vim /etc/hosts

在那里粘贴下面的配置。

10.0.15.10      web01
10.0.15.11      web02
10.0.15.12      web03

保存并退出。

现在测试主机的映射配置。

ping -c 3 web01
ping -c 3 web02
ping -c 3 web03

确保“web01”,“web02”和“web03”映射到正确的IP地址。

使用ping检查服务器互连

第2步 - 安装Epel Repository和Nginx

在这一步中,我们将安装epel仓库,然后安装Nginx web服务器。 安装Nginx软件包需要EPEL或Enterprise Linux存储库的额外软件包。

使用以下yum命令安装EPEL存储库。

yum -y install epel-release

现在从EPEL存储库安装Nginx Web服务器。

yum -y install nginx

安装完成后,使用新页面更改每个服务器上的默认index.html页面。

#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

安装epel repo和nginx

EPEL存储库和Nginx Web服务器现在安装在系统上。

第3步 - 安装和配置Pacemaker,Corosync和Pcsd

Pacemaker,Corosync和Pcsd在默认的系统信息库中可用。 所以他们都可以使用下面的yum命令从CentOS仓库安装。

yum -y install corosync pacemaker pcs

安装完成后,使用下面的systemctl命令启用所有服务在系统引导时自动启动。

systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemaker

现在在所有服务器上启动pcsd Pacemaker命令行界面。

systemctl start pcsd

接下来,为“hacluster”用户创建一个新密码,并为所有服务器使用相同的密码。 该用户在软件安装过程中自动创建。

以下是为“ hacluster ”用户配置密码的方法。

passwd hacluster
Enter new password:

高可用性软件Pacemaker,Corosync和Pcsd安装在系统上。

安装并配置Pacemaker,Corosync和Pcsd

第4步 - 创建和配置群集

注意 :只运行“web01”第4步 - 7。

在这一步中,我们将创建一个具有3个服务器的新群集。 然后配置浮动IP地址并添加新的Nginx资源。

要创建群集,我们需要使用pcs命令和hacluster用户授权所有服务器。

使用pcs命令和hacluster用户和密码授权所有服务器。

pcs cluster auth web01 web02 web03
Username: hacluster
Password: aqwe123@

创建和配置群集

现在是时候建立集群了。 定义群集名称以及将成为群集一部分的所有服务器。

pcs cluster setup --name hakase_cluster web01 web02 web03

现在启动所有集群服务并启用它们。

pcs cluster start --all
pcs cluster enable --all

启动群集

接下来,检查群集状态。

pcs status cluster

检查群集状态

第5步 - 禁用STONITH并忽略仲裁策略

由于我们没有使用围栏设备,我们将禁用STONITH。 STONITH或拍摄头部的其他节点是Pacemaker上的击剑实施。 如果您正在生产,最好启用STONITH。

使用以下pcs命令禁用STONITH。

pcs property set stonith-enabled=false

接下来,对于仲裁政策,请忽略它。

pcs property set no-quorum-policy=ignore

检查属性列表并确保stonith和法定人数策略被禁用。

pcs property list

禁用STONITH并忽略仲裁策略

STONITH和Quorum策略被禁用。

第6步 - 添加浮动IP和资源

浮动IP是可以从同一个数据中心中的一台服务器自动迁移/移动到另一台服务器的IP地址。 而且我们已经将Pacemaker High-Availability的浮动IP地址定义为“10.0.15.15”。 现在我们要添加两个资源,名为“virtual_ip”的浮动IP地址资源和名为“webserver”的Nginx Web服务器的新资源。

使用pcs命令添加新的资源浮动IP地址'virtual_ip',如下所示。

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s

接下来,为Nginx的'网络服务器'添加一个新的资源。

pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"

确保你没有错误的结果,然后检查可用的资源。

pcs status resources

你会看到两个资源“virtual_ip”和一个“网络服务器”。 新增了用于浮动IP和Nginx Web服务器的资源。

添加浮动IP和资源

第7步 - 将约束规则添加到群集

在这一步中,我们将设置高可用性规则,并用pcs命令行界面设置资源约束。

为分数“INFINITY”设置webserver和virtual_ip资源的排序约束条件。 另外,在所有服务器节点上将webserver和virtual_ip资源设置为相同。

pcs constraint colocation add webserver virtual_ip INFINITY

始终在同一节点服务器上设置“virtual_ip”和“webserver”资源。

pcs constraint order virtual_ip then the webserver

接下来,停止集群,然后重新启动。

pcs cluster stop --all
pcs cluster start --all

将约束规则添加到群集

现在,再次检查资源,您将在同一服务器“web01”上看到他们的状态为“已启动”。

pcs status resources

检查个人身份

virtual_ip和web服务器资源已经在相同的服务器/节点“web01”上启动。

第8步 - 配置Firewalld

HA集群将在防火墙配置下运行 - 如果您没有该软件包,请安装它。

yum -y install firewalld

启动firewalld并使其每次在系统启动时使用以下systemctl命令自动运行。

systemctl start firewalld
systemctl enable firewalld

接下来,使用firewall-cmd命令向firewalld添加新服务 - 为Nginx添加高可用性服务,HTTP和HTTPS服务。

firewall-cmd --permanent --add-service=high-availability
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

配置Firewalld

重新加载防火墙配置,并检查所有服务。

firewall-cmd --reload
firewall-cmd --list-all

确保使用HTTP和https的ha服务在列表中。

重新加载防火墙并检查防火墙规则集

第9步 - 测试

在这一步中,我们要为集群做一些测试。 测试节点状态('Online'或'Offline'),测试corosync成员和状态,然后通过访问浮动IP地址来测试Nginx web服务器的高可用性。

使用以下命令测试节点状态。

pcs status nodes

测试设置

所有节点都在“在线”。

测试corosync成员。

corosync-cmapctl | grep members

您将获得Corosync成员的IP地址。

Corosync成员IP地址

检查Corosync成员,您将看到如下所示的结果。

pcs status corosync

Corosync状态

最后,检查Web服务器的高可用性。 打开您的网络浏览器并输入浮动IP地址“10.0.15.15”。

您将看到来自“web01”服务器的网页。

网站web01

接下来,使用以下命令停止“web01”服务器上的集群。

pcs cluster stop web01

再次检查页面,您将从“web02”服务器获取如下所示的页面。

网站web02

额外:

使用下面的命令检查群集状态。

pcs status

你会得到如下所示的结果。

检查个人身份

Nginx Web服务器的设置CentOS 7服务器上的Pacemaker,Corosync和Pcsd的高可用性已成功完成。

参考