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

集羣介紹

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

keepalived介紹

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

用keepalived配置高可用集羣

keepalived他須要包含一個服務,好比這個服務用來實現高可用,最先講述集羣的時候一個角色可能存在單點故障,若是這個服務當機就有問題了,如今想讓這個服務高可用就得用一個keepalived或者heartbeat等高可用的軟件,讓他實現高可用
搭建了高可用的集羣首先要有個keepalived的服務而後還要有讓那個服務去實現高可用,這裏用nginx作高可用的實驗
爲何用nginx作實驗對象,由於在工做中或在生產環境中好多企業把nginx做爲負載均衡器,後面講負載均衡集羣的時候會介紹到nginx他能夠實現負載均衡linux


準備兩臺機器192.168.63.100和192.168.63.101,192.168.63.100做master,192.168.63.101做爲backup
兩臺機器都執行yum install -y keepalivednginx

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

兩臺機器都安裝nginx,其中100上已經編譯安裝過nginx,101上須要yum安裝nginx: yum install -y nginx

在101上安裝nginx的時候提示沒有可用軟件包 nginx。錯誤:無須任何處理,這個由於centos7系統庫中默認是沒有nginx的rpm包的,因此咱們本身須要先更新下rpm依賴庫git

[root@101xuni2 ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm             ##更新rpm依賴庫

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

以上操做完成後修改100上keepalived的配置文件,配置文件內容去https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf獲取vim

[root@100xuni1 ~]# ls /etc/keepalived/keepalived.conf      ##配置文件路徑
/etc/keepalived/keepalived.conf
[root@100xuni1 ~]# > !$                        ##清空配置文件的原始內容
> /etc/keepalived/keepalived.conf
[root@100xuni1 ~]# 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"
    interval 3
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.188.100
    }

    track_script {
        chk_nginx
    }

}

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

130上定義檢查nginx是否正常的腳本,內容從https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh獲取
centos

[root@100xuni1 ~]# 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

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

寫完腳本作權限若是不去改這個他就沒有權限自動加載這個腳本bash

[root@100xuni1 ~]# chmod 755 /usr/local/sbin/check_ng.sh

100上啓動服務負載均衡

[root@100xuni1 ~]# systemctl start keepalived

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

關閉nginx服務自動起來keep成功less

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

查看日誌ide

[root@100xuni1 ~]# less /var/log/messages

開始配置從,在配置從以前先看防火牆測試

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

從上修改配置文件內容從https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf獲取

[root@101xuni2 ~]# 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"
    interval 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.188.100
    }

    track_script {
        chk_nginx
    }

}

定義檢查nginx是否正常的腳本內容從https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_check_ng.sh獲取

[root@101xuni2 ~]# 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
        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

給腳本755權限

[root@101xuni2 ~]# chmod 755 /usr/local/sbin/check_ng.sh

啓動keepalived服務

[root@101xuni2 ~]# systemctl start keepalived

刪除nginx自動啓動成功

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

區分主從的nginx

主默認頁

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

從,是yum安裝的默認頁

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

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

訪問63.200的默認頁

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

下面作測試高可用的時候訪問的是vip的ip是192.168.63.200

停掉Keepalived查看是否高可用成功

集羣介紹、keepalived介紹、用keepalived配置高可用集羣
之前主沒事的時候vip顯示主的頁面,主出現問題後跳轉到從的頁面設置高可用設置成功
集羣介紹、keepalived介紹、用keepalived配置高可用集羣

主上恢復後,從上不運行vip的ip了一切恢復正常

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

高可用集羣測試完畢

相關文章
相關標籤/搜索