Linux Pacemaker 高可用集群配置与 Nginx 优化实战指南

发布时间:2026/7/26 6:04:18

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控制器实战解析

2026/7/26 6:04:18

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

AI审核技术如何提升检测报告质量与效率

AI审核技术如何提升检测报告质量与效率

2026/7/26 5:54:17

1. 从人工校对到质量治理:AI审核如何重塑检测行业检测报告审核这个看似传统的岗位,正在经历一场静悄悄的革命。作为一名在检测行业摸爬滚打多年的从业者,我亲眼见证了审核工作从纯人工校对到人机协同的转变过程。记得2018年我第一次接触IAChe…

AI Agent在金融资产定价中的技术架构与应用实践

AI Agent在金融资产定价中的技术架构与应用实践

2026/7/26 5:54:17

1. 智能资产定价的行业痛点与AI Agent的破局点金融市场的资产定价一直是量化投资领域的核心难题。传统定价模型如Black-Scholes、CAPM等虽然奠定了理论基础,但在实际应用中面临三大挑战:市场数据的非线性特征难以捕捉、多源异构数据的融合处理效率低下、…

数据中心液冷选型与验收:前20个工程问题及核对方法

数据中心液冷选型与验收:前20个工程问题及核对方法

2026/7/26 6:44:19

摘要本文以工程项目视角,整理数据中心液冷的20个基础问题,覆盖冷板、浸没、CDU、一次侧/二次侧、冷却液物性、材料兼容、过滤、循环和验收。文中不以单一TDS替代系统验证。正文数据中心液冷项目的技术风险,通常不来自某一个参数,而…

基于CNN的手势识别系统设计与游戏控制应用

基于CNN的手势识别系统设计与游戏控制应用

2026/7/26 6:44:19

1. 项目概述作为一名从事计算机视觉和深度学习领域多年的开发者,我最近完成了一个基于CNN的手势识别系统,并将其成功应用于游戏控制。这个项目不仅涵盖了深度学习模型的训练和优化,还实现了从理论到实际应用的完整闭环。在本文中,…

C++异步日志系统实现:双缓冲与生产者-消费者模型详解

C++异步日志系统实现:双缓冲与生产者-消费者模型详解

2026/7/26 6:44:19

1. 项目概述:为什么我们需要一个高效的异步日志系统?在C后端服务开发里,日志系统就像项目的“黑匣子”和“诊断仪”。它记录着程序运行的每一个关键时刻:用户请求、内部状态、错误异常、性能瓶颈。一个设计糟糕的日志系统&#xf…

语义通信:突破香农极限的下一代通信技术

语义通信:突破香农极限的下一代通信技术

2026/7/26 6:44:19

1. 香农极限与通信困境无线电频谱资源的稀缺性一直是通信领域无法回避的物理限制。在数字广播领域,这个限制表现得尤为突出。香农定理(CBlog2(1S/N))就像一道无法逾越的高墙,规定了在特定带宽(B)和信噪比&a…

生命坐标系统:基于神经可塑性的时间管理革命

生命坐标系统:基于神经可塑性的时间管理革命

2026/7/26 6:44:19

1. 项目背景与核心价值2026年这个时间节点很有意思——它既不是近在眼前的明天,也不是遥不可及的科幻未来。在这个数字化生存已成常态的时代,我们正经历着人类历史上最剧烈的注意力争夺战。每天平均150次的手机解锁、算法推荐的信息茧房、永远在线的社交…

OpenAI全家桶:GPT、Codex与DALL·E一体化开发实战

OpenAI全家桶:GPT、Codex与DALL·E一体化开发实战

2026/7/26 6:34:19

1. 项目背景与核心价值去年夏天当我第一次把GPT-3的API接入到本地开发环境时,就隐约感觉到AI辅助编程即将迎来爆发。如今OpenAI将三大核心能力(GPT自然语言处理、Codex代码生成、DALLE图像生成)整合到统一平台的战略举措,彻底验证…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…