基于nginx實現(xiàn)web服務(wù)器的雙機(jī)熱備

1.適用場景

對于部署重要的服務(wù),會使用兩臺服務(wù)器,互相備份,共同執(zhí)行同一服務(wù)。當(dāng)一臺服務(wù)器出現(xiàn)故障時,可以由另一臺服務(wù)器承擔(dān)服務(wù)任務(wù),從而在不需要人工干預(yù)的情況下,自動保證系統(tǒng)能持續(xù)提供服務(wù)。雙機(jī)熱備由備用的服務(wù)器解決了在主服務(wù)器故障時服務(wù)不中斷的問題。

2.nginx

nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強(qiáng),事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。

3.方法

前提:

  1. nginx環(huán)境

  2. 準(zhǔn)備兩臺web服務(wù)器

  • 192.168.81.146
  • 192.168.81.147
    在兩臺機(jī)器上部署相同web服務(wù),共用一套存儲設(shè)備,其中146服務(wù)器作為主服務(wù)器,147作為備用服務(wù)器。yii.nginx.com作為該web服務(wù)的域名。

步驟1. 配置nginx.conf文件
在nginx.conf文件里添加如下代碼

   #雙機(jī)熱備方式  
   upstream yii.nginx.com {  
       server 192.168.81.146:8080;  
       server 192.168.81.147:8080 backup;  
   }  
  
   #反向代理配置  
   server {  
     listen       80;  
     server_name  yii.nginx.com;  
     charset utf-8;  
     location /{  
        proxy_pass http://yii.nginx.com;  
     }  
  }  

說明:backup是利用nginx的熱備功能,這也是最典型的應(yīng)用帶來的重要好處之一,當(dāng)非backup Server能夠很好的為Client提供服務(wù)的時候,backup Server不對外界提供服務(wù),此時backup Server處于冷狀態(tài);當(dāng)所有非backup Server不能很好的為Client提供服務(wù)的時候,backup Server為Client提供服務(wù),做到了熱備,某臺或者所有非backup Web Server宕機(jī)不會影響整個Web項目的訪問功能,Web項目仍然可以為Client提供服務(wù)。
步驟2.啟動nginx

start nginx

步驟3.訪問域名http://yii.nginx.com
訪問http://yii.nginx.com域名,可以看到我們部署的web服務(wù)(我們看到的是146服務(wù)器上部署的服務(wù)),如果此時192.168.81.146的服務(wù)器出現(xiàn)故障,服務(wù)器無法連接,nginx自動將請求轉(zhuǎn)發(fā)到備用服務(wù)器192.168.81.147:8080上。通過nginx的主備機(jī)制,使得用戶訪問的web服務(wù)不會因為主服務(wù)器的故障而無法訪問。

4.測試方法可行性

通過上述步驟,我們可以測試nginx對于雙機(jī)熱備是否可行,我們在146機(jī)器上部署tomcat7.0,在147機(jī)器上部署tomcat8.0,當(dāng)146機(jī)器沒有故障時,訪問域名我們可以看到界面是tomcat7.0,當(dāng)我們關(guān)閉146服務(wù),重新訪問域名,訪問頁面是tocmat8.0,因此可以證明,當(dāng)主服務(wù)器出現(xiàn)故障時無法提供服務(wù)時,備用服務(wù)器能代替主服務(wù)器提供服務(wù),保證服務(wù)的不中斷。

5.其他知識點

5.1關(guān)于nginx的反向代理

反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器。

反向代理方式實際上就是一臺負(fù)責(zé)轉(zhuǎn)發(fā)的代理服務(wù)器,貌似充當(dāng)了真正服務(wù)器的功能,但實際上并不是,代理服務(wù)器只是充當(dāng)了轉(zhuǎn)發(fā)的作用,并且從真正的服務(wù)器那里取得返回的數(shù)據(jù)。這樣說,其實nginx完成的就是這樣的工作。我們讓nginx監(jiān)聽一個端口,譬如80端口,但實際上我們轉(zhuǎn)發(fā)給在8080端口的tomcat,由它來處理真正的請求,當(dāng)請求完成后,tomcat返回,但數(shù)據(jù)此時沒直接返回,而是直接給nginx,由nginx進(jìn)行返回,這里,我們會以為是nginx進(jìn)行了處理,但實際上進(jìn)行處理的是tomcat。

