如何在 RHEL 9/8 上设置高可用性 Apache(HTTP)集群
发布时间 - 2023-06-09 00:00:00 点击率:次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.6node1.example.com192.168.1.7node2.example.com
2、安装高可用包 Pacemaker
在 RHEL 9/8 的默认包仓库中无法获取 Pacemaker 和其他必要的软件包。因此,我们必须启用高可用仓库。在两个节点上运行以下订阅管理器命令。
对于 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 passwd --stdin hacluster
执行以下命令在两台服务器上启动并启用集群服务:
$ sudo systemctl start pcsd.service$ sudo systemctl enable pcsd.service
5、创建高可用集群
使用 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.confSetHandler server-statusRequire local 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.htmlHigh 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
现在验证集群资源状态,运行:
$ 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
# apache
# 两台
# 器上
# 可用性
# 让我们
# 将其
# 身份验证
# 事不宜迟
# 互联网
# 很好
# 我在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
Bootstrap整体框架之CSS12栅格系统
Laravel Session怎么存储_Laravel Session驱动配置详解
轻松掌握MySQL函数中的last_insert_id()
Laravel如何处理CORS跨域请求?(配置示例)
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
开心动漫网站制作软件下载,十分开心动画为何停播?
Android利用动画实现背景逐渐变暗
详解阿里云nginx服务器多站点的配置
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
怎么用AI帮你为初创公司进行市场定位分析?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
如何快速生成可下载的建站源码工具?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
微信小程序 配置文件详细介绍
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
黑客如何通过漏洞一步步攻陷网站服务器?
长沙企业网站制作哪家好,长沙水业集团官方网站?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
Linux系统运维自动化项目教程_Ansible批量管理实战
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
如何确认建站备案号应放置的具体位置?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel中的withCount方法怎么高效统计关联模型数量
jQuery 常见小例汇总
Laravel如何实现API资源集合?(Resource Collection教程)
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Laravel如何实现一对一模型关联?(Eloquent示例)
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
制作公司内部网站有哪些,内网如何建网站?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
Laravel如何实现多对多模型关联?(Eloquent教程)
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
详解Android中Activity的四大启动模式实验简述
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
新三国志曹操传主线渭水交兵攻略
Laravel DB事务怎么使用_Laravel数据库事务回滚操作

