第二十三节:企业级 Linux 运维实战项目:构建高可用 Web 服务
在本节,我们将以构建一个高可用、高性能的 Web 服务架构为目标,梳理企业实际运维流程与技术栈。项目涵盖环境搭建、服务部署、负载均衡、故障转移、监控告警等关键环节,适合作为运维岗位面试与实战入门参考。
一、项目目标与技术栈
✅ 项目目标
构建一个支持多节点、高可用性的 Web 服务系统,满足以下需求:
- 高可用:即使部分节点故障,服务不间断;
- 高并发:支持大量请求的分发;
- 易维护:运维可快速定位问题;
- 可监控:系统状态实时可见。
🛠️ 技术选型
类别 | 技术/工具 |
---|---|
操作系统 | CentOS 7 / Rocky Linux 9 |
Web 服务 | Nginx + PHP / Python |
应用部署 | Git + Supervisor / Systemd |
数据存储 | MySQL / Redis |
负载均衡 | HAProxy / Nginx |
高可用 | Keepalived |
监控告警 | Prometheus + Grafana + Node Exporter |
日志采集 | Filebeat + ELK / Loki |
二、系统架构设计
用户请求
│
┌▼──────────────────────┐
│ Keepalived + HAProxy │ ← 高可用+负载均衡
└▲────────────┬─────────┘
│ │
▼ ▼
Web01 Web02 ← 多个 Nginx 应用服务器
│ │
▼ ▼
App01 App02 ← PHP/Python 后端应用
│ │
▼ ▼
DB01(MySQL主) ↔ DB02(MySQL从) ← 数据复制
│
▼
Redis(缓存)/ 文件存储
三、关键部署步骤
1️⃣ 安装 Web 服务
yum install nginx php php-fpm -y
systemctl enable nginx && systemctl start nginx
配置虚拟主机 /etc/nginx/conf.d/web.conf
:
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://127.0.0.1:9000;
}
}
2️⃣ 设置应用服务 Supervisor 管理(如 Flask 应用)
[program:flaskapp]
command=python3 /opt/app/app.py
autostart=true
autorestart=true
stderr_logfile=/var/log/flask.err.log
stdout_logfile=/var/log/flask.out.log
3️⃣ 配置 HAProxy + Keepalived(实现双机热备+负载均衡)
HAProxy 配置 /etc/haproxy/haproxy.cfg
:
frontend http_front
bind *:80
default_backend web_servers
backend web_servers
balance roundrobin
server web01 192.168.1.10:80 check
server web02 192.168.1.11:80 check
Keepalived 配置 /etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress {
192.168.1.100
}
}
4️⃣ MySQL 主从复制部署(简略步骤)
– 主库配置 my.cnf 添加
server-id=1
log-bin=mysql-bin
– 从库配置
server-id=2
relay-log=relay-log-bin
– 在主库授权
GRANT REPLICATION SLAVE ON . TO ‘repl’@‘%’ IDENTIFIED BY ‘password’;
5️⃣ 部署 Prometheus + Grafana 监控
安装 Node Exporter 监控主机指标:
wget https://github.com/prometheus/node_exporter/releases
./node_exporter &
配置 Prometheus prometheus.yml
:
scrape_configs:
- job_name: 'linux_servers'
static_configs:
- targets: ['192.168.1.10:9100', '192.168.1.11:9100']
Grafana 中添加数据源为 Prometheus,导入 Dashboard 即可。
四、自动化脚本与优化建议
- 编写部署脚本(Shell/Ansible),提升效率;
- 加入日志轮转、定时备份、邮件告警等;
- 通过
top
、iotop
、netstat
进行性能调优; - Nginx 配置连接数限制、gzip 压缩、缓存机制;
- 使用 Fail2ban 配置防暴力破解与防火墙策略。
五、总结与思考
- 实战项目中,稳定性 > 新技术;
- 先理解架构逻辑,再动手搭建;
- 运维即 DevOps,配置即代码;
- 熟悉监控、告警、故障转移流程,是合格运维的标配。