linux覆盤:集羣構架基礎keepalived+nginx

keepalived+nginx

準備:linux

兩臺虛擬機兩個ip131和133,131做爲master,133做爲backupnginx

下載keeplived和nginx,爲啥要爲nginx服務實現高可用,在生產環境中,不少企業把nginx當作負載均衡的分發器,它絕對不能出現故障,因此爲它實現高可用vip=100vim

下載:bash

兩臺機器都執行yum install -y keepalived負載均衡

兩臺機器都安裝nginx,其中131上已經編譯安裝過nginxless

133上須要yum安裝nginx: yum install -y nginxspa

開始配置backup131:日誌

設置vip=100,在keeplived中定義,兩臺機器主從,主掛了從起來啓動nginx提供服務,那麼從nginx時訪問那個ip,解析ip解析到哪兒,從起來從的ip是什麼,須要定義共有ipcode

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 123456
    }
    virtual_ipaddress {
        192.168.188.100
    }
    track_script {
        chk_nginx
    }
}

131上nginx編輯監控腳本:router

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停了從的服務會自動起來,若是住的keepalived沒有被殺死從的keepalived也起來了,會致使主從爭搶資源爭搶vip由於都監聽vip,域名訪問時不知道訪問那個機器會出現紊亂,此狀況不容許發生。

chmod 755 /usr/local/sbin/check_ng.sh 這裏的這個文件本身定義

systemctl start  keepalived 131啓動服務

查看是否啓動:

ps aux | grep keep 啓動起來了

ps aux | grep nginx 也啓動了

/etc/init.d/nginx stop 如今手動停掉nginx服務

繼續查看nginx服務是否會自動加載看nginx日誌,less /var/log/messages

開始配置backp133:

首先檢查主從防火牆,selinux和firewalld等關閉掉

selinux永久關閉 vi /etc/selinux/config selinux修改此處爲disabled,reboot重啓生效

關閉firewalld:
systemctl disable firewalled 先暫停,不讓開機啓動

systemctl stop firewalld 關閉服務

關閉iptables:
systemctl disable iptables

systemctl stop iptables

配置133keepalived文件:

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                     #權重90,其餘地方都不變
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.188.100
    }
    track_script {
        chk_nginx
    }
}

編寫133nginx監控腳本

vim  /usr/local/sbin/check_ng.sh
#時間變量,用於記錄日誌
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

此時關閉131nginx會自動重啓

此時訪問100會訪問到131上去,這裏並無負載均衡

關閉131的keepalived,133的keepalived啓動進入工做狀態

相關文章
相關標籤/搜索