用Nginx 給Google App Engine 做負(fù)載均衡_Web服務(wù)器教程
周末突發(fā)奇想“能不能用nginx給自己的多個(gè)Google App Enine (以下簡(jiǎn)稱GAE)應(yīng)用作負(fù)載均衡呢?”想想蠻有意思的,動(dòng)手試試看吧,不過這是我第一次用nginx做負(fù)載均衡,也是玩玩而已,我還沒有那么大訪問量的應(yīng)用。
關(guān)于nginx的介紹,百度百科,維基百科和官網(wǎng)都能找到,國(guó)內(nèi)的張晏寫很了個(gè)很詳細(xì)的用nignx 搭建Web服務(wù)器的教程-《Nginx + PHP (FastCGI)搭建勝過Apache十倍的Web服務(wù)器》,也是得益于這個(gè)教程,我才順利的在vps上用nginx搭建好了Web服務(wù)器,在此表示感謝。
負(fù)載均衡聽起來貌似很復(fù)雜,很深?yuàn)W的技術(shù),等你親自嘗試一番之后會(huì)發(fā)現(xiàn):其實(shí)在nginx上配置比較簡(jiǎn)單。
好了,下面就進(jìn)入到我們這個(gè)系統(tǒng)吧,我們要架構(gòu)的整個(gè)系統(tǒng)的結(jié)構(gòu)如下:
步驟1.配置nginx代理訪問GAE應(yīng)用
首先,我們要配置多個(gè)代理(你有多少個(gè)GAE應(yīng)用配額就可以設(shè)置多少個(gè)代理),直接通過IP訪問GAE的應(yīng)用是行不通的,因?yàn)镚oogle的服務(wù)器無法辨認(rèn)是哪個(gè)應(yīng)用,所以我們要使用nginx做代理,每個(gè)代理的配置方式如下:
- server
- {
- listen 8081;
- location / {
- proxy_pass http://app1.appspot.com;
- proxy_set_header Host "app1.appspot.com";
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }
- ....
server { listen 8081; location / { proxy_pass http://app1.appspot.com; proxy_set_header Host "app1.appspot.com"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ....
上面配置中設(shè)置主機(jī)頭是關(guān)鍵配置,它應(yīng)該設(shè)置為你GAE應(yīng)用的原始域名,一般是xxx.appspot.com。當(dāng)你重新nginx配置后,你將可以通過8081端口訪問你的GAE應(yīng)用。
步驟2.配置負(fù)載均衡
nginx負(fù)載均衡是通過添加upstream{..}配置節(jié)來實(shí)現(xiàn)的,我配置了一個(gè)最簡(jiǎn)單的負(fù)載均衡方式:
- upstream backend
- {
- server 127.0.0.1:8081;
- ...
- }
upstream backend { server 127.0.0.1:8081; ... }
可以看到,上面可以配置多個(gè)server字段,因?yàn)樵谇懊媾渲昧硕鄠(gè)代理,它們各自使用的端口不同。關(guān)于Server,據(jù)我所知有兩種類型:
1.每個(gè)Server的ip不同,開始我給每個(gè)代理分配了一個(gè)域名,然后試圖通過不同域名來區(qū)分server,失敗了,這個(gè)還有待研究,有了解的朋友請(qǐng)不吝賜教。
2.每個(gè)Server的端口號(hào)不同,這個(gè)就是我們上面采取的方式了。
Server除了配置地址參數(shù)外,還有其他很重要的參數(shù),比如設(shè)置每個(gè)Server的權(quán)重,是否為備份server等等,需要知道更詳細(xì)的,建議看官方wiki。大家也可以嘗試多種配置,做做實(shí)驗(yàn)嘛~~
步驟3.配置應(yīng)用的總?cè)肟?/h4>
其他配置都準(zhǔn)備就緒了,就差一個(gè)應(yīng)用的入口點(diǎn),也就是訪問這個(gè)系統(tǒng)的域名,我的配置如下:
- server
- {
- listen 80;
- server_name g.ooq.me;
- location / {
- proxy_pass http://backend;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }
server { listen 80; server_name g.ooq.me; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
到這里所有的配置也就完了,重新加載一下nginx的配置文件,這個(gè)系統(tǒng)就啟動(dòng)了。想看看效果可以點(diǎn)這里。
總結(jié)
搭建這個(gè)系統(tǒng)有諸多好處:
1.可以免費(fèi)使用多個(gè)GAE跑一個(gè)應(yīng)用。
2.一個(gè)很好的學(xué)習(xí)nginx負(fù)載均衡的配置的實(shí)驗(yàn)環(huán)境。
3.永遠(yuǎn)不用擔(dān)心GAE被封掉,只要確保你的vps能訪問。
缺點(diǎn)也是存在的:
1.企業(yè)級(jí)的應(yīng)用暫時(shí)是不可能的了,就算有也不用這么麻煩,GAE本就是云計(jì)算應(yīng)用,Google已經(jīng)做了負(fù)載均衡,也就只能個(gè)人玩玩,做個(gè)博客什么的還是很好的選擇。
2.帶寬的問題,我的vps是在美國(guó),ping了一下GAE的服務(wù)器只要6-8ms,還算是比較滿意的,如果你的vps是在國(guó)內(nèi)的話,估計(jì)速度速度會(huì)成問題。
3.數(shù)據(jù)庫(kù)的共享是一個(gè)比較復(fù)雜的問題,如果每個(gè)GAE應(yīng)用都用單獨(dú)的數(shù)據(jù)庫(kù)的話,那就不是一個(gè)系統(tǒng)了。迫切期待大家想出好的解決方式。
- 推薦!各類建站程序偽靜態(tài)規(guī)則代碼
- 詳細(xì)的DedeCMS(織夢(mèng))目錄權(quán)限安全設(shè)置教程
- iis安全設(shè)置全方位教程
- 巧妙出招致勝服務(wù)器管理
- Win Server 2003個(gè)人網(wǎng)絡(luò)服務(wù)器安全攻略
- Windows 2003校園Web服務(wù)器常見問題
- 清除IIS配置文件后門隱患
- Web服務(wù)器和應(yīng)用程序服務(wù)器有什么區(qū)別
- 虛擬主機(jī)下asp.net 2.0的導(dǎo)航控件treeview,menu等出錯(cuò)
- IIS6.0服務(wù)器架站無法訪問解決方案總結(jié)
- 圖解支持多語(yǔ)言環(huán)境的IIS服務(wù)器配置
- IIS服務(wù)器排錯(cuò)指南及錯(cuò)誤代碼大全
- 相關(guān)鏈接:
- 教程說明:
Web服務(wù)器教程-用Nginx 給Google App Engine 做負(fù)載均衡。