在当今互联网应用中,网站的稳定性和持续可用性至关重要。一旦服务器宕机,用户将无法访问服务,可能导致业务损失甚至品牌信誉受损。因此,搭建一套高可用Web架构成为运维和开发人员的必备技能。
本文将以 Ubuntu 系统为基础,手把手教你从零开始搭建一个具备负载均衡、故障自动转移能力的高可用 Web 架构。即使你是 Linux 新手,也能轻松上手!
什么是高可用Web架构?
高可用Web架构(High Availability Web Architecture)是指通过冗余设计、自动故障检测与切换等机制,确保 Web 服务在部分组件失效时仍能正常运行的系统架构。核心目标是“永远在线”。
常见的实现方式包括:
多台 Web 服务器部署相同应用(冗余) 使用负载均衡器分发流量 配置健康检查,自动剔除故障节点 数据库主从复制或集群
本教程架构说明
我们将使用以下组件搭建最小可行的高可用 Web 架构:
2 台 Ubuntu 22.04 服务器:作为 Web 应用服务器(Web1 和 Web2) 1 台 Ubuntu 22.04 服务器:作为负载均衡器(使用 HAProxy) Keepalived:为负载均衡器提供 VIP(虚拟 IP),实现故障转移最终效果:当 Web1 宕机,HAProxy 自动将流量转发到 Web2;若主负载均衡器宕机,备用负载均衡器会接管 VIP 继续服务。
第一步:准备 Web 服务器
在两台 Web 服务器上安装 Nginx 并部署简单网页:
# 在 Web1 和 Web2 上执行sudo apt updatesudo apt install nginx -y# 创建测试页面echo "<h2>Welcome to Web Server 1</h2>" | sudo tee /var/www/html/index.html# 注意:Web2 上改为 "Web Server 2"# 启动并设置开机自启sudo systemctl enable nginxsudo systemctl start nginx
完成后,分别访问两台服务器的 IP,应能看到不同的欢迎页面。
第二步:配置 HAProxy 负载均衡器
在负载均衡服务器上安装 HAProxy:
sudo apt updatesudo apt install haproxy -y
编辑配置文件
/etc/haproxy/haproxy.cfg,在末尾添加以下内容:
frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_backbackend http_back balance roundrobin server web1 192.168.1.101:80 check server web2 192.168.1.102:80 check
请将
192.168.1.101和
192.168.1.102替换为你实际的 Web 服务器内网 IP。
重启 HAProxy 使配置生效:
sudo systemctl restart haproxy
现在访问负载均衡器的 IP,刷新页面会看到内容在 Web1 和 Web2 之间轮换,说明负载均衡已生效。
第三步:使用 Keepalived 实现负载均衡器高可用
为了防止单点故障,我们部署两台 HAProxy 服务器,并用 Keepalived 提供一个虚拟 IP(VIP)。
在两台负载均衡服务器上安装 Keepalived:
sudo apt install keepalived -y
创建配置文件
/etc/keepalived/keepalived.conf:
主负载均衡器(LB1)配置:
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100/24 }}备用负载均衡器(LB2)配置:
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100/24 }}启动 Keepalived:
sudo systemctl enable keepalivedsudo systemctl start keepalived
现在,访问虚拟 IP
192.168.1.100即可访问你的高可用 Web 服务。即使 LB1 宕机,LB2 会在几秒内接管 VIP,服务不中断。
总结
通过本教程,你已经成功搭建了一个基于 Ubuntu 的高可用 Web 架构。该架构具备以下优势:
支持横向扩展(可增加更多 Web 服务器) 自动故障检测与切换 无单点故障 成本低,全部使用开源软件记住,Ubuntu高可用Web架构、高可用Web服务器、Ubuntu负载均衡 和 Web服务故障转移 是保障现代 Web 应用稳定运行的核心技术。掌握它们,你离专业运维工程师又近了一步!
建议在测试环境中反复练习,理解每个组件的作用。未来还可集成数据库高可用(如 MySQL MGR 或 Galera)、缓存层(Redis 集群)等,构建更强大的系统。
