兩台相同配置的web
用途ip
master
192.168.1.100
backup
192.1681.101
兩台接入伺服器分別安裝nginx和keepalived:
準備依賴包:
安裝nginx
安裝keepalive
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/cp /usr/local/sbin/keepalived /usr/sbin/
加入啟動服務
echo "/usr/local/nginx/sbin/nginx
" >> /etc/rc.local
echo
"/etc/init.d/keepalived start
" >> /etc/rc.local
3.1配置nginx
兩台接入伺服器的nginx的配置完全一樣,主要是配置/usr/local/nginx/conf/nginx.conf的http。其中多網域名稱指向是通過虛擬主機(配置http下面的server)實現;同一網域名稱的不同虛擬目錄通過每個server下面的不同location實現;到後端的伺服器在http下面配置upstream,然後在server或location中通過proxypass引用。要實現前面規劃的接入方式,http的配置如下:
驗證方法:
首先用ip訪問前表中各個應用伺服器的url
再用網域名稱和路徑訪問前表中各個應用系統的網域名稱/虛擬路徑
3.2配置keepalived
master:! configuration file for
keepalived
global_defs
vrrp_instance vi_1
virtual_ipaddress
}backup:
! configuration file for
keepalived
global_defs
vrrp_instance vi_1
virtual_ipaddress
}
驗證:先後在主、從伺服器上啟動keepalived: /etc/init.d/keepalived start
在主伺服器上檢視是否已經繫結了虛擬ip: ip addr
停止主伺服器上的keepalived: /etc/init.d/keepalived stop 然後在從伺服器上檢視是否已經繫結了虛擬ip:
啟動主伺服器上的keepalived,看看主伺服器能否重新接管虛擬ip
3.3讓keepalived監控nginx的狀態
經過前面的配置,如果主伺服器的keepalived停止服務,從伺服器會自動接管vip對外服務;一旦主伺服器的keepalived恢復,會重新接管vip。 但這並不是我們需要的,我們需要的是當nginx停止服務的時候能夠自動切換。
keepalived支援配置監控指令碼,我們可以通過指令碼監控nginx的狀態,如果狀態不正常則進行一系列的操作,最終仍不能恢復nginx則殺掉keepalived,使得從伺服器能夠接管服務。
如何監控nginx的狀態
最簡單的做法是監控nginx程序,更靠譜的做法是檢查nginx埠,最靠譜的做法是檢查多個url能否獲取到頁面。
如何嘗試恢復服務
如果發現nginx不正常,重啟之。等待3秒再次校驗,仍然失敗則不再嘗試。
根據上述策略很容易寫出監控指令碼。這裡使用nmap檢查nginx埠來判斷nginx的狀態,記得要首先安裝nmap。監控指令碼如下:
#!/bin/bash# check nginx server status
nginx=/usr/local/nginx/sbin/nginx
port=8080
nmap localhost -p $port | grep "
$port/tcp open
"#echo $?
if [ $? -ne 0
];then
$nginx -s stop
$nginx
sleep
3nmap localhost -p $port | grep "
$port/tcp open
"[ $? -ne 0 ] && /etc/init.d/keepalived stop
fi
不要忘了設定指令碼的執行許可權,否則不起作用。
假設上述指令碼放在/opt/chk_nginx.sh,則keepalived.conf中增加如下配置:
主keepalived例子:! configuration file for
更進一步,為了避免啟動keepalived之前沒有啟動nginx , 可以在/etc/init.d/keepalived的start中首先啟動nginx:
start()retval=$?echo
[ $retval -eq 0 ] && touch /var/lock/subsys/$prog
}
負載均衡 nginx keepalive
主伺服器配置完後執行 service keepalived start開啟主檢視ip addr是否繫結主伺服器是否接管 service keepalived status檢視是否執行 service keepalived stop關閉主檢視ip addr是否繫結從伺服器是否接管 track scri...
Spring Cloud Ribbon實現負載均衡
之前文章 spring cloud 服務註冊和發現 spring cloud 服務端高可用 負載均衡在系統架構中是乙個非常重要的角色,在前面大型 架構學習總結中,可以看到,高可用,伸縮性,效能幾個架構要素中,負載均衡都有著很重要的地位,是系統壓力緩解,系統擴容的重要手段之一。一般來說,我們講的負載均...
nginx rsync inotify實現負載均衡
實驗環境 前端nginx ip 192.168.6.242,對後端的wordpress 做反向 實現負載均衡 後端nginx ip 192.168.6.36,192.168.6.205都部署wordpress,並使用相同的資料庫 安裝rsync和inotify 在後端的兩個wordpress上配置r...