在Linux系统中部署高可用架构的核心目标是消除单点故障,让业务服务在部分节点出现问题时仍能正常运行。常见的高可用架构通常包含负载均衡层、应用服务层和数据存储层三个部分,每层通过主备或多节点冗余的方式实现故障自动切换。

高可用架构设计思路
高可用架构的实现依赖三个核心机制:冗余部署、状态检测、自动切换。冗余部署指同一服务至少部署两个节点,分为主节点和备节点;状态检测通过脚本或工具定时检查主节点的服务运行状态;自动切换则是当主节点故障时,备节点自动接管服务,整个过程对业务侧无感知。
常用组件选型
- 负载均衡层:使用Keepalived搭配Nginx,Keepalived负责虚拟IP的漂移和节点健康检查,Nginx负责流量分发
- 应用服务层:多节点部署相同的应用服务,通过负载均衡层分发请求
- 数据存储层:使用MySQL主从复制搭配MHA实现数据库的高可用
负载均衡层部署步骤
首先准备两台Linux服务器,分别作为Keepalived的主节点和备节点,两台节点都安装Nginx和Keepalived。
安装依赖组件
在两台节点执行以下命令安装所需软件:
# 安装Nginx yum install -y nginx # 安装Keepalived yum install -y keepalived
配置Keepalived主节点
修改主节点的Keepalived配置文件/etc/keepalived/keepalived.conf,内容如下:
global_defs {
router_id nginx_master
}
vrrp_script check_nginx {
script "/usr/local/bin/check_nginx.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.100
}
track_script {
check_nginx
}
}
配置Keepalived备节点
备节点的配置文件和主节点类似,仅需要修改router_id为nginx_backup,state为BACKUP,priority设置为比主节点小的数值,例如90。
编写Nginx状态检测脚本
创建检测脚本/usr/local/bin/check_nginx.sh,用于定时检查Nginx是否运行:
#!/bin/bash
# 检查Nginx进程是否存在
count=`ps -ef | grep nginx | grep -v grep | wc -l`
if [ $count -eq 0 ]; then
# 若Nginx未运行,尝试启动
systemctl start nginx
sleep 2
# 再次检查,若仍无法启动则关闭Keepalived触发切换
count=`ps -ef | grep nginx | grep -v grep | wc -l`
if [ $count -eq 0 ]; then
systemctl stop keepalived
fi
fi
给脚本添加执行权限:
chmod +x /usr/local/bin/check_nginx.sh
启动服务
两台节点分别启动Nginx和Keepalived服务,并设置开机自启:
systemctl start nginx systemctl start keepalived systemctl enable nginx systemctl enable keepalived
此时虚拟IP 192.168.0.100会绑定在主节点的网卡上,访问该IP会转发到Nginx服务。当主节点故障时,虚拟IP会自动漂移到备节点,实现负载均衡层的高可用。
应用服务层部署
应用服务层可以部署多个相同的应用节点,例如Tomcat、Java应用等,在Nginx的配置文件中添加 upstream 配置实现负载均衡:
http {
upstream app_server {
server 192.168.0.101:8080;
server 192.168.0.102:8080;
server 192.168.0.103:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
修改Nginx配置后执行nginx -s reload重载配置,此时流量会被分发到三个应用节点,单个应用节点故障不会影响整体服务。
数据存储层高可用部署
以MySQL为例,采用主从复制加MHA(Master High Availability)的方案实现高可用。首先配置MySQL主从复制,主库开启binlog,从库同步主库数据,然后部署MHA管理节点,监控主库状态,当主库故障时自动将从库提升为主库。
配置MySQL主从复制
主库配置文件/etc/my.cnf添加以下内容:
[mysqld] server-id=1 log-bin=mysql-bin binlog_format=row
从库配置文件添加:
[mysqld] server-id=2 relay-log=relay-bin read-only=1
重启主从库的MySQL服务后,在主库创建同步账号,从库配置同步主库的信息,启动同步进程即可完成主从复制配置。
部署MHA
在所有MySQL节点和管理节点安装MHA依赖包,配置管理节点的配置文件,指定主库和从库的信息,启动MHA管理进程。当主库故障时,MHA会自动检测并完成主从切换,整个过程不需要人工干预。
高可用架构验证
完成所有组件部署后,可以通过以下方式验证高可用效果:
- 访问虚拟IP 192.168.0.100,确认能正常返回应用响应
- 关闭主节点的Keepalived服务,确认虚拟IP漂移到备节点,访问服务不受影响
- 关闭其中一个应用节点,确认流量仅分发到剩余的正常节点
- 关闭MySQL主库,确认MHA自动将从库提升为主库,应用数据读写正常
通过以上步骤,即可在Linux系统中完成一套完整的高可用架构部署,保障业务服务的稳定运行。
Linux高可用架构KeepalivedNginxMySQL修改时间:2026-06-11 03:12:39