如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)集群
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)
/etc/hosts 檔案中新增下列項目:
192.168.1.6node1.example.com192.168.1.7node2.example.com
$ sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
pacemaker 套件:
$ sudo dnf install pcs pacemaker fence-agents-all -y
要允許防火牆中的高可用端口,請在每個節點上執行以下命令:
$ sudo firewall-cmd --permanent --add-service=high-availability$ sudo firewall-cmd --reload
hacluster 使用者設定密碼,執行下列
echo 指令:
$ echo "<Enter-Password>" | sudo passwd --stdin hacluster
$ sudo systemctl start pcsd.service$ sudo systemctl enable pcsd.service
pcs 指令對兩個節點進行驗證,從任何節點執行下列指令。在我的例子中,我在
node1 上運行它:
$ sudo pcs host auth node1.example.com node2.example.com
hacluster 用戶進行身份驗證。
pcs cluster setup 指令將兩個節點加入到集群,這裡我使用的叢集名稱為
http_cluster 。僅在
node1 上執行指令:
$ sudo pcs cluster setup http_cluster --start node1.example.com node2.example.com$ sudo pcs cluster enable --all
从任何节点验证初始集群状态:
$ sudo pcs cluster status
注意:在我们的实验室中,我们没有任何防护设备,因此我们将其禁用。但在生产环境中,强烈建议配置防护。
$ 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
将共享设备添加到集群第二个节点(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 <<-END > /etc/httpd/conf.d/status.conf<Location /server-status>SetHandler server-statusRequire local</Location>END'$
修改两个节点上的 /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
保存并退出文件。
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 <<-END >/var/www/html/index.html<html><body>High Availability Apache Cluster - Test Page </body></html>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
现在验证集群资源状态,运行:
$ sudo pcs status
很好,上面的输出显示所有资源都在 node1
上启动。
10、测试 Apache 集群
尝试使用 VIP(192.168.1.81)访问网页。
使用 curl
命令或网络浏览器访问网页:
$ curl http://192.168.1.81
或者
完美!以上输出确认我们能够访问我们高可用 Apache 集群的网页。
让我们尝试将集群资源从 node1
移动到 node2
,运行:
$ sudo pcs node standby node1.example.com$ sudo pcs status
完美,以上输出确认集群资源已从 node1
迁移到 node2
。
要从备用节点(node1.example.com
)中删除节点,运行以下命令:
$ sudo pcs node unstandby node1.example.com
以上是如何在 RHEL 9/8 上設定高可用性 Apache(HTTP)集群的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

要在 Apache 中設置 CGI 目錄,需要執行以下步驟:創建 CGI 目錄,如 "cgi-bin",並授予 Apache 寫入權限。在 Apache 配置文件中添加 "ScriptAlias" 指令塊,將 CGI 目錄映射到 "/cgi-bin" URL。重啟 Apache。

Apache 連接數據庫需要以下步驟:安裝數據庫驅動程序。配置 web.xml 文件以創建連接池。創建 JDBC 數據源,指定連接設置。從 Java 代碼中使用 JDBC API 訪問數據庫,包括獲取連接、創建語句、綁定參數、執行查詢或更新以及處理結果。

有 3 種方法可在 Apache 服務器上查看版本:通過命令行(apachectl -v 或 apache2ctl -v)、檢查服務器狀態頁(http://<服務器IP或域名>/server-status)或查看 Apache 配置文件(ServerVersion: Apache/<版本號>)。

當 Apache 80 端口被佔用時,解決方法如下:找出佔用該端口的進程並關閉它。檢查防火牆設置以確保 Apache 未被阻止。如果以上方法無效,請重新配置 Apache 使用不同的端口。重啟 Apache 服務。

如何查看 Apache 版本?啟動 Apache 服務器:使用 sudo service apache2 start 啟動服務器。查看版本號:使用以下方法之一查看版本:命令行:運行 apache2 -v 命令。服務器狀態頁面:在 Web 瀏覽器中訪問 Apache 服務器的默認端口(通常為 80),版本信息顯示在頁面底部。

如何在 Apache 中配置 Zend?在 Apache Web 服務器中配置 Zend Framework 的步驟如下:安裝 Zend Framework 並解壓到 Web 服務器目錄中。創建 .htaccess 文件。創建 Zend 應用程序目錄並添加 index.php 文件。配置 Zend 應用程序(application.ini)。重新啟動 Apache Web 服務器。

Apache 無法啟動,原因可能有以下幾點:配置文件語法錯誤。與其他應用程序端口衝突。權限問題。內存不足。進程死鎖。守護進程故障。 SELinux 權限問題。防火牆問題。軟件衝突。

要從 Apache 中刪除多餘的 ServerName 指令,可以採取以下步驟:識別並刪除多餘的 ServerName 指令。重新啟動 Apache 使更改生效。檢查配置文件驗證更改。測試服務器確保問題已解決。
