当前位置:首页 > Ubuntu > 正文

构建高可用Web服务(Ubuntu高可用Web架构实战指南)

在当今互联网应用中,网站的稳定性和持续可用性至关重要。一旦服务器宕机,用户将无法访问服务,可能导致业务损失甚至品牌信誉受损。因此,搭建一套高可用Web架构成为运维和开发人员的必备技能。

本文将以 Ubuntu 系统为基础,手把手教你从零开始搭建一个具备负载均衡故障自动转移能力的高可用 Web 架构。即使你是 Linux 新手,也能轻松上手!

什么是高可用Web架构?

高可用Web架构(High Availability Web Architecture)是指通过冗余设计、自动故障检测与切换等机制,确保 Web 服务在部分组件失效时仍能正常运行的系统架构。核心目标是“永远在线”。

常见的实现方式包括:

  • 多台 Web 服务器部署相同应用(冗余)
  • 使用负载均衡器分发流量
  • 配置健康检查,自动剔除故障节点
  • 数据库主从复制或集群
构建高可用Web服务(Ubuntu高可用Web架构实战指南) Ubuntu高可用Web架构 高可用Web服务器 Ubuntu负载均衡 Web服务故障转移 第1张

本教程架构说明

我们将使用以下组件搭建最小可行的高可用 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.101192.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 集群)等,构建更强大的系统。