keepalived+Nginx高可用案例

举报
林欣 发表于 2024/08/31 16:28:15 2024/08/31
【摘要】 Keepalived结合Nginx实现高可用性的案例涉及在两台或多台服务器上部署Nginx和Keepalived,以确保当主Nginx服务器出现故障时,备份Nginx服务器能够自动接管服务,从而保证服务的连续性和可用性。以下是一个详细的案例说明: 一、方案概述目标:通过Keepalived和Nginx实现Web服务的高可用性。环境:两台服务器,分别配置为Master和Backup,均安装Ng...

Keepalived结合Nginx实现高可用性的案例涉及在两台或多台服务器上部署Nginx和Keepalived,以确保当主Nginx服务器出现故障时,备份Nginx服务器能够自动接管服务,从而保证服务的连续性和可用性。以下是一个详细的案例说明:

一、方案概述

目标:通过Keepalived和Nginx实现Web服务的高可用性。

环境:两台服务器,分别配置为Master和Backup,均安装Nginx和Keepalived。

二、环境准备

  1. 安装Nginx

    • 在两台服务器上分别安装Nginx。
    • 配置Nginx作为负载均衡器或Web服务器,具体取决于实际需求。
  2. 安装Keepalived

    • 在两台服务器上分别安装Keepalived。
    • Keepalived的安装方式可以是使用包管理器(如yum、apt)或从源代码编译安装。

三、配置Keepalived

  1. 配置Master节点

    • 编辑/etc/keepalived/keepalived.conf文件,设置状态为MASTER,并配置虚拟IP(VIP)。
    • 配置健康检查脚本,用于检查Nginx的状态。如果Nginx停止运行,则尝试重启;如果重启失败,则停止Keepalived服务,将VIP转移到Backup节点。

    示例配置(Master节点):

    ! Configuration File for keepalived
    global_defs {
        router_id LVS_DEVEL_MASTER
    }
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/check_nginx.sh"
        interval 2
        weight -5
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 101
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.1.200
        }
        track_script {
            chk_nginx
        }
    }
    
  2. 配置Backup节点

    • 编辑/etc/keepalived/keepalived.conf文件,设置状态为BACKUP,并配置与Master节点相同的虚拟IP(VIP)。
    • 配置健康检查脚本,与Master节点相同。

    示例配置(Backup节点):

    ! Configuration File for keepalived
    global_defs {
        router_id LVS_DEVEL_BACKUP
    }
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/check_nginx.sh"
        interval 2
        weight -5
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.1.200
        }
        track_script {
            chk_nginx
        }
    }
    
  3. 编写Nginx健康检查脚本check_nginx.sh):

    • 该脚本用于检查Nginx是否正在运行。如果未运行,则尝试启动;如果启动失败,则停止Keepalived服务。

    示例脚本:

    #!/bin/bash
    counter=$(ps -C nginx --no-heading | wc -l)
    if [ "${counter}" -eq 0 ]; then
        systemctl start nginx
        sleep 2
        counter=$(ps -C nginx --no-heading | wc -l)
        if [ "${counter}" -eq 0 ]; then
            systemctl stop keepalived
        fi
    fi
    

四、启动Keepalived服务

  • 在两台服务器上分别启动Keepalived服务。
  • 使用systemctl start keepalived命令启动服务,并确保服务设置为开机自启。

五、测试高可用性

  1. 通过VIP访问Nginx服务

    • 确保通过VIP(在本例中为192.168.1.200)可以访问Nginx服务。
  2. 模拟故障转移

    • 停止Master节点的Nginx服务或Keepalived服务。
    • 观察VIP是否自动转移到Backup节点。
    • 通过VIP访问服务,验证服务是否仍然可用。

六、注意事项

  • 确保两台服务器的网络互通,且时间同步。
  • 监控Keepalived和Nginx的日志文件,以便及时发现和解决问题。
  • 定期检查Keepalived和Nginx的配置,确保配置的正确性和安全性。

通过以上步骤,你可以实现基于Keepalived和Nginx的高可用性Web服务。这种配置方式可以有效地防止单点故障,提高服务的可靠性和可用性。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。