keepalived + nginx 實現高可用集羣方案 頂 原

準備工作

  1. 兩臺虛擬機如:
    • 10.211.55.8
    • 10.211.55.10
  2. 準備安裝文件
    • nginx-1.13.1.tar.gz
    • pcre-8.36.zip
    • keepalived-1.2.22.tar.gz

安裝nginx

  1. 參考安裝Linux一文,在兩臺服務器安裝nginx

    10.211.55.8 稱爲 nginx1<br/> 10.211.55.10 稱爲 nginx2

安裝keepalived

  1. 解壓文件

     cd /opt/software
     tar -zxvf keepalived-1.2.22.tar.gz
     cd keepalived-1.2.22
    
  2. 安裝

     ./configure --prefix=/opt/keepalived
     make && make install
    
  3. 處理配置文件和可執行文件

     cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
     cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
     mkdir /etc/keepalived
     cp /opt/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
     ln -s /opt/keepalived/sbin/keepalived /usr/sbin/
    
  4. 啓動服務

     /etc/init.d/keepalived start
    
  5. 按照相同的步驟在另一臺服務器安裝keepalived

修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   # keepalived 自帶的郵件提醒需要開啓 sendmail 服務。建議用獨立的監控或第三方 SMTP,也可配置郵件發送
   router_id 10.211.55.8
}

vrrp_script chk_nginx {
    # 運行腳本,腳本內容下面有,就是起到一個nginx宕機以後,自動開啓服務
    script "/opt/shell/nginx_check.sh"
    # 檢測時間間隔
    interval 2
    # 如果條件成立的話,則權重 -20
    weight -20
}

# 定義虛擬路由,VI_1 爲虛擬路由的標示符,自己定義名稱
vrrp_instance VI_1 {
    # 來決定主從(從:BACKUP)
    state MASTER
    # 綁定虛擬 IP 的網絡接口,根據自己的機器填寫
    interface eth0
    # 虛擬路由的 ID 號, 兩個節點設置必須一樣
    virtual_router_id 121
    # 填寫本機ip
    mcast_src_ip 10.211.55.10
    # 節點優先級,主節點比從節點優先級高
    priority 100
    # 優先級高的設置 nopreempt 解決異常恢復後再次搶佔的問題
    nopreempt
    # 組播信息發送間隔,兩個節點設置必須一樣,默認 1s
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    # 將 track_script 塊加入 instance 配置塊
    track_script {
        #執行 Nginx 監控的服務
        chk_nginx
    }

    virtual_ipaddress {
        # 虛擬ip,也就是解決寫死程序的ip怎麼能切換的ip,也可擴展,用途廣泛。可配置多個。
        10.211.55.100
    }
}

以上配置爲主節點配置,從節點類似,有區別的已經標明。下面是監控服務腳本內容

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /opt/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

定義變量,此變量爲檢查nginx進程腳本,如果進程爲0,則啓動nginx服務,再次檢查nginx服務,如果仍沒啓動 ,殺掉所有keepalived的進程。

測試高可用

  1. 打開瀏覽器,輸入虛擬ip 10.211.55.100

  2. 顯示的是nginx1的頁面

  3. 此時可以停掉一臺nginx服務器

     /opt/nginx/sbin/nginx -s stop
    
  4. 這時候,單獨訪問這臺服務器,發現還是可以的,也就是說,keepalived監控到nginx服務down掉了,然後自動重啓這臺機器了。

  5. 這時再停掉一臺keepalived服務器

     /etc/init.d/keepalived stop
    
  6. 刷新瀏覽器,顯示的將是另外一臺nginx

  7. 這時就可以證明已經實現**高可用**

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