天天看點

系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

作者:硬核老王
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集
在本文中,我們将介紹如何在 RHEL 9/8 上使用 Pacemaker 設定兩節點高可用性 Apache 叢集。

Pacemaker 是适用于類 Linux 作業系統的高可用性叢集軟體。Pacemaker 被稱為“叢集資料總管”,它通過在叢集節點之間進行資源故障轉移來提供叢集資源的最大可用性。Pacemaker 使用 Corosync 進行叢集元件之間的心跳和内部通信,Corosync 還負責叢集中的投票選舉(Quorum)。

先決條件

在我們開始之前,請確定你擁有以下内容:

  • 兩台 RHEL 9/8 伺服器
  • Red Hat 訂閱或本地配置的倉庫
  • 通過 SSH 通路兩台伺服器
  • root 或 sudo 權限
  • 網際網路連接配接

實驗室詳情:

  • 伺服器 1:node1.example.com(192.168.1.6)
  • 伺服器 2:node2.exaple.com(192.168.1.7)
  • VIP:192.168.1.81
  • 共享磁盤:

    /dev/sdb

    (2GB)

事不宜遲,讓我們深入了解這些步驟。

1、更新 /etc/hosts 檔案

在兩個節點上的

/etc/hosts

檔案中添加以下條目:

192.168.1.6  node1.example.com
192.168.1.7  node2.example.com
           

2、安裝高可用包 Pacemaker

Pacemaker 和其他必需的包在 RHEL 9/8 的預設包倉庫中不可用。是以,我們必須啟用高可用倉庫。在兩個節點上運作以下訂閱管理器指令。

對于 RHEL 9 伺服器:

$ sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
           

對于 RHEL 8 伺服器:

$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
           

啟用倉庫後,運作指令在兩個節點上安裝

pacemaker

包:

$ sudo dnf install pcs pacemaker fence-agents-all -y
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

3、在防火牆中允許高可用端口

要允許防火牆中的高可用端口,請在每個節點上運作以下指令:

$ sudo firewall-cmd --permanent --add-service=high-availability
$ sudo firewall-cmd --reload
           

4、為 hacluster 使用者設定密碼并啟動 pcsd 服務

在兩台伺服器上為

hacluster

使用者設定密碼,運作以下

echo

指令:

$ echo "           

執行以下指令在兩台伺服器上啟動并啟用叢集服務:

$ sudo systemctl start pcsd.service
$ sudo systemctl enable pcsd.service
           

5、建立高可用叢集

使用

pcs

指令對兩個節點進行身份驗證,從任何節點運作以下指令。在我的例子中,我在

node1

上運作它:

$ sudo pcs host auth node1.example.com node2.example.com
           

使用

hacluster

使用者進行身份驗證。

系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

使用下面的

pcs cluster setup

指令将兩個節點添加到叢集,這裡我使用的叢集名稱為

http_cluster

。僅在

node1

上運作指令:

$ sudo pcs cluster setup http_cluster --start node1.example.com node2.example.com
$ sudo pcs cluster enable --all
           

這兩個指令的輸出如下所示:

系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

從任何節點驗證初始叢集狀态:

$ sudo pcs cluster status
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

注意:在我們的實驗室中,我們沒有任何防護裝置,是以我們将其禁用。但在生産環境中,強烈建議配置防護。

$ sudo pcs property set stonith-enabled=false
$ sudo pcs property set no-quorum-policy=ignore
           

6、為叢集配置共享卷

在伺服器上,挂載了一個大小為 2GB 的共享磁盤(

/dev/sdb

)。是以,我們将其配置為 LVM 卷并将其格式化為 XFS 檔案系統。

在開始建立 LVM 卷之前,編輯兩個節點上的

/etc/lvm/lvm.conf

檔案。

将參數

#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
           

node1

上依次執行以下一組指令建立 LVM 卷:

$ sudo pvcreate /dev/sdb
$ sudo vgcreate --setautoactivation n vg01 /dev/sdb
$ sudo lvcreate -L1.99G -n lv01 vg01
$ sudo lvs /dev/vg01/lv01
$ sudo mkfs.xfs /dev/vg01/lv01
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

