反馈已提交

网络繁忙

Keepalived+Nginx部署方案

  • 文档创建者:Leo.Tsai
  • 编辑次数:1次
  • 1. 概述

    Nginx 可以用来作为反向代理服务器,来提供负载均衡的能力,使我们的 Web 服务器,能够水平扩容,从而处理更多的用户请求。

    但是反向代理服务器又变成了一个单点,当反向代理服务器挂了,整合 Web 服务器就不能被外界访问到,所以我们必须要保证反向代理服务器的高可用。

    而 Keepalived 是一种高性能的服务器高可用或热备解决方案,可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 Web 前端服务的高可用。

    2. 方案规划

    注:VIP 为虚拟 IP ,不被占用前提下可自定义。

    VIP服务器 IP主机名nginx 端口默认主从
    192.168.5.200192.168.5.249
    ethan380MASTER
    192.168.5.200192.168.5.103
    localhost.localdomain80BACKUP

    3. 外网用户方案

    3.1 安装 Nginx

    两个服务器上安装配置 Nginx 。具体步骤请参见:Linux系统安装配置Nginx 

    3.2 安装 Keepalived

    两个服务器上安装 Keepalived 。

    执行命令:

    yum -y install keepalived

    3.3 设置 keepalived 服务开机启动

    两个服务器都需要执行下面语句。语句如下所示:

    chkconfig keepalived on

    4.png

    3.4 修改 Keepalived 的配置文件

    路径为:/etc/keepalived/keepalived.conf

    3.4.1 MASTER 节点配置文件

    ! Configuration File for keepalived
    global_defs {
    ## keepalived 自带的邮件提醒需要开启 sendmail 服务。 建议用独立的监控或第三方 SMTP
     router_id ethan3 ## 标识本节点的字条串,通常为 hostname

    ## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。
    vrrp_script chk_nginx {
     script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
     interval 2 ## 检测时间间隔
     weight -20 ## 如果条件成立,权重-20
    }
    ## 定义虚拟路由, VI_1 为虚拟路由的标示符,自己定义名称
    vrrp_instance VI_1 {
     state MASTER ## 主节点为 MASTER, 对应的备份节点为 BACKUP
     interface eno16777736 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同。
     virtual_router_id 33 ## 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
     mcast_src_ip 192.168.5.249 ## 本机 IP 地址
     priority 200 ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高
     advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s
     ## 设置验证信息,两个节点必须一致
     authentication {
      auth_type PASS
      auth_pass 1111 ## 真实生产,按需求对应该过来
     }
     ## 将 track_script 块加入 instance 配置块
     track_script {
      chk_nginx ## 执行 Nginx 监控的服务
     } #
     # 虚拟 IP 池, 两个节点设置必须一样
     virtual_ipaddress {
      192.168.5.200 ## 虚拟 ip,可以定义多个
     }
    }

    3.4.2 BACKUP 节点配置文件

    ! Configuration File for keepalived
    global_defs {
     router_id localhost.localdomain
    }
    vrrp_script chk_nginx {
     script "/etc/keepalived/nginx_check.sh"
     interval 2
     weight -20
    }
    vrrp_instance VI_1 {
     state BACKUP
     interface ens192
     virtual_router_id 33
     mcast_src_ip 192.168.5.103
     priority 90
     advert_int 1
     authentication {
      auth_type PASS
      auth_pass 1111
     }
     track_script {
      chk_nginx
     }
     virtual_ipaddress {
      192.168.5.200
     }
    }

    需要注意的配置说明:

    1)router_id ethan3 ## 标识本节点的字条串,通常为 hostname 。

    在服务器中使用语句hostname可得出。如下图所示:

    1641974851329444.png

    2)script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径,无需修改,参考本文 3.5 节。

    3)state MASTER/BACKUP ##说明主备。

    4)interface eno16777736 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同。

    使用ip a可得出。如下图所示:

    注:主节点配置文件中该值为主节点网卡号;备节点配置文件中该值为备节点网卡号。

    1641974942332551.png

    5)mcast_src_ip 192.168.5.249 ## 本机 IP 地址。

    6)priority 200 ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高。

    7)virtual_ipaddress ##虚拟 ip,即VIP,可自定义,可定义多个。

    3.5 编写 Nginx 状态启动脚本

    两个服务器上都需要编写下面文件,根据实际情况修改 nginx 路径。

    编写 Nginx 状态检测脚本 /etc/keepalived/nginx_check.sh (已在 Keepalived.conf 中配置)脚本要求。

    #!/bin/bash
    A=`ps -C nginx --no-header |wc -l`
    if [ $A -eq 0 ];then
    /usr/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
     killall keepalived
    fi
    fi

    赋予文件权限:chmod +x /etc/keepalived/nginx_check.sh 

    3.6 启动 Keepalived

    两个服务器都执行下面语句:

    systemctl start keepalived

    3.7 效果查看

    注:节点上有虚拟 IP 时,可通过虚拟 IP 访问相应的 nginx 及下面相应的文件。

    1)使用ip addr语句,可以看到虚拟 IP 192.168.5.200 绑定在了 MASTER 服务器上面。如下图所示:

    1641973992565967.png

    而 BACKUP 节点上没有虚拟 IP 。如下图所示:

    1641974146900091.png

    2)使用systemctl stop keepalived停掉主节点的 keepalived 服务,备节点上有虚拟 IP 。如下图所示:

    1641974581124305.png

    4. 内网用户方案

    4.1 步骤说明

    内网用户无法在线安装 Keepalived ,与外网用户方案不同点在于 3.2 节,其他步骤相同。

    4.2 离线安装 Keepalived

    两个服务器都需要做下面步骤。

    4.2.1 安装步骤

    1)下载安装包。访问网址:https://www.keepalived.org/download.html 并下载 Keepalived 的安装包。

    2)解压安装。

    将安装包上传到服务器某个文件夹下(文档示例为:/wendy),进入安装包所在文件夹后,进行下面操作:

    cd /wendy
    tar -zxvf keepalived-2.0.18.tar.gz   # 解压
    cd /wendy/keepalived-2.0.18  # 路径根据实际情况修改
    ./configure --prefix=/usr/local/keepalived   # 编译
    make && make install   # 安装

    4.2.2 将 Keepalived 安装成 Linux 系统服务

    1)复制keepalived.conf文件到/etc/keepalived/下。

    mkdir /etc/keepalived
    cp /wendy/keepalived-2.0.18/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

    2)复制 keepalived 服务脚本到默认的地址:

    cp /wendy/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/
    cp /wendy/keepalived-2.0.18/keepalived/etc/sysconfig/keepalived /etc/sysconfig/


    附件列表


    主题: 部署集成
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