nginx有很強**功能,但是一台nginx就形成了單點,現在使用keepalived來解決這個問題,keepalived的故障轉移時間很短.nginx+keepalived雙機實現nginx反向**服務的高可用,一台nginx掛掉之後不影響應用也不影響內網訪問外網。
keepalived它是乙個基於vrrp協議來實現的web服務高可用方案,可以利用其來避免單點故障。乙個web服務至少會有2臺伺服器執行keepalived,一台為主伺服器(master),一台為備份伺服器(backup),但是對外表現為乙個虛擬ip,主伺服器會傳送特定的訊息給備份伺服器,當備份伺服器收不到這個訊息的時候,即主伺服器宕機的時候,備份伺服器就會接管虛擬ip,繼續提供服務,從而保證了高可用性。
nginx的安裝在我之前的部落格中已經寫過,這裡就不再贅述。
然後就是安裝keepalived
命令:wget
進入解壓後的檔案中cd /root/keepalived-1.2.19。如圖有乙個configure的可執行檔案
在/usr/local檔案下新建keepalived資料夾
mkdir /usr/local/keepalived
接著執行./configure --prefix=/usr/local/keepalived
這裡用nginx來負載均衡不用lvs來負載所以不用管這一行。
make&&make install 來安裝完後/usr/local/keepalived下生成四個資料夾代表安裝成功。
這是/usr/local/keepalived資料夾的目錄結構
安裝完以後執行以下命令以方便以後管理
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
啟動keepalived:service keepalived start
keepalived 雙主配置
主:真實ip192.168.110.134 vip192.168.110.80
備:真實ip192.168.110.135 vip192.168.110.90
主:vrrp_instance vi_1 {
state master // 定義為主伺服器
inte***ce eth0 //vip繫結的網絡卡
virtual_router_id 51 //虛擬路由的id,主從必須一致
priority 100 //優先順序,隨機值但是主伺服器的一定比從伺服器的大
advert_int 1
authentication {
auth_type pass
auth_pass 1111
virtual_ipaddress {
192.168.110.80 //繫結的虛擬ip
vrrp_instance vi_2 {
state backup //定義為從伺服器
inte***ce eth0 //vip繫結的網絡卡
virtual_router_id 52 //虛擬路由的id,主從必須一致
priority 90 //優先順序,隨機值但是主伺服器的一定比從伺服器的大
advert_int 1
authentication {
auth_type pass
auth_pass 1111
virtual_ipaddress{
192.168.110.90 //繫結vip
配置玩重啟keepalived:service keepalived restart
ip addr 檢視
備:vrrp_instance vi_1 {
state backup
inte***ce eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type pass
auth_pass 1111
virtual_ipaddress {
192.168.110.80
vrrp_instance vi_2 {
state master
inte***ce eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type pass
auth_pass 1111
virtual_ipaddress{
192.168.110.90
測試:主伺服器正常工作時,為了方便區別驗證
主伺服器關機或者服務程序死掉立馬切換備伺服器,切換時間人感覺不出來。
負載均衡:
nginx 的 upstream預設是以輪詢的方式實現負載均衡,這種方式中,每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。另外一種方式是ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。
每個主伺服器如下配置
vi /etc/nginx/nginx.conf
upstream test {
server 127.0.0.1 down; //本地伺服器不參與負載
server 192.168.110.136:80 weight=5; //後台伺服器
server 192.168.110.137:80 weight=5;//後台伺服器
配置非常詳細文章:
負載均衡解決方案
某 隨著知名度的提高,使用者訪問量日漸增多,近段時間以來,由於訪問量的激增,服務不可用的情況時有發生。針對這種狀況,結合實際情況,設計了一套解決方案。技術實現 1 負載均衡。2臺同樣配置的linux伺服器,核心支援lvs,配置keepalived工具,即可實現負載 一旦其後的真實伺服器出現故障,ke...
負載均衡 session解決方案
一 使用資料庫存放session 此種方案把session資訊儲存到資料庫表,這樣實現不同應用伺服器間session資訊的共享。適合併發量不大的 優點 實現簡單 缺點 由於資料庫伺服器相對於應用伺服器更難擴充套件且資源更為寶貴,在高併發的web應用中,最大的效能瓶頸通常在於資料庫伺服器。因此如果將 ...
aspx頁面中標題單點解決方案
web頁面標題的單點處理技巧 目前存在的問題 一 整個 中aspx頁面標題通常沒有統一的存放位置,針對每個頁面要麼把頁面標題直接硬編碼在頁面的aspx檔案中,要麼通過aspx.cs動態寫進去 1.1中還要加入額外的標題控制項,2.0中可以使用page.title屬性 而整個站點如果網頁很多的話,這種...