Nginx+keepalived高可用集羣簡單搭建(主從和雙主)

nginx搭建高可用集羣

在本文中,將利用keepalived + nginx搭建高可用集羣,分別介紹主從模式和雙主模式。

環境準備

首先需要準備環境,本文使用兩臺虛擬機搭建一個nginx高可用集羣,虛擬機上分別安裝nginx和keepalived,安裝步驟如下:

  1. 使用如下命令安裝相關依賴:

    yum -y install make zlib zlib devel gcc c++ libtool openssl openssl dev el
    
  2. 安裝nginx,去官網下載對應tar包,上傳到虛擬機,解壓,進行解壓後的nginx安裝包目錄使用如下命令:

    ./configure
    make && make install
    
  3. 關閉防火牆或開放對應端口。(不同版本linux命令有所不同,下面是centos7使用firewall命令)

    firewall-cmd --list-all   #查看開放的端口號
    firewall-cmd --add-service=80/tcp --permanent   #設置開放的端口號
    firewall-cmd --reload   #重啓防火牆
    systemctl stop firewalld.service  #停止firewall
    systemctl disable firewalld.service  #禁止firewall開機啓動
    
  4. 安裝keepalived,使用如下命令:安裝完成後再/etc目錄下生成keepalived文件,其中有keepalived.conf配置文件。

     sudo yum install keepalived -y
    

主從模式

在這裏插入圖片描述
主從模式是在搭建的nginx集羣中有一個啓用節點,在沒有出現宕機情況下由該節點完成反向代理等工作,當該節點宕機時,將會啓動備用節點,達到高容錯、高可用,不會因爲一臺nginx服務器掛掉而無法調用服務。

接下來進行配置文件的修改,首先查看本機聯網網卡的名字,利用ifconfig(centos7是使用ip命令),如下圖聯網網卡是eth1,記住這個id,後面再配置文件中有用。

在這裏插入圖片描述

  1. 修改keepalived.conf配置文件,內容如下:

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         [email protected]
         [email protected]
         [email protected]
       }
       notification_email_from [email protected]
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL           #路由id
       vrrp_skip_check_adv_addr
       vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
    vrrp_script chk_http_port {
    script "/usr/local/src/nginx_check.sh"       #檢測腳本
    interval 2            
    weight 2
    }
    vrrp_instance VI_1 {
        state MASTER     #該節點的狀態,從節點需要設置爲BACKUP
        interface eth1   #聯網網卡
        virtual_router_id 51   #主從節點的virtual_router_id必須相同
        priority 100    #主從節點取冉優先級,主機較大,從機較小
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.145.220   #虛擬ip地址
        }
    }
    
  2. /usr/local/src/目錄下增加檢測腳本,nginx_check.sh,檢測腳本內容如下:

    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
        fi
    fi
    
  3. 兩臺虛擬機分別啓動nginx和keepalived,命令如下:

    ./nginx        #啓動nginx
    service keepalived start   #centos6使用該命令啓動
    systemctl start keepalived.service   #centos7使用該命令啓動
    

    下圖顯示錶示啓動成功:

在這裏插入圖片描述

在這裏插入圖片描述

  1. 啓動完成後,可以使用主機訪問虛擬ip地址,可以看到能夠正確訪問到nginx服務器,接下來停止剛纔爲MASTER的節點的nginx和keepalived,之後再用該虛擬地址訪問,同樣可以訪問到nginx服務器。這便是主從模式,當主節點宕機後,備份節點將代替主節點工作,繼續工作。

在這裏插入圖片描述

雙主模式

雙主模式,每個節點既是主節點也是備份節點,當一個節點宕機,兩個虛擬地址的請求都會轉移到另外一個節點。

主從模式情況下,一臺做主,一臺做從,但同時只有一臺機器工作,當主節點不出現故障時,另一臺機器便一直處於資源浪費狀態。所以雙主模式可以解決資源浪費的情況。

在這裏插入圖片描述

  • 配置雙主模式,需要修改keepalived.conf配置文件,文件內容如下:(在主從模式情況下,主節點配置文件中添加虛擬實例VI_2即可)
! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.145.220
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eth1
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.145.230
    }
}

在備份節點的keepalived.conf文件中添加以下內容:

vrrp_instance VI_2 {
    state MASTER
    interface eth1
    virtual_router_id 52
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.145.230
    }
}

修改完成後重啓keepalived即可,這時通過192.168.145.220192.168.145.230兩個虛擬地址都可以訪問到nginx服務器,停止其中一臺主機的keepalived和nginx服務後,還是可以訪問到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章