@geekpi
https://linux.cn/article-15856-1.html
This commit is contained in:
Xingyu Wang 2023-05-29 17:37:12 +08:00
parent f42fbe08a9
commit 953458e739

View File

@ -3,18 +3,20 @@
[#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/" [#]: author: "Pradeep Kumar https://www.linuxtechi.com/author/pradeep/"
[#]: collector: "lkxed" [#]: collector: "lkxed"
[#]: translator: "geekpi" [#]: translator: "geekpi"
[#]: reviewer: " " [#]: reviewer: "wxy"
[#]: publisher: " " [#]: publisher: "wxy"
[#]: url: " " [#]: url: "https://linux.cn/article-15856-1.html"
如何在 RHEL 9/8 上设置高可用性 Apache (HTTP) 集群 如何在 RHEL 9/8 上设置高可用性 ApacheHTTP集群
====== ======
在本文中,我们将介绍如何在 RHEL 9/8 上使用 pacemaker 设置两节点高可用性 Apache 集群 ![][0]
Pacemaker 是适用于类 Linux 操作系统的高可用性集群软件。Pacemaker 被称为“集群资源管理器”它通过在集群节点之间进行资源故障转移来提供集群资源的最大可用性。Pacemaker 使用 corosync 进行集群组件之间的心跳和内部通信Corosync 还负责集群中的 Quorum > 在本文中,我们将介绍如何在 RHEL 9/8 上使用 Pacemaker 设置两节点高可用性 Apache 集群
##### 先决条件 Pacemaker 是适用于类 Linux 操作系统的高可用性集群软件。Pacemaker 被称为“集群资源管理器”它通过在集群节点之间进行资源故障转移来提供集群资源的最大可用性。Pacemaker 使用 Corosync 进行集群组件之间的心跳和内部通信Corosync 还负责集群中的投票选举Quorum
### 先决条件
在我们开始之前,请确保你拥有以下内容: 在我们开始之前,请确保你拥有以下内容:
@ -24,25 +26,25 @@ Pacemaker 是适用于类 Linux 操作系统的高可用性集群软件。Pacema
- root 或 sudo 权限 - root 或 sudo 权限
- 互联网连接 - 互联网连接
##### 实验室详情: ### 实验室详情:
- 服务器 1node1.example.com (192.168.1.6) - 服务器 1node1.example.com192.168.1.6
- 服务器 2node2.exaple.com (192.168.1.7) - 服务器 2node2.exaple.com192.168.1.7
- VIP192.168.1.81 - VIP192.168.1.81
- 共享磁盘:/dev/sdb (2GB) - 共享磁盘:`/dev/sdb`2GB
事不宜迟,让我们深入了解这些步骤。 事不宜迟,让我们深入了解这些步骤。
### 1更新 /etc/hosts 文件 ### 1更新 /etc/hosts 文件
在两个节点上的 /etc/hosts 文件中添加以下条目: 在两个节点上的 `/etc/hosts` 文件中添加以下条目:
``` ```
192.168.1.6 node1.example.com 192.168.1.6 node1.example.com
192.168.1.7 node2.example.com 192.168.1.7 node2.example.com
``` ```
### 2安装高可用pacemaker ### 2、安装高可用包 Pacemaker
Pacemaker 和其他必需的包在 RHEL 9/8 的默认包仓库中不可用。因此,我们必须启用高可用仓库。在两个节点上运行以下订阅管理器命令。 Pacemaker 和其他必需的包在 RHEL 9/8 的默认包仓库中不可用。因此,我们必须启用高可用仓库。在两个节点上运行以下订阅管理器命令。
@ -58,7 +60,7 @@ $ sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rp
$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms $ sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
``` ```
启用仓库后,运行命令在两个节点上安装 pacemaker 包: 启用仓库后,运行命令在两个节点上安装 `pacemaker` 包:
``` ```
$ sudo dnf install pcs pacemaker fence-agents-all -y $ sudo dnf install pcs pacemaker fence-agents-all -y
@ -66,7 +68,7 @@ $ sudo dnf install pcs pacemaker fence-agents-all -y
![][1] ![][1]
### 3在防火墙中允许高可用端口 ### 3在防火墙中允许高可用端口
要允许防火墙中的高可用端口,请在每个节点上运行以下命令: 要允许防火墙中的高可用端口,请在每个节点上运行以下命令:
@ -75,9 +77,9 @@ $ sudo firewall-cmd --permanent --add-service=high-availability
$ sudo firewall-cmd --reload $ sudo firewall-cmd --reload
``` ```
### 4)为 hacluster 设置密码并启动 pcsd 服务 ### 4、为 hacluster 用户设置密码并启动 pcsd 服务
在两台服务器上为 hacluster 用户设置密码,运行以下 echo 命令: 在两台服务器上为 `hacluster` 用户设置密码,运行以下 `echo` 命令:
``` ```
$ echo "<Enter-Password>" | sudo passwd --stdin hacluster $ echo "<Enter-Password>" | sudo passwd --stdin hacluster
@ -90,19 +92,19 @@ $ sudo systemctl start pcsd.service
$ sudo systemctl enable pcsd.service $ sudo systemctl enable pcsd.service
``` ```
### 5创建高可用集群 ### 5创建高可用集群
使用 pcs 命令对两个节点进行身份验证,从任何节点运行以下命令。在我的例子中,我在 node1 上运行它: 使用 `pcs` 命令对两个节点进行身份验证,从任何节点运行以下命令。在我的例子中,我在 `node1` 上运行它:
``` ```
$ sudo pcs host auth node1.example.com node2.example.com $ sudo pcs host auth node1.example.com node2.example.com
``` ```
使用 hacluster 用户进行身份验证。 使用 `hacluster` 用户进行身份验证。
![][2] ![][2]
使用下面的 “pcs cluster setup” 命令将两个节点添加到集群,这里我使用的集群名称为 http_cluster。仅在 node1 上运行命令: 使用下面的 `pcs cluster setup` 命令将两个节点添加到集群,这里我使用的集群名称为 `http_cluster`。仅在 `node1` 上运行命令:
``` ```
$ sudo pcs cluster setup http_cluster --start node1.example.com node2.example.com $ sudo pcs cluster setup http_cluster --start node1.example.com node2.example.com
@ -128,19 +130,19 @@ $ sudo pcs property set stonith-enabled=false
$ sudo pcs property set no-quorum-policy=ignore $ sudo pcs property set no-quorum-policy=ignore
``` ```
### 6为集群配置共享卷 ### 6为集群配置共享卷
在服务器上,挂载了一个大小为 2GB 的共享磁盘 (/dev/sdb)。因此,我们将其配置为 LVM 卷并将其格式化为 xfs 文件系统。 在服务器上,挂载了一个大小为 2GB 的共享磁盘`/dev/sdb`)。因此,我们将其配置为 LVM 卷并将其格式化为 XFS 文件系统。
在开始创建 lvm 卷之前,编辑两个节点上的 /etc/lvm/lvm.conf 文件。 在开始创建 LVM 卷之前,编辑两个节点上的 `/etc/lvm/lvm.conf` 文件。
将参数 #system_id_source = "none" 更改为 system_id_source = "uname" 将参数 `#system_id_source = "none"` 更改为 `system_id_source = "uname"`
``` ```
$ sudo sed -i 's/# system_id_source = "none"/ system_id_source = "uname"/g' /etc/lvm/lvm.conf $ sudo sed -i 's/# system_id_source = "none"/ system_id_source = "uname"/g' /etc/lvm/lvm.conf
``` ```
node1 上依次执行以下一组命令创建 lvm 卷: `node1` 上依次执行以下一组命令创建 LVM 卷:
``` ```
$ sudo pvcreate /dev/sdb $ sudo pvcreate /dev/sdb
@ -152,22 +154,21 @@ $ sudo mkfs.xfs /dev/vg01/lv01
![][5] ![][5]
将共享设备添加到集群第二个节点 (node2.example.com) 上的 LVM 设备文件中,仅在 node2 上运行以下命令: 将共享设备添加到集群第二个节点`node2.example.com`)上的 LVM 设备文件中,仅在 `node2` 上运行以下命令:
``` ```
[sysops@node2 ~]$ sudo lvmdevices --adddev /dev/sdb [sysops@node2 ~]$ sudo lvmdevices --adddev /dev/sdb
[sysops@node2 ~]$
``` ```
### 7) 安装和配置 Apache Web 服务器 (HTTP) ### 7、安装和配置 Apache Web 服务器httpd
在两台服务器上安装 apache web 服务器 (httpd),运行以下 dnf 命令: 在两台服务器上安装 Apache web 服务器httpd),运行以下 `dnf` 命令:
``` ```
$ sudo dnf install -y httpd wget $ sudo dnf install -y httpd wget
``` ```
并允许防火墙中的 Apache 端口,在两台服务器上运行以下 firewall-cmd 命令: 并允许防火墙中的 Apache 端口,在两台服务器上运行以下 `firewall-cmd` 命令:
``` ```
$ sudo firewall-cmd --permanent --zone=public --add-service=http $ sudo firewall-cmd --permanent --zone=public --add-service=http
@ -175,7 +176,7 @@ $ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --reload $ sudo firewall-cmd --reload
``` ```
在两个节点上创建 status.conf 文件,以便 Apache 资源代理获取 Apache 的状态: 在两个节点上创建 `status.conf` 文件,以便 Apache 资源代理获取 Apache 的状态:
``` ```
$ sudo bash -c 'cat <<-END > /etc/httpd/conf.d/status.conf $ sudo bash -c 'cat <<-END > /etc/httpd/conf.d/status.conf
@ -187,7 +188,7 @@ END'
$ $
``` ```
修改两个节点上的/etc/logrotate.d/httpd 修改两个节点上的 `/etc/logrotate.d/httpd`
替换下面的行 替换下面的行
@ -208,9 +209,9 @@ $
![][6] ![][6]
### 8) 为 Apache 创建一个示例网页 ### 8为 Apache 创建一个示例网页
仅在 node1 上执行以下命令: 仅在 `node1` 上执行以下命令:
``` ```
$ sudo lvchange -ay vg01/lv01 $ sudo lvchange -ay vg01/lv01
@ -233,14 +234,14 @@ $ sudo umount /var/www
$ sudo restorecon -R /var/www $ sudo restorecon -R /var/www
``` ```
### 9创建集群资源和资源组 ### 9创建集群资源和资源组
为集群定义资源组和集群资源。在我的例子中,我们使用 “webgroup” 作为资源组。 为集群定义资源组和集群资源。在我的例子中,我们使用 `webgroup` 作为资源组。
- web_lvm 是共享 lvm 卷的资源名称 (/dev/vg01/lv01) - `web_lvm` 是共享 LVM 卷的资源名称(`/dev/vg01/lv01`
- web_fs 是将挂载在 /var/www 上的文件系统资源的名称 - `web_fs` 是将挂载在 `/var/www` 上的文件系统资源的名称
- VirtualIP 是 nic enp0s3 的 VIP (IPadd2) 资源 - `VirtualIP` 是网卡 `enp0s3` 的 VIP`IPadd2`资源
- 网站是 Apache 配置文件的资源。 - `Website` 是 Apache 配置文件的资源。
从任何节点执行以下命令集。 从任何节点执行以下命令集。
@ -261,13 +262,13 @@ $ sudo pcs status
![][8] ![][8]
很好,上面的输出显示所有资源都在 node1 上启动。 很好,上面的输出显示所有资源都在 `node1` 上启动。
### 10) 测试 Apache 集群 ### 10测试 Apache 集群
尝试使用 VIP192.168.1.81)访问网页 尝试使用 VIP192.168.1.81)访问网页
使用 curl 命令或网络浏览器访问网页: 使用 `curl` 命令或网络浏览器访问网页:
``` ```
$ curl http://192.168.1.81 $ curl http://192.168.1.81
@ -279,9 +280,9 @@ $ curl http://192.168.1.81
![][10] ![][10]
完美以上输出确认我们能够访问我们高可用 Apache 集群的网页。 完美以上输出确认我们能够访问我们高可用 Apache 集群的网页。
让我们尝试将集群资源从 node1 移动到 node2运行 让我们尝试将集群资源从 `node1` 移动到 `node2`,运行:
``` ```
$ sudo pcs node standby node1.example.com $ sudo pcs node standby node1.example.com
@ -290,9 +291,9 @@ $ sudo pcs status
![][11] ![][11]
完美,以上输出确认集群资源已从 node1 迁移到 node2。 完美,以上输出确认集群资源已从 `node1` 迁移到 `node2`
要从备用节点node1.example.com中删除节点运行以下命令 要从备用节点(`node1.example.com`)中删除节点,运行以下命令:
``` ```
$ sudo pcs node unstandby node1.example.com $ sudo pcs node unstandby node1.example.com
@ -302,6 +303,8 @@ $ sudo pcs node unstandby node1.example.com
以上就是这篇文章的全部内容,我希望你发现它提供了丰富的信息,请在下面的评论部分中发表你的疑问和反馈。 以上就是这篇文章的全部内容,我希望你发现它提供了丰富的信息,请在下面的评论部分中发表你的疑问和反馈。
*题图MJ/3bf8c775-72ed-4e44-a28d-c872c7c8632f*
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
via: https://www.linuxtechi.com/high-availability-apache-cluster-on-rhel/ via: https://www.linuxtechi.com/high-availability-apache-cluster-on-rhel/
@ -309,7 +312,7 @@ via: https://www.linuxtechi.com/high-availability-apache-cluster-on-rhel/
作者:[Pradeep Kumar][a] 作者:[Pradeep Kumar][a]
选题:[lkxed][b] 选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi) 译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -326,4 +329,5 @@ via: https://www.linuxtechi.com/high-availability-apache-cluster-on-rhel/
[9]: https://www.linuxtechi.com/wp-content/uploads/2016/02/Curl-Command-Access-Apache-VIP.png [9]: https://www.linuxtechi.com/wp-content/uploads/2016/02/Curl-Command-Access-Apache-VIP.png
[10]: https://www.linuxtechi.com/wp-content/uploads/2016/02/HA-Apache-Page-RHEL.png [10]: https://www.linuxtechi.com/wp-content/uploads/2016/02/HA-Apache-Page-RHEL.png
[11]: https://www.linuxtechi.com/wp-content/uploads/2016/02/pcs-node-statndby-rhel.png [11]: https://www.linuxtechi.com/wp-content/uploads/2016/02/pcs-node-statndby-rhel.png
[12]: https://www.linuxtechi.com/wp-content/uploads/2016/02/pcs-node-unstandby-rhel.png [12]: https://www.linuxtechi.com/wp-content/uploads/2016/02/pcs-node-unstandby-rhel.png
[0]: https://img.linux.net.cn/data/attachment/album/202305/29/172810i24a4jppa4744avv.jpg