将共享裝置添加到叢集第二個節點(

node2.example.com

)上的 LVM 裝置檔案中,僅在

node2

上運作以下指令:

[sysops@node2 ~]$ sudo lvmdevices --adddev /dev/sdb
           

7、安裝和配置 Apache Web 伺服器(httpd)

在兩台伺服器上安裝 Apache web 伺服器(httpd),運作以下

dnf

指令:

$ sudo dnf install -y httpd wget
           

并允許防火牆中的 Apache 端口,在兩台伺服器上運作以下

firewall-cmd

指令:

$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --reload
           

在兩個節點上建立

status.conf

檔案,以便 Apache 資源代理擷取 Apache 的狀态:

$ sudo bash -c 'cat  /etc/httpd/conf.d/status.conf
           

修改兩個節點上的

/etc/logrotate.d/httpd

替換下面的行

/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
           

/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null &&
/usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null &&
/usr/sbin/httpd -f /etc/httpd/conf/httpd.conf \
-c "PidFile /run/httpd.pid" -k graceful > /dev/null 2>/dev/null || true
           

儲存并退出檔案。

系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

8、為 Apache 建立一個示例網頁

僅在

node1

上執行以下指令:

$ sudo lvchange -ay vg01/lv01
$ sudo mount /dev/vg01/lv01 /var/www/
$ sudo mkdir /var/www/html
$ sudo mkdir /var/www/cgi-bin
$ sudo mkdir /var/www/error
$ sudo bash -c ' cat /var/www/html/index.html

High Availability Apache Cluster - Test Page 

END'
$
$ sudo umount /var/www
           

注意:如果啟用了 SElinux,則在兩台伺服器上運作以下指令:

$ sudo restorecon -R /var/www
           

9、建立叢集資源和資源組

為叢集定義資源組和叢集資源。在我的例子中,我們使用

webgroup

作為資源組。

  • web_lvm

    是共享 LVM 卷的資源名稱(

    /dev/vg01/lv01

  • web_fs

    是将挂載在

    /var/www

    上的檔案系統資源的名稱
  • VirtualIP

    是網卡

    enp0s3

    的 VIP(

    IPadd2

    )資源
  • Website

    是 Apache 配置檔案的資源。

從任何節點執行以下指令集。

$ sudo pcs resource create web_lvm ocf:heartbeat:LVM-activate vgname=vg01 vg_access_mode=system_id --group webgroup
$ sudo pcs resource create web_fs Filesystem device="/dev/vg01/lv01" directory="/var/www" fstype="xfs" --group webgroup
$ sudo pcs resource create VirtualIP IPaddr2 ip=192.168.1.81 cidr_netmask=24 nic=enp0s3 --group webgroup
$ sudo pcs resource create Website apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group webgroup
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

現在驗證叢集資源狀态,運作:

$ sudo pcs status
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

很好,上面的輸出顯示所有資源都在

node1

上啟動。

10、測試 Apache 叢集

嘗試使用 VIP(192.168.1.81)通路網頁。

使用

curl

指令或網絡浏覽器通路網頁:

$ curl http://192.168.1.81
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

或者

系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

完美!以上輸出确認我們能夠通路我們高可用 Apache 叢集的網頁。

讓我們嘗試将叢集資源從

node1

移動到

node2

,運作:

$ sudo pcs node standby node1.example.com
$ sudo pcs status
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

完美,以上輸出确認叢集資源已從

node1

遷移到

node2

要從備用節點(

node1.example.com

)中删除節點,運作以下指令:

$ sudo pcs node unstandby node1.example.com
           
系統運維 | 如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)叢集

以上就是這篇文章的全部内容,我希望你發現它提供了豐富的資訊,請在下面的評論部分中發表你的疑問和回報。

(題圖:MJ/3bf8c775-72ed-4e44-a28d-c872c7c8632f)

via: https://www.linuxtechi.com/high-availability-apache-cluster-on-rhel/

作者:Pradeep Kumar選題:lkxed譯者:geekpi校對:wxy

本文由 LCTT原創編譯,Linux中國榮譽推出