1. 程式人生 > >Keepalived + Nginx 實現高可用(雙機熱備) Web 負載均衡 安裝測試筆記

Keepalived + Nginx 實現高可用(雙機熱備) Web 負載均衡 安裝測試筆記

system ati 根據 properly 節點配置 sys .gz ive error:

keepalived是什麽

keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障。

keepalived工作原理

keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。

虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

keepalived主要有三個模塊,分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的。

先了貼了一段介紹工作原理下面記錄安裝步驟

先查看下linux版本

#cat /etc/issue
CentOS release 6.6 (Final)

準備了兩臺機器 102,103

技術分享圖片

安裝 Nginx 兩臺機器同時安裝
1、安裝編譯 Nginx 所需的依賴包
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel

openssl openssl-devel

2 下載nginx http://nginx.org/en/download.html

已經下載了 nginx-1.6.2.tar.gz 上傳到 linux 由於機器幹凈沒有rz命令先裝一下

yum install -y lrzsz

3 編譯安裝 分別兩臺機器同時執行

# cd /usr/local/src/

# tar -zxvf nginx-1.6.2.tar.gz

# cd nginx-1.6.2

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

# make && make install

4 由於指定了configure 路徑到 /usr/local/nginx

分別修改102和103

# vi /usr/local/nginx/conf/nginx.conf

#user nobody; 修改為 user root;

listen 80; 改為 listen 81;

技術分享圖片

分別修改102,103兩個機器的 nginx 的歡迎頁面

# vi /usr/local/nginx/html/index.html

技術分享圖片

啟動兩個nginx

# /usr/local/nginx/sbin/nginx -t 先測試下配置文件修改是否正確
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

5、啟動 Nginx
# /usr/local/nginx/sbin/nginx

技術分享圖片

平時維護重啟命令加 -s reload 如下

# /usr/local/nginx/sbin/nginx -s reload

Nginx 開機啟動修改文件

# vi /etc/rc.local

加入 /usr/local/nginx/sbin/nginx

Keepalived 安裝 nginx安裝相對簡單測試正常啟動下面進行

1 http://www.keepalived.org/download.html 下載 然後上傳

2 #cd /usr/local/src

# tar -zxvf keepalived-1.2.18.tar.gz

# cd keepalived-1.2.18

# ./configure --prefix=/usr/local/keepalived

技術分享圖片

提示

configure: error:
!!! OpenSSL is not properly installed on your system. !!!

解決辦法

# yum -y install openssl-devel

技術分享圖片

再次執行configure

# ./configure --prefix=/usr/local/keepalived

技術分享圖片

# make && make install

技術分享圖片

3 因為沒有使用 keepalived 的默認路徑安裝(默認是/usr/local)需要做一些工作

復制默認配置文件到默認路徑

# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
復制 keepalived 服務腳本到默認的地址
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/sbin/keepalived /usr/sbin/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
設置 keepalived 服務開機啟動
# chkconfig keepalived on

4.、修改 Keepalived 配置文件 我們約定102機器為MASTER 節點配置文件(192.168.2.102)

# vi /etc/keepalived/keepalived.conf

技術分享圖片

修改配置文件要先 執行下ifconfig 看下網卡是 eth1

技術分享圖片

修改備103機器

#ifconfig

技術分享圖片

修改配置文件

技術分享圖片

5

編寫 Nginx 狀態檢測腳本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)
腳本要求:如果 nginx 停止運行,嘗試啟動,如果無法啟動則殺死本機的 keepalived 進程,keepalied
將虛擬 ip 綁定到 BACKUP 機器上。內容如下:
# vi /etc/keepalived/nginx_check.sh

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

6 分別啟動102 和103

# service keepalived start

測試1

使用虛擬ip 訪問 http://192.168.2.101:81/ 測試訪問到了102 主nginx

技術分享圖片

2測試常識關閉102機器上的keepalived 再次刷新 http://192.168.2.101:81 看看是否能做切換到103機器nginx上去

# service keepalived stop

技術分享圖片

3 再次啟動102上的keepalived

常識關閉102上的nginx模擬102主節點nginx 故障無法啟動看看是否能正常飄逸vip到103

這裏我把102上的nginx配置文件相當於刪除了然後強殺102 nginx

# mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx-conf

# killall -9 nginx

再次刷新 http://192.168.2.101:81

技術分享圖片

事實證明可以切換漂移

Keepalived 服務管理命令:
停止:service keepalived stop
啟動:service keepalived start
重啟:service keepalived restart
查看狀態:service keepalived status

VIP總會在keepalived服務器中的某一臺上,也只會在其中的某一臺上;VIP綁定的服務器上的nginx就是master,當VIP所在的服務器宕機了,keepalived會將VIP轉移到backup上,並將backup提升為master。

VIP也稱浮動ip,是公網ip,與域名進行映射,對外提供服務; 其他ip一般而言都是內網ip, 外部是直接訪問不了的

Keepalived + Nginx 實現高可用(雙機熱備) Web 負載均衡 安裝測試筆記