Keepalived + Nginx 實現高可用(雙機熱備) Web 負載均衡 安裝測試筆記
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
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 負載均衡 安裝測試筆記