集羣介紹、keepalived介紹、keepalived配置高可用集羣

集羣介紹

    將多臺服務器搭建成一個集羣來運行應用程序,能夠避免單點故障,還能提高服務器的承載能力linux

    linux集羣按功能能夠劃分爲兩大類:高可用和負載均衡。nginx

    高可用集羣:一般是兩條服務器,一臺工做,另一臺做爲冗餘,當一臺服務器宕機不能提供服務了,就會有其餘服務器頂替。經常使用的軟件有heartbeat和keepalived,但heartbeat已經好久沒有跟新了。vim

    負載均衡集羣:把用戶的請求分攤到多臺服務器上面。實現負載均衡的開源軟件有LVS、keepalived、haproxy、Nginx等,商業的負載均衡設備 F五、NetScaler。bash

 

keepalived介紹

    VRRP協議是實現路由高可用的一種通訊協議,在這個協議裏會把多臺功能相同的路由器組成一個組,這個組會有一個主角色(masteer)和多個備用角色(backup)。工做的時候主角色會經過組播的形式向各個備用角色發送VRRP協議的數據包,當備用角色收不到主角色發來的VRRP數據包的時候,就會認爲主已經宕機了,這個時候就會須要根據優先級來讓一個備用角色成爲新的主。服務器

    keepalived就是採用VRRP協議來實現高可用集羣,keepalived有三個模塊:core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件加載和解析。check模塊負責健康檢查。vrrp模塊用來實現VRRP協議。負載均衡

用keepalived配置高可用集羣

 1.   準備兩臺linux機器,在兩臺機器上都下載keepalived,一臺作主角色,另外一臺作備用角    [root@xinylinux-1 ~]# yum install -y keepalived                                                                     [root@xinylinux-2 ~]# yum install -y keepalived測試

2.    兩臺機器上都要安裝Nginx                                                                                                             [root@xinylinux-1 ~]# yum install -y nginxspa

另外一臺之前已經安裝了源碼包日誌

  3.  編輯主角色(master)的keepalived配置文件router

[root@xinylinux-2 ~]# vim /etc/keepalived/keepalived.conf 

文件內容:

global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"   //自定義腳本監控Nginx服務
    interval 3    //每隔3秒執行一次這個腳本
}

vrrp_instance VI_1 {
    state MASTER   //角色爲主
    interface ens33   //針對哪一個網卡監聽VIP
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com    //自定義密碼
    }
    virtual_ipaddress {
        192.168.188.100     //定義VIP,即虛擬IP
    }

    track_script {
        chk_nginx   //定義監控腳本
    }

}
 

   4. 定義一個監控Nginx服務的腳本

[root@xinylinux-2 ~]# vim /usr/local/sbin/check_ng.sh

腳本內容爲:

#!/bin/bash
#時間變量,用於記錄日誌
d=`date --date today +%Y%m%d_%H:%M:%S`
#計算nginx進程數量
n=`ps -C nginx --no-heading|wc -l`
#若是進程爲0,則啓動nginx,而且再次檢測nginx進程數量,
#若是還爲0,說明nginx沒法啓動,此時須要關閉keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

  5. 腳本更改權限

[root@xinylinux-2 ~]# chmod 755 /usr/local/sbin/check_ng.sh

  6.  啓動主上的keepalived,

[root@xinylinux-2 ~]# systemctl start keepalived
[root@xinylinux-2 ~]# ps aux |grep keepalived
root      1731  0.0  0.1 118652  1400 ?        Ss   22:00   0:00 /usr/sbin/keepalived -D
root      1732  0.0  0.3 127516  3304 ?        S    22:00   0:00 /usr/sbin/keepalived -D
root      1733  0.1  0.2 127456  2848 ?        S    22:00   0:00 /usr/sbin/keepalived -D
root      1830  0.0  0.0 112720   976 pts/0    R+   22:00   0:00 grep --color=auto keepalived
 

   7.配置備用角色keepalived配置文件

和主的內容差很少,只要把state 改成BACKUP,priority的數值要比主上的小,VIP改一下。就能夠了

   8.編輯監控腳本

內容:

#!/bin/bash

#時間變量,用於記錄日誌
d=`date --date today +%Y%m%d_%H:%M:%S`
#計算nginx進程數量
n=`ps -C nginx --no-heading|wc -l`
#若是進程爲0,則啓動nginx,而且再次檢測nginx進程數量,
#若是還爲0,說明nginx沒法啓動,此時須要關閉keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

 

    9.啓動keepalived服務

而後測試

相關文章
相關標籤/搜索