使用keepalived配置nginx双机热备指南

2 下载量 169 浏览量 更新于2024-08-28 收藏 491KB PDF 举报
"本文主要介绍了如何使用keepalived进行nginx的双机热备配置,以确保线上服务的高可用性。通过在两台CentOS服务器上安装keepalived,并设置虚拟IP,当主服务器出现问题时,流量将自动切换到备用服务器,保持服务不间断。" 在部署高可用的网络服务时,keepalived是一个常用工具,它提供了健康检查和故障转移功能,常与Nginx等Web服务器配合使用。Nginx作为反向代理,能够分发请求到多个后端服务器,而keepalived则负责监控这些服务器的状态,确保服务的稳定性和连续性。 首先,我们需要准备两台CentOS服务器,例如192.168.0.105和192.168.0.118,并设置一个虚拟IP(VIP)192.168.0.119,这将是对外提供服务的IP地址。当一台服务器出现故障时,VIP会自动漂移到另一台正常运行的服务器,保证服务不中断。 接下来,要在两台服务器上安装keepalived。对于CentOS系统,可以使用`yum install keepalived`命令来安装。 配置keepalived的关键在于编写`/etc/keepalived/keepalived.conf`文件。其中,可以定义健康检查的脚本,例如上述示例中的一个简单HTTP检查脚本。该脚本会尝试访问本地的81端口,如果连续两次请求返回状态不是200,脚本会认为Nginx服务出现问题,关闭当前的keepalived实例,将VIP转移到另一台服务器。 在主服务器(如192.168.0.118)的配置文件中,通常会包含一个虚拟路由(Virtual Router,VRID)和虚拟IP的定义,以及设置为主节点的优先级。在从服务器(如192.168.0.105)的配置文件中,设置较低的优先级,表示在正常情况下不会接管VIP,除非主服务器失效。 例如,118机器的配置可能如下: ```conf ! Configuration File for keepalived vrrp_script check_nginx { script "/etc/keepalived/check_nginx.sh" # 检查脚本路径 interval 2 # 检查间隔(秒) weight -5 # 状态异常时,降低优先级 } vrrp_instance VI_1 { state MASTER # 设置为主节点 interface eth0 # 使用的网络接口 virtual_router_id 51 # VRID,必须在两台服务器上一致 priority 101 # 主节点的优先级 advert_int 1 # 发送VRRP包的间隔 virtual_ipaddress { 192.168.0.119/24 # 虚拟IP } track_script { check_nginx # 引用健康检查脚本 } } ``` 105机器的配置类似,但`state`设为`BACKUP`,`priority`设为较低值,如100。 配置完成后,重启keepalived服务以应用更改。在105和118上分别执行`systemctl restart keepalived`。现在,当主服务器118的Nginx服务出现故障时,VIP会自动切换到105,保持服务的正常运行。 总结来说,使用keepalived进行Nginx双机热备的配置涉及到以下几个关键点: 1. 安装keepalived服务 2. 编写健康检查脚本 3. 配置keepalived.conf文件,包括虚拟路由、优先级、健康检查和虚拟IP 4. 分别在主、从服务器上设置不同状态和优先级 5. 监控并测试故障转移功能 理解并掌握这些步骤,可以有效地提升线上服务的可靠性,减少因单点故障导致的服务中断。同时,了解和实践传统的双机热备方法也有助于理解现代容器化集群管理工具,如Docker Swarm或Kubernetes的工作原理。