溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Keepalived實現(xiàn)Nginx的自動重啟

發(fā)布時間:2021-09-09 08:58:17 來源:億速云 閱讀:171 作者:chen 欄目:開發(fā)技術

本篇內容主要講解“如何使用Keepalived實現(xiàn)Nginx的自動重啟”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用Keepalived實現(xiàn)Nginx的自動重啟”吧!

目錄
  • 1、概述

  • 2、使用Keepalived實現(xiàn)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實現(xiàn)了Nginx服務的雙機主備高可用,但是有幾個問題沒有解決,今天一起探討一下。

    1)在雙機主備機制中,Keepalived服務如果宕了,會自動啟用備機進行服務,但Nginx服務如果負載過大宕了,虛擬ip是不會指向備機的。

    2)雙機主備的特點是,只有1臺機器在提供服務,備機在主機的Keepalived服務宕掉后才會提供服務,大大的造成了資源的浪費。

    3)目前比較流行租用云服務器去運營公司的產(chǎn)品,那云服務器支不支持虛擬IP呢?

    今天我們就上述的三個問題來講解一下。

    2、使用Keepalived實現(xiàn)Nginx的自動重啟

    2.1 借助Shell腳本,完成Nginx的重啟

    Keepalived不能直接啟動Nginx,但可以執(zhí)行shell腳本,因此這里我們需要借助Shell腳本啟動Nginx。

    在 /etc/keepalived 目錄下,新建一個腳本 check_nginx.sh,以下是腳本的具體內容:

    #!/bin/bash
    
    # 執(zhí)行查看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

    腳本來源于網(wǎng)絡

    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 {
    
        # 標識是主節(jié)點還是備用節(jié)點,值為 MASTER 或 BACKUP
        state MASTER
        # 綁定的網(wǎng)卡
        interface ens33
        # 虛擬路由id,保證主備節(jié)點是一致的
        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服務

    重啟后,發(fā)現(xiàn),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 {
    
        # 標識是主節(jié)點還是備用節(jié)點,值為 MASTER 或 BACKUP
        state MASTER
        # 綁定的網(wǎng)卡
        interface ens33
        # 虛擬路由id,保證主備節(jié)點是一致的
        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 {
    
        # 標識是主節(jié)點還是備用節(jié)點,值為 MASTER 或 BACKUP
        state BACKUP
        # 綁定的網(wǎng)卡
        interface ens33
        # 虛擬路由id,保證主備節(jié)點是一致的
        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輪詢

    聯(lián)系網(wǎng)絡運營商解決。

    4、云服務器的負載均衡

    現(xiàn)在,很多公司都會選擇租用云服務器運行自己的產(chǎn)品,因為更劃算、更穩(wěn)定,有專業(yè)人員負責運維。

    但使用了云服務器,就要受云服務運營商的限制。

    就拿虛擬IP這個事兒來說,一些云服務運營商就是不支持的。

    如果不支持虛擬IP,則Keepalived這個方案就只能放棄了。

    但即使Keepalived用不了,Nginx的高可用還是有解決方案的,很多云服務商都已經(jīng)推出了自己的負載均衡服務(例如:阿里云的負載均衡 SLB 和 騰訊云的負載均衡 CLB)。我們直接租用就好了,不需要我們自己去配置。

    到此,相信大家對“如何使用Keepalived實現(xiàn)Nginx的自動重啟”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

    AI