Linux Pacemaker 高可用集群配置与 Nginx 优化实战指南
1. 概述Pacemaker 高可用核心逻辑Pacemaker 高可用配置的核心流程遵循一个清晰的逻辑链条建立集群基础配置节点互信与集群通信。初始化集群启动集群服务并完成基础配置如禁用 STONITH。定义与管理资源创建资源代理、设置约束规则与监控策略。实现故障转移最终达成节点故障时资源的自动迁移与恢复。本文将详细拆解从 Pacemaker 集群搭建、资源组管理到整合 iSCSI 共享存储、MariaDB 数据库以及后续 Nginx 平滑升级与并发优化的完整操作流程。2. Pacemaker 集群基础配置2.1 节点准备与互信配置主机名解析在所有节点如server5,server8的/etc/hosts文件中添加彼此的主机名与 IP 地址解析。配置 SSH 免密登录# 生成密钥对在 server5 上执行ssh-keygen# 将公钥拷贝到 server8ssh-copy-id server8配置 NTP 时间同步确保所有节点时间一致避免集群因时间差出现裂脑。2.2 安装与启动集群软件安装必要软件包yuminstall-ypacemaker pcs psmisc policycoreutils-python# 在另一节点 server8 上也执行安装sshserver8yum install -y pacemaker pcs psmisc policycoreutils-python启动并启用 pcsd 服务systemctlenable--nowpcsd.service在两台节点上均需执行。设置hacluster用户密码此密码用于集群节点间认证。echo123456|passwd--stdinhaclustersshserver8echo 123456 | passwd --stdin hacluster2.3 创建并启动集群节点认证pcs cluster auth server5 server8创建集群配置server5 server8要加入集群的两台主机名必须能够互相解析–name mycluster给集群起一个名字类似项目名称可自定义。pcs cluster setup--namemycluster server5 server8启动集群并设置自启pcs cluster start--allpcs clusterenable--all验证集群状态crm_verify-L-V# 验证配置pcs status# 查看集群状态-L 在本地检查不连接集群-V 输出详细验证信息Verbose禁用 STONITH在测试环境pcs propertysetstonith-enabledfalse将 Pacemaker 集群的全局属性 stonith-enabled 的值修改为 falsepcs status查看集群状态3. 资源管理实战3.1 创建虚拟 IP (VIP) 资源pcs resource create vip ocf:heartbeat:IPaddr2ip192.168.150.100opmonitorinterval30s参数说明vip资源名称。ocf:heartbeat:IPaddr2资源代理类型用于管理虚拟 IP。ip192.168.150.100要飘移的虚拟 IP 地址。op monitor interval30s每 30 秒监控一次资源状态。3.2 节点备用模式与故障转移模拟将节点设为备用该节点上的资源会被迁移到其他在线节点。pcsnodestandby server8执行后vip资源会从server8迁移到server5。恢复节点pcsnodeunstandby server83.3 创建 Apache 服务资源组创建 Apache 资源需提前安装httpd但不要手动启动pcs resource create WebSite systemd:httpdopmonitorinterval1min若资源创建后状态异常可清理失败计数pcs resource cleanup WebSite创建资源组发现资源不在一个主机强制vip和WebSite运行在同一节点pcs resource groupaddwebgroup vip WebSiteServer8失效可以用pcs node standby server5迁移3.4 删除集群资源# 从资源组中移除资源pcs resource group remove webgroup# 删除资源本身pcs resource delete ClusterIP pcs resource delete WebSite4. 整合 iSCSI 共享存储与 MariaDB4.1 配置 iSCSI 服务端Target添加新硬盘如/dev/sdb并安装targetcli。使用targetcli交互式配置# 1. 创建块存储后端cd/backstores/block create my_disk /dev/sdb# 2. 创建 iSCSI 目标cd/iscsi create iqn.2026-07.com.example:storage1# 3. 创建 LUNcd/iscsi/iqn.2026-07.com.example:storage1/tpg1/luns create /backstores/block/my_disk# 4. 设置 ACL访问控制cd/iscsi/iqn.2026-07.com.example:storage1/tpg1/acls create iqn.2026-07.com.example:client4.2 配置 iSCSI 客户端Initiator在两台集群节点上安装客户端工具yuminstall-yiscsi-initiator-utils.x86_64配置 Initiator 名称与 ACL 匹配# 编辑 /etc/iscsi/initiatorname.iscsiInitiatorNameiqn.2026-07.com.example:client发现并登录存储# 发现目标iscsiadm-mdiscovery-tst-p192.168.150.140# 登录所有已发现目标iscsiadm-mnode-l4.3 在节点上准备数据库存储以server5为例server8操作类似。分区与格式化fdisk/dev/sdb# 创建分区如 /dev/sdb1mkfs.xfs /dev/sdb1安装 MariaDB 并挂载共享存储yuminstall-ymariadb-servermount/dev/sdb1 /var/lib/mysql/chownmysql.mysql /var/lib/mysql/# 先挂载再修改属主systemctl start mariadb.service测试后卸载为切换到另一节点准备systemctl stop mariadb.serviceumount/var/lib/mysql在server8上yuminstall-yiscsi-initiator-utils.x86_64vim/etc/iscsi/initiatorname.iscsiInitiatorNameiqn.2026-07.com.example:client iscsiadm-mdiscovery-tst-p192.168.36.174 iscsiadm-mnode-lyuminstall-ymariadb-servermount/dev/sdb1 /var/lib/mysql/测试完关闭mysql然后卸载存储4.4 创建高可用的数据库资源组整合iscsi存储和mariadb数据库# 1. 创建虚拟 IP 资源pcs resource create vip ocf:heartbeat:IPaddr2ip192.168.150.100opmonitorinterval30s# 2. 创建共享文件系统资源pcs resource create iscsidb ocf:heartbeat:Filesystemdevice/dev/sdb1directory/var/lib/mysqlfstypexfsopmonitorinterval1min# 3. 创建 MariaDB 服务资源pcs resource create mariadb systemd:mariadbopmonitorinterval1min# 4. 将三个资源绑定成组确保顺序启动vip - iscsidb - mariadbpcs resource groupadddbgroup vip iscsidb mariadb资源组保证了三个资源始终运行在同一节点并按指定顺序启动和停止。配置数据库远程访问权限GRANTALLON*.*TOroot%IDENTIFIEDBYpassword;flushprivileges;pcs node standby设置备用模式观察发现切换了rspcs node unstandby又切换回来5. Nginx 进阶配置与优化5.1 Nginx 平滑升级与版本隐藏编译前关闭调试模式编辑nginx-1.30.4/auto/cc/gcc找到-g选项并注释或删除。编译新版本tarzxf nginx-1.30.4.tar.gzcdnginx-1.30.4 ./configure --with-http_ssl_module --with-http_stub_status_modulemake# 不要 make install替换二进制并平滑升级cd/usr/local/nginx/sbin/cpnginx nginx.bakcp-f../../nginx-1.30.4/objs/nginx ./psax|grepnginx#获取当前主程序pidkill-USR2cat/usr/local/nginx/logs/nginx.pid# 启动新主进程kill-WINCHcat/usr/local/nginx/logs/nginx.pid.oldbin# 优雅关闭旧 worker 进程发现出错cd /usr/local/nginx/sbincp -f nginx.bak nginx备份的文件拷贝回去关掉nginx重新做一遍刚刚的程序即可但是有时候访问会到旧版本因为旧版本进程保留了关闭原worker进程但保留主进程为了回退kill -WINCH 11551kill -QUIT 11551可以关闭主进程4.版本回退如需bash cp -f nginx.bak nginx # 还原旧程序 kill -HUP cat /usr/local/nginx/logs/nginx.pid.oldbin # 重载旧配置 kill -WINCH cat /usr/local/nginx/logs/nginx.pid # 关闭新 worker kill -QUIT cat /usr/local/nginx/logs/nginx.pid # 退出新主进程5.隐藏 Nginx 版本号bash cd nginx-1.30.4 vim src/core/nginx.h # 修改 NGINX_VERSION 等宏定义 make clean ./configure ... make cp -f objs/nginx /usr/local/nginx/sbin/nginx关掉进程重启nginx版本隐藏5.2 nginx并发优化调整系统文件句柄数# 查看当前限制sysctl-a|grepfileulimit-a修改系统全局限制/etc/sysctl.conffs.file-max 188414 net.ipv4.ip_local_port_range 1024 65535 net.core.somaxconn 2048 net.ipv4.tcp_tw_recycle 1 net.ipv4.tcp_tw_reuse 1执行sysctl -p生效。配置写入文件可生效Linux下高并发socket最大连接数所受的各种限制▫ 修改用户进程可打开文件数限制/etc/security/limits.confnginx - nofile 65535▫ Linux系统级的最大打开文件数限制fs.file-max 188414 //和内存容量相关▫ 修改网络内核对TCP连接的有关限制net.ipv4.ip_local_port_range 1024 65535▫ 限制接收新 TCP 连接侦听队列的大小net.core.somaxconn 2048▫ 启用tcp连接timewait快速回收和重用net.ipv4.tcp_tw_recycle 1net.ipv4.tcp_tw_reuse 1修改用户进程限制/etc/security/limits.conf提高当前会话的 open files 限制nginx - nofile 655355.3 创建专用 Nginx 用户useradd-M-d/usr/local/nginx/ nginxusermod-s/sbin/nologin nginx在nginx.conf中设置user nginx;然后重启服务。使 worker 进程以 nginx 用户运行重启生效nginx -s stop nginx -t nginxps aux | grep nginx | grep -v grep5.4 配置 Nginx 负载均衡定义上游服务器池nginx.conf的http块内upstream my_app { server 192.168.150.138:80; server 192.168.150.140:80 weight1; # 默认使用轮询 (rr) 算法 }在server块中代理请求server { listen 80; server_name www.westos.org; location / { proxy_pass http://my_app; } }检查语法并重载nginx-tnginx-sreload客户端测试在测试机配置主机解析将域名www.westos.org写入server5的解析后面使用curl www.westos.org或ab工具测试。5.5 使用 ab 进行压力测试ab-n1000-c100http://your_server_ip/

