zoukankan      html  css  js  c++  java
  • Keepalived 搭建 Nginx 集群(主从模式)

    一、准备两台虚拟机分别安装 nginx 和 keepalived

    192.168.141.129

    192.168.141.130

    1、安装 nginx

    https://www.cnblogs.com/xiaomaomao/p/14075164.html

    2、安装 keepalived

    yum install keepalived –y
    

    安装完成之后,默认在 etc 里面生成 keepalived 目录,该目录下存在配置文件 keepalived.conf

    二、修改 keepalived.conf 配置文件

    主服务器和从服务器只有两个地方不一样,两个不一样的配置都在 vrrp_instance VI_1 中

    state: 主服务器的值是 MASTER ,副本服务器的值是 BACKUP

    priority: 主服务器的值比副本服务器的值大即可(例如:主服务器设置为 100,副本服务器设置为 80)

    global_defs {
       notification_email { # keepalived 服务器宕机异常出现的时候,发送通知邮件,可以配置多个邮箱地址
        1412556053@qq.com # 收件人邮箱1
        # ***@**.com      # 收件人邮箱2
       }
       notification_email_from 1412556053@qq.com # 邮箱发件人
       smtp_server stmp.qq.com # 邮箱服务器地址
       smtp_connect_timeout 30 # 超时时间
       router_id LVS_DEVEL # 路由 id
       vrrp_skip_check_adv_addr # 默认不跳过检查
       # vrrp_strict # 这个东西要注释掉,这个东西要注释掉,这个东西要注释掉...
       vrrp_gna_interval 0 # 单位秒,在一个网卡上每组消息之间的延迟时间,默认为 0
       script_user root  
       enable_script_security
    }
    
    
    vrrp_script chk_haproxy{
        script "/etc/keepalived/chk_nginx.sh" # keepalived 监测 nginx 的监本路径和名称
        interval 2
        weight 2
    }
    
    
    # vrrp 实例,我们集群设置,多机配置,除了 state 和 priority 不一样之外,其它的配置都是一样的
    # 主实例 state 为 MASTER , priority 的值高于副本实例的值
    # 副本实例 state 为 BACKUP , priority 的值低于主实例的值
    vrrp_instance VI_1 {
        state BACKUP  # 服务器状态,MASTER 代表主服务器, BACKUP 是备份服务器
        interface ens33 # 通信端口,通过 ifconfig 命令可以看到,根据自己的机器配置
        virtual_router_id 51 # 虚拟路由 ID ,主实例和副本实例保持一致
        priority 80 # 权重比,主服务器的 priority 比副本服务器大即可
        advert_int 1 # 心跳间隔,单位秒, keepalived 多机器集群通过心跳检测,如果发送心跳没反应,就立刻接管
        authentication { # 服务器之间的通信密码
            auth_type PASS
            auth_pass 1111
        }
    	
        track_script { # keepalived 的监测脚本,与 vrrp_script 定义的名称一致
          chk_haproxy
        }
    	
        virtual_ipaddress { # 自定义虚拟 ip ,可以配置多个,每行一个
            192.168.141.132
        }
    }
    

      

    三、编写 keepalived 监测 nginx 的脚本

    我们在 keepalived.conf 中 vrrp_script chk_haproxy 配置的监测脚本路径和名称如下: /etc/keepalived/chk_nginx.sh

    所以我们需要在 /etc/keepalived 目录下新建一个 chk_nginx.sh 的脚本文件,文件内容如下

    #!/bin/bash
    # nginx 挂掉之后, keepalived 重新启动 nginx ,若不能启动 则关闭当前 keepalived
    status=`ps -ef|grep -w  nginx|grep -v grep|wc -l`
    echo ${status}
    if [ ${status} -eq 0 ]; then
        systemctl start nginx.service
        sleep 2
        status2=`ps -ef|grep -w  nginx|grep -v grep|wc -l`
        echo ${status2}
        if [ ${status2} -eq 0  ]; then
                systemctl stop keepalived.service
        fi
    fi
    

    然后运行 chmod +x chk_nginx.sh 命令为脚本文件添加可执行权限

    chmod +x chk_nginx.sh
    

      

    四、启动 nginx 和 keepalived

    分别启动两台服务器上的 nginx 和 keepalived

    // 启动 nginx
    ./nginx
    
    // 启动 keepalived
    systemctl start keepalived.service
    
    // 查看 nginx 是否成功启动
    ps -ef | grep nginx
    
    // 查看 keepalived 是否成功启动
    ps -ef | grep keepalived

    五、测试

    配置信息如下

    主服务器:  192.168.14.129

    从服务器:  192.168.14.130

    虚拟 IP:  192.168.14.132

    1、浏览器访问 192.168.14.132

    2、关闭主机 192.168.141.129 上的 nginx 和 keepalived ,再次访问虚拟 IP ,发现可以正常访问,并且访问的是从机

  • 相关阅读:
    linux 查看 服务 命令
    Java Swing中键盘事件的处理(转)
    VI常用命令及快捷键(转)
    Linux source用法(转)
    无线桥接 WDS 中继(转)
    在远程桌面连接中使用任务管理器(转)
    linux 运行 级别(转)
    linux 当前用户 命令 w who(转)
    vecket适合和不适合的10种人(转)
    在查找预编译头使用时跳过解决(转)
  • 原文地址:https://www.cnblogs.com/xiaomaomao/p/14393394.html
Copyright © 2011-2022 走看看