keepalived+nginx高可用配置

模擬環境: 準備兩臺Centos環境linux

Master:10.10.30.100

Backup:10.10.30.101

VIP : 10.10.30.30

安裝Nginxnginx

一. gcc 安裝
安裝 nginx 須要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,若是沒有 gcc 環境,則須要安裝:

yum install gcc-c++

二. PCRE pcre-devel 安裝
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,因此須要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也須要此庫。命令:

yum install -y pcre pcre-devel

三. zlib 安裝
zlib 庫提供了不少種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,因此須要在 Centos 上安裝 zlib 庫。

yum install -y zlib zlib-devel

四. OpenSSL 安裝
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、經常使用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。
nginx 不只支持 http 協議,還支持 https(即在ssl協議上傳輸http),因此須要在 Centos 安裝 OpenSSL 庫。

yum install -y openssl openssl-devel

下載安裝包:

wget http://nginx.org/download/nginx-1.10.3.tar.gz


解壓

tar zxvf nginx-1.10.3.tar.gz

cd nginx-1.10.3

./configure --prefix=/usr/local/server/nginx


make && make install


進入/usr/local/nginx/conf/nginx.conf修改配置文件

進入/usr/local/nginx/sbin/nginx 啓動nginx

安裝keepalived (兩臺Centos機器都要安裝keepalived)c++

1.安裝keepalived正則表達式

yum install -y keepalived

2.編輯keepalived.conf算法

進入keepalived.conf所在目錄:cd /etc/keepalived

首先清除掉keepalived原有配置:> keepalived.conf

從新編輯keepalived配置文件:vi keepalived.conf

         在10.10.30.100(Master)中的keepalived.conf中進行以下配置:               安全

! Configuration File for keepalived
global_defs {
        ## keepalived 自帶的郵件提醒須要開啓 sendmail 服務。 建議用獨立的監控或第三方 SMTP
        router_id tyd133 ## 標識本節點的字條串,一般爲 hostname
}
## keepalived 會定時執行腳本並對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先級。若是腳本執行結果爲 0,而且 weight 配置的值大於 0,則優先級相應的增長。若是腳本執行結果非 0,而且 weight配置的值小於 0,則優先級相應的減小。其餘狀況,維持本來配置的優先級,即配置文件中 priority 對應的值。
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的腳本路徑
        interval 2 ## 檢測時間間隔
        weight -20 ## 若是條件成立,權重-20
}
## 定義虛擬路由, VI_1 爲虛擬路由的標示符,本身定義名稱
vrrp_instance VI_1 {
        state MASTER ## 主節點爲 MASTER, 對應的備份節點爲 BACKUP
        interface enp0s3  ## 綁定虛擬 IP 的網絡接口,與本機 IP 地址所在的網絡接口相同, 個人是 eth0
        virtual_router_id 33 ## 虛擬路由的 ID 號, 兩個節點設置必須同樣, 可選 IP 最後一段使用, 相同的 VRID 爲一個組,他將決定多播的 MAC 地址
        mcast_src_ip 10.10.30.100 ## 本機 IP 地址
        priority 100 ## 節點優先級, 值範圍 0-254, MASTER 要比 BACKUP 高
        nopreempt ## 優先級高的設置 nopreempt 解決異常恢復後再次搶佔的問題
        advert_int 1 ## 組播信息發送間隔,兩個節點設置必須同樣, 默認 1s
        ## 設置驗證信息,兩個節點必須一致
        authentication {
                auth_type PASS
                auth_pass 1111 ## 真實生產,按需求對應該過來
        }
        ## 將 track_script 塊加入 instance 配置塊
        track_script {
                chk_nginx ## 執行 Nginx 監控的服務
        } #
        # 虛擬 IP 池, 兩個節點設置必須同樣
        virtual_ipaddress {
                10.10.30.30 ## 虛擬 ip,能夠定義多個
        }
}

在10.10.30.101(Backup)的keepalived.conf中進行以下配置:bash

! Configuration File for keepalived
global_defs {
        router_id tyd134
}
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2
        weight -20
}
vrrp_instance VI_1 {
        state BACKUP
        interface enp0s3
        virtual_router_id 33
        mcast_src_ip 10.10.30.101
        priority 90
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        track_script {
                chk_nginx
        }
        virtual_ipaddress {
                10.10.30.30
        }
}

檢測nginx的腳本check_nginx.sh網絡

# vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/server/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
fi
fi

放到/etc/keepalived/目錄下(兩臺Centos都要放)測試

給nginx_check.sh賦予執行權限:code

chmod +x /etc/keepalived/nginx_check.sh

啓動keepalived進行測試:

systemctl start keepalived.service

訪問:10.10.30.30

能夠看到成功訪問到nginx頁面

測試高可用

關閉10.10.30.100的nginx服務

再次訪問10.10.30.30,一樣輸出nginx頁面,說明此時訪問的是10.10.30.101的nginx,說明咱們的keepalived+nginx高可用搭建成功

相關文章
相關標籤/搜索