使用 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 的配置示例。
- 主服务器(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 地址
}
}
- 备份服务器(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 服务。这种架构能够有效避免单点故障,提高系统的可靠性。在实际生产环境中,还可以结合其他监控和管理工具,进一步增强系统的稳定性与可维护性。希望本文能对你有所帮助!