相关新闻

ARM Cortex-M4异常处理与μDMA控制器实战解析

ARM Cortex-M4异常处理与μDMA控制器实战解析

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM Cortex-M系列处理器的项目中,异常处理和直接内存访问(DMA)是决定系统稳定性和性能上限的两大基石。很多开发者,尤其是从应用层转向底层或从单片机入门的朋友&…

2026/7/26 6:04:31阅读更多 →
AI原生应用开发:思维框架与工程实践指南

AI原生应用开发:思维框架与工程实践指南

1. 项目概述:AI原生应用的本质与思维框架价值AI原生应用正在重塑我们解决问题的方式。与传统的"AI赋能"模式不同,原生应用从设计之初就将AI作为核心架构要素,这意味着我们需要全新的思维框架来驾驭这种变革。我在过去三年参与过12个…

2026/7/26 6:04:31阅读更多 →
局域网通信原理 --- IP与MAC与ARP与交换机(更新)

局域网通信原理 --- IP与MAC与ARP与交换机(更新)

在这部分能学到,今天学的比较多网络参考模型复习OSI七层TCP/IP模型每层负责什么IP与MAC的角色区别IP:网络层逻辑地址,负责定位主机MAC:数据链路层物理地址,负责局域网传输ARP协议为什么知道IP还需要MACARP如何连接网络…

