温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Keepalived实现Nginx的自动重启

发布时间:2021-09-09 08:58:17 来源:亿速云 阅读:179 作者:chen 栏目:开发技术

本篇内容主要讲解“如何使用Keepalived实现Nginx的自动重启”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Keepalived实现Nginx的自动重启”吧!

目录
  • 1、概述

  • 2、使用Keepalived实现Nginx的自动重启

    • 2.1 借助Shell脚本,完成Nginx的重启

    • 2.2 为脚本赋予运行权限

    • 2.3 在Keepalived配置文件中增加配置

    • 2.4 重启Keepalived服务

  • 3、双主热备的搭建

    • 3.1 双主热备概述

    • 3.2 场景说明

    • 3.3 修改A服务器配置

    • 3.4 修改B服务器配置

    • 3.5 重启两台服务器的Keepalived

    • 3.6 设置DNS轮询

  • 4、云服务器负载均衡

    1、概述

    之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下。

    1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服务,但Nginx服务如果负载过大宕了,虚拟ip是不会指向备机的。

    2)双机主备的特点是,只有1台机器在提供服务,备机在主机的Keepalived服务宕掉后才会提供服务,大大的造成了资源的浪费。

    3)目前比较流行租用云服务器去运营公司的产品,那云服务器支不支持虚拟IP呢?

    今天我们就上述的三个问题来讲解一下。

    2、使用Keepalived实现Nginx的自动重启

    2.1 借助Shell脚本,完成Nginx的重启

    Keepalived不能直接启动Nginx,但可以执行shell脚本,因此这里我们需要借助Shell脚本启动Nginx。

    在 /etc/keepalived 目录下,新建一个脚本 check_nginx.sh,以下是脚本的具体内容:

    #!/bin/bash
    
    # 执行查看Nginx进程的命令,并放在变量A中
    A=`ps -C nginx --no-header | wc -l`
    
    # 判断是否宕机,如果宕机尝试重启,如果重启不成功,则停止Keepalived
    if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 3
        if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
            killall keepalived
    
        fi
    fi

    脚本来源于网络

    2.2 为脚本赋予运行权限

    # chmod +x /etc/keepalived/check_nginx.sh

    2.3 在Keepalived配置文件中增加配置

    打开Keepalived配置文件,# vi /etc/keepalived/keepalived.conf

    修改配置文件,增加vrrp_script 和track_script的配置,配置如下:

    global_defs {
       
       # 全局唯一的主机标识
       router_id server_a
       
    }
    
    vrrp_script check_nginx {
        script "/etc/keepalived/check_nginx.sh"
        interval 3 # 每隔3秒运行一次Shell脚本
        weight 10 # 脚本运行成功,权重加10
    }
    
    vrrp_instance VI_1 {
    
        # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
        state MASTER
        # 绑定的网卡
        interface ens33
        # 虚拟路由id,保证主备节点是一致的
        virtual_router_id 51
        # 权重
        priority 100
        # 同步检查时间,间隔默认1秒
        advert_int 1
        # 认证授权的密码,所有主备需要一样
        authentication {
            auth_type PASS
            auth_pass 1111
        }
    
        track_script {
            check_nginx
        }
    
        # 虚拟IP
        virtual_ipaddress {
            192.168.1.88
        }
    }

    2.4 重启Keepalived服务

    重启后,发现,Nginx停掉后,很快会自动启动。

    3、双主热备的搭建

    3.1 双主热备概述

    由于双机主备机制,每次只会由一台服务器对外提供服务,且主备机的配置是相同的,因此极大地造成了资源的浪费。

    双主热备则解决了这个问题,双主热备的原理是两台服务器利用Keepalived互为主备,因此需要两个虚拟IP,再利用DNS轮询的配置,让一个域名按轮询的方式分别路由到两个虚拟IP上,最终达到高可用的目的。

    3.2 场景说明

    虚拟IP1:192.168.1.88

    虚拟IP2:192.168.1.66

    A服务器IP(主):192.168.1.144

    B服务器IP(备):192.168.1.22

    3.3 修改A服务器配置

    配置如下:

    ! Configuration File for keepalived
    
    global_defs {
       
       # 全局唯一的主机标识
       router_id server_a
       
    }
    
    vrrp_instance VI_1 {
    
        # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
        state MASTER
        # 绑定的网卡
        interface ens33
        # 虚拟路由id,保证主备节点是一致的
        virtual_router_id 51
        # 权重
        priority 100
        # 同步检查时间,间隔默认1秒
        advert_int 1
        # 认证授权的密码,所有主备需要一样
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 虚拟IP
        virtual_ipaddress {
            192.168.1.88
        }
    }
    
    vrrp_instance VI_2 {
    
        # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
        state BACKUP
        # 绑定的网卡
        interface ens33
        # 虚拟路由id,保证主备节点是一致的
        virtual_router_id 52
        # 权重
        priority 80
        # 同步检查时间,间隔默认1秒
        advert_int 1
        # 认证授权的密码,所有主备需要一样
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 虚拟IP
        virtual_ipaddress {
            192.168.1.66
        }
    }

    3.4 修改B服务器配置

    配置如下:

    ! Configuration File for keepalived
    
    global_defs {
       
       router_id server_b
       
    }
    
    vrrp_instance VI_1 {
        
        # 设置为备机
        state BACKUP
        interface ens33
        virtual_router_id 51
        # 权重设置的要比主机低
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 虚拟IP需要主备设置成一样
        virtual_ipaddress {
            192.168.1.88
        }
    }
    
    vrrp_instance VI_2 {
        
        # 设置为主机
        state MASTER
        interface ens33
        virtual_router_id 52
        # 权重设置的要比主机低
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 虚拟IP需要主备设置成一样
        virtual_ipaddress {
            192.168.1.66
        }
    }

    3.5 重启两台服务器的Keepalived

    重启Keepalived即可。

    3.6 设置DNS轮询

    联系网络运营商解决。

    4、云服务器的负载均衡

    现在,很多公司都会选择租用云服务器运行自己的产品,因为更划算、更稳定,有专业人员负责运维。

    但使用了云服务器,就要受云服务运营商的限制。

    就拿虚拟IP这个事儿来说,一些云服务运营商就是不支持的。

    如果不支持虚拟IP,则Keepalived这个方案就只能放弃了。

    但即使Keepalived用不了,Nginx的高可用还是有解决方案的,很多云服务商都已经推出了自己的负载均衡服务(例如:阿里云的负载均衡 SLB 和 腾讯云的负载均衡 CLB)。我们直接租用就好了,不需要我们自己去配置。

    到此,相信大家对“如何使用Keepalived实现Nginx的自动重启”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI