如何在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
- 根权限
我们将要做什么:
- 映射主机文件
- 安装Epel Repository和Nginx
- 安装和配置Pacemaker,Corosync和Pcsd
- 创建和配置群集
- 禁用STONITH并忽略仲裁策略
- 添加浮动IP和资源
- 将规则添加到群集
- 配置Firewalld
- 测试设置
第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地址。
第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存储库和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安装在系统上。
第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和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服务器的资源。
第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
重新加载防火墙配置,并检查所有服务。
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成员,您将看到如下所示的结果。
pcs status corosync
最后,检查Web服务器的高可用性。 打开您的网络浏览器并输入浮动IP地址“10.0.15.15”。
您将看到来自“web01”服务器的网页。
接下来,使用以下命令停止“web01”服务器上的集群。
pcs cluster stop web01
再次检查页面,您将从“web02”服务器获取如下所示的页面。
额外:
使用下面的命令检查群集状态。
pcs status
你会得到如下所示的结果。
Nginx Web服务器的设置CentOS 7服务器上的Pacemaker,Corosync和Pcsd的高可用性已成功完成。