5.2關(guān)于雙機(jī)熱備
  1. 雙機(jī)熱備

從廣義上講,就是對于重要的服務(wù),使用兩臺服務(wù)器,互相備份,共同執(zhí)行同一服務(wù)。當(dāng)一臺服務(wù)器出現(xiàn)故障時,可以由另一臺服務(wù)器承擔(dān)服務(wù)任務(wù),從而在不需要人工干預(yù)的情況下,自動保證系統(tǒng)能持續(xù)提供服務(wù)。雙機(jī)熱備由備用的服務(wù)器解決了在主服務(wù)器故障時服務(wù)不中斷的問題。

  1. 為什么使用雙機(jī)熱備

雙機(jī)熱備針對的是服務(wù)器的故障。
服務(wù)器的故障可能由各種原因引起,如設(shè)備故障、操作系統(tǒng)故障、軟件系統(tǒng)故障等等。
而對于一些重要系統(tǒng)而言,用戶是很難忍受這樣長時間的服務(wù)中斷的。因此,就需要通過雙機(jī)熱備,來避免長時間的服務(wù)中斷,保證系統(tǒng)長期、可靠的服務(wù)。
決定是否使用雙機(jī)熱備,正確的方法是要分析一下系統(tǒng)的重要性以及對服務(wù)中斷的容忍程度,以此決定是否使用雙機(jī)熱備。即,你的用戶能容忍多長時間恢復(fù)服務(wù),如果服務(wù)不能恢復(fù)會造成多大的影響。

  1. 雙機(jī)熱備的三種實現(xiàn)方案
    組成雙機(jī)熱備的方案主要的三種方式分別為:基于共享存儲(磁盤陣列)的方式,全冗余方式和復(fù)制方式。
  • (1)基于共享存儲(磁盤陣列)的方式
    共享存儲方式主要通過磁盤陣列提供切換后,對數(shù)據(jù)完整性和連續(xù)性的保障。用戶數(shù)據(jù)一般會放在磁盤陣列上,當(dāng)主機(jī)宕機(jī)后,備機(jī)繼續(xù)從磁盤陣列上取得原有數(shù)據(jù)。如下圖所示
    這種方式因為使用一臺存儲設(shè)備,往往被業(yè)內(nèi)人士稱為磁盤單點故障。但一般來講存儲的安全性較高。所以如果忽略存儲設(shè)備故障的情況下,這種方式也是業(yè)內(nèi)采用最多的熱備方式了。

  • image.png
  • (2)全冗余方式
    全冗余方式就是雙機(jī)雙存儲,基于單臺存儲的傳統(tǒng)雙機(jī)熱備方式,確實存在存儲單點故障的情況,為實現(xiàn)存儲冗余,存儲高可用也已經(jīng)越來越多的被用戶接受。我們從理解上可以看出,雙機(jī)熱備最早是為解決服務(wù)器的計劃性停機(jī)與非計劃性宕機(jī)的解決方案,但是我們無法實現(xiàn)存儲的計劃性停機(jī)與非計劃性宕機(jī)帶來的服務(wù)器停機(jī),而存儲作為雙機(jī)熱備中唯一存儲數(shù)據(jù)的設(shè)備,它一旦發(fā)生故障往往會造成雙機(jī)熱備系統(tǒng)全面崩潰。

  • image.png
  • (3)
    這種方式主要利用數(shù)據(jù)的同步方式,保證主備服務(wù)器的數(shù)據(jù)一致性。

  • image.png

參考資料

http://www.cnblogs.com/Eric-5279/p/5479255.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容