2026/7/26 6:04:31阅读更多 →
AI Agent 面试题 589:如何设计RAG系统的查询理解和改写模块?

AI Agent 面试题 589:如何设计RAG系统的查询理解和改写模块?

🔥 AI Agent 面试题 589:如何设计RAG系统的查询理解和改写模块?摘要:本文深入解析了「如何设计RAG系统的查询理解和改写模块?」这一 AI Agent 领域的核心面试题。文章从 检索增强生成原理 的基本概念出发,系…

2026/7/26 9:51:11阅读更多 →
YOLO标注无人机遥感图像在茶叶病害检测中的应用

YOLO标注无人机遥感图像在茶叶病害检测中的应用

1. 数据集背景与应用价值 这个基于YOLO标注格式的无人机遥感图像茶叶病害检测数据集,是农业智能化领域的重要基础设施。我在参与某省智慧农业项目时,深刻体会到优质标注数据对于茶叶病害识别模型性能的决定性影响。传统人工巡检方式需要农技人员步行数公…

2026/7/26 9:51:11阅读更多 →
VC++开发中LNK1168错误:文件被占用的原理与解决方案

VC++开发中LNK1168错误:文件被占用的原理与解决方案

1. 项目概述:当链接器告诉你“文件被占用”在Windows平台上用Visual C(VC)进行开发,尤其是调试阶段,LINK : fatal error LNK1168: cannot open Debug/Menu.exe for writing这个报错,几乎可以算作是每个C开发…

2026/7/26 9:51:11阅读更多 →
双架构容器镜像构建指南:BuildKit实战与优化

双架构容器镜像构建指南:BuildKit实战与优化

1. 为什么需要双架构容器镜像在容器化部署的实际场景中,我们经常会遇到一个棘手的问题:开发环境和生产环境的CPU架构不一致。比如开发团队普遍使用x86架构的MacBook或Windows笔记本,而生产服务器可能是基于ARM架构的AWS Graviton实例。传统做…

2026/7/26 9:51:11阅读更多 →
Docker Compose部署GitLab全攻略:从入门到生产级实践

Docker Compose部署GitLab全攻略:从入门到生产级实践

1. 为什么选择Docker Compose部署GitLab 十年前我第一次搭建GitLab时,光环境配置就折腾了两天。如今用Docker Compose方案,从零到可用只需要15分钟。这种部署方式之所以成为主流,核心在于它完美解决了传统部署的三大痛点: 依赖地…

2026/7/26 9:51:11阅读更多 →
深入理解Cortex-M NVIC寄存器:从原理到实战避坑指南

深入理解Cortex-M NVIC寄存器:从原理到实战避坑指南

1. 从手册到实战:为什么我们需要深入理解NVIC寄存器 搞嵌入式开发,尤其是基于ARM Cortex-M内核的,中断绝对是绕不开的核心话题。无论是处理一个按键、接收一帧串口数据,还是响应一个定时器溢出,背后都是中断在驱动。很…

2026/7/26 9:49:10阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →