Keepalived实现nginx高可用

1、安装

官网 https://keepalived.org/

  • 进入解压目录执行:./configure --prefix=/usr/local/keepalived --sysconf=/etc

  • make && make install

  • 通过 whereis keepalived 查询keepalived 的安装位置

  • 运行:/usr/local/keepalived/sbin/keepalived 启动

  • 将keepalived 注册为系统服务,通过服务的方式进行启动和关闭

    • cp /keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/

    • cp /keepalived-2.0.18/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

    • systemctl deamon-reload

      启动:systemctl start keepalived.service

      停止:systemctl stop keepalived.service

      重启:systemctl restart keepalived.service

  • 配置文件地址:/etc/keepalived 配置文件详解:

    ! Configuration File for keepalived
    
    global_defs {
       #路由id,当前节点在集群中唯一的标识,全局唯一
       router_id keep_118
    }
    #当前计算机节点
    vrrp_instance VI_1 {
        #当前节点为 主节点MASTER(备用节点为:BACKUP)
        state MASTER
        #当前节点绑定的网卡
        interface ens33
        #保证主备节点一致,集群中所有的节点配置一致即可
        virtual_router_id 51
        #优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
        priority 100
        #主备之间同步检查的时间间隔,默认1s
        advert_int 1
        #认证授权的密码,防止非法节点的进入
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        #虚拟出的ip
        virtual_ipaddress {
            192.168.2.16
        }
    }
    #....其他的虚拟主机配置在高可用架构中无用
    

    启动后虚拟出的ip如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJD26QkE-1670837508440)(../../image/image-20221209160056192.png)]

2、Nginx健康检测***

  • 创建nginx检测脚本,并添加脚本的执行权限 chmod +x /etc/keepalived/check_nginx_alive_or_not.sh

    vim /etc/keepalived/check_nginx_alive_or_not.sh

    #!/bin/bash
    
    A=`ps -C nginx --no-header |wc -l`
    # 判断nginx是否宕机,如果宕机了,尝试重启
    if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        # 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
        sleep 3
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
        fi
    fi
    
    

    ps -C nginx --no-header |wc -l 含义是:

    • ps -C nginx 查询 nginx 的进程信息 -C 是显示父进程

在这里插入图片描述

  • –no-header 不显示列的抬头信息

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvaMZFQe-1670837508442)(../../image/image-20221212155605637.png)]

  • |wc -l 展示结果的行数

在这里插入图片描述

  • 在 keepalived.conf 中 配置监听脚本

    
    ! Configuration File for keepalived
    
    global_defs {
       #路由id,当前节点在集群中唯一的标识,全局唯一
       router_id keep_118
    }
    #配置nginx 健康检查 脚本地址及定时任务信息
    vrrp_script check_nginx_alive {
        script "/etc/keepalived/check_nginx_alive_or_not.sh"
        interval 2 # 每隔两秒运行上一行脚本
        weight 10 # 如果脚本运行成功,则升级权重+10
        # weight -10 # 如果脚本运行失败,则升级权重-10
    }
    
    
    #当前计算机节点
    vrrp_instance VI_1 {
        #当前节点为 主节点MASTER(备用节点为:BACKUP)
        state MASTER
        #当前节点绑定的网卡
        interface ens33
        #保证主备节点一致,集群中所有的节点配置一致即可
        virtual_router_id 51
        #优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
        priority 100
        #主备之间同步检查的时间间隔,默认1s
        advert_int 1
        #认证授权的密码,防止非法节点的进入
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        #虚拟出的ip
        virtual_ipaddress {
            192.168.2.16
        }
        
        #nginx 健康检查 启动配置的脚本,可以配置多个
        track_script {
            check_nginx_alive   # 追踪 nginx 脚本
        }
      
    
    }
    
    
  • 重启 systemctl restart keepalived

3、双机主备

2.1主节点配置

配置文件地址:/etc/keepalived 下,该目录通过安装时运行configure 进行配置:–sysconf=/etc

! Configuration File for keepalived

global_defs {
   #路由id,当前节点在集群中唯一的标识,全局唯一
   router_id keep_118
}
#当前计算机节点
vrrp_instance VI_1 {
    #当前节点为 主节点MASTER(备用节点为:BACKUP)
    state MASTER
    #当前节点绑定的网卡
    interface ens33
    #保证主备节点一致,集群中所有的节点配置一致即可
    virtual_router_id 51
    #优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
    priority 100
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1
    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟出的ip
    virtual_ipaddress {
        192.168.2.16
    }
}
#....其他的虚拟主机配置在高可用架构中无用
2.1备用节点配置

配置文件地址:/etc/keepalived 下,该目录通过安装时运行configure 进行配置:–sysconf=/etc

global_defs {
   #路由id,当前节点在集群中唯一的标识,全局唯一
   router_id keep_119
}
#当前计算机节点
vrrp_instance VI_1 {
     #---- 备用节点注意的地方----> 当前节点为 备用节点为BACKUP 
    state BACKUP
    #当前节点绑定的网卡
    interface ens33
    #保证主备节点一致,集群中所有的节点配置一致即可
    virtual_router_id 51
    #---- 备用节点注意的地方---->优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
    priority 80
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1
    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #---- 备用节点注意的地方---->虚拟出的ip,集群中必须一致,主节点是多少备用节点就是多少
    virtual_ipaddress {
        192.168.2.16
    }
}

4、双主热备

2个节点直接互为主备用

4.1 节点一
! Configuration File for keepalived

global_defs {
   #路由id,当前节点在集群中唯一的标识,全局唯一
   router_id keep_118
}
#当前计算机节点
vrrp_instance VI_1 {
    #当前节点为 主节点MASTER(备用节点为:BACKUP)
    state MASTER
    #当前节点绑定的网卡
    interface ens33
    #保证主备节点一致,集群中所有的节点配置一致即可
    virtual_router_id 51
    #优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
    priority 100
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1
    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟出的ip
    virtual_ipaddress {
        192.168.2.16
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 70
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.10
    }
}
4.1 节点二
global_defs {
   #路由id,当前节点在集群中唯一的标识,全局唯一
   router_id keep_119
}
#当前计算机节点
vrrp_instance VI_1 {
     #---- 备用节点注意的地方----> 当前节点为 备用节点为BACKUP 
    state BACKUP
    #当前节点绑定的网卡
    interface ens33
    #保证主备节点一致,集群中所有的节点配置一致即可
    virtual_router_id 51
    #---- 备用节点注意的地方---->优先级,谁的优先级高,主节点挂掉后谁就成为MASTER
    priority 80
    #主备之间同步检查的时间间隔,默认1s
    advert_int 1
    #认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #---- 备用节点注意的地方---->虚拟出的ip,集群中必须一致,主节点是多少备用节点就是多少
    virtual_ipaddress {
        192.168.2.16
    }
}

#当前计算机节点
vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.10
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值