使用 Keepalived 和 Nginx 实现 Web 高可用

在现代互联网环境中,高可用性是保障服务持续运行的核心要求之一。通过使用负载均衡器和故障转移机制,可以有效提高系统的可用性,减少停机时间。本文将介绍如何使用 Keepalived 和 Nginx 实现 Web 高可用性。

一、环境准备

首先,你需要至少两台服务器。在这两台服务器上安装 Nginx 和 Keepalived。以 Ubuntu 系统为例,安装命令如下:

sudo apt update
sudo apt install nginx keepalived

二、配置 Nginx

在每台服务器上配置 Nginx,使其能够服务于相同的 Web 页面。在默认配置的基础上,我们可以在 /etc/nginx/sites-available/default 中设置一个简单的静态页面。例如,修改如下:

server {
    listen 80;
    server_name your_domain.com;

    location / {
        root /var/www/html; # 确保该目录存在且有 index.html 文件
        index index.html index.htm;
    }
}

创建一个简单的 index.html 页面供访问:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to Nginx</title>
</head>
<body>
    <h1>Hello, Nginx!</h1>
</body>
</html>

随后重启 Nginx:

sudo systemctl restart nginx

三、配置 Keepalived

在两台服务器上配置 Keepalived,实现高可用性。以下是 Keepalived 的配置示例。

  1. 主服务器(Master)配置

编辑 /etc/keepalived/keepalived.conf 文件,输入如下内容:

bash vrrp_instance VI_1 { state MASTER interface eth0 # 网络接口,根据实际情况修改 virtual_router_id 51 priority 100 # 主服务器的优先级 advert_int 1 authentication { auth_type PASS auth_pass your_password # 设置一个密码 } virtual_ipaddress { 192.168.1.100 # 虚拟 IP 地址 } }

  1. 备份服务器(BACKUP)配置

备份服务器的 /etc/keepalived/keepalived.conf 文件配置如下:

bash vrrp_instance VI_1 { state BACKUP interface eth0 # 网络接口 virtual_router_id 51 priority 90 # 备份服务器的优先级 advert_int 1 authentication { auth_type PASS auth_pass your_password # 必须与主服务器一致 } virtual_ipaddress { 192.168.1.100 # 与主服务器相同 } }

四、启动 Keepalived

在两台服务器上启动 Keepalived:

sudo systemctl start keepalived
sudo systemctl enable keepalived

同时可以检查其状态:

sudo systemctl status keepalived

五、测试高可用性

确保一切配置正常后,你应该能够通过 192.168.1.100(虚拟 IP 地址)访问 Nginx 服务。接下来,可以试着关闭主服务器上的 Nginx 或者 Keepalived 服务,观察备份服务器是否能够自动接管。

关闭主服务器的 Nginx:

sudo systemctl stop nginx

此时,访问 192.168.1.100 应该会自动切换到备份服务器的 Nginx 服务。

六、总结

通过上面的配置,我们成功搭建了一个基于 Keepalived 和 Nginx 的高可用 Web 服务。这种架构能够有效避免单点故障,提高系统的可靠性。在实际生产环境中,还可以结合其他监控和管理工具,进一步增强系统的稳定性与可维护性。希望本文能对你有所帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部