現(xiàn)在Nginx到處都可以見到,經(jīng)常會看到宕機后的網(wǎng)頁會顯示nginx的字樣雀摘,這也說明Nginx由于高性能裸删、使用配置簡、開源單這些特點被越來越多的用戶所接受阵赠,所使用涯塔。其中第一種作為http服務(wù)器,結(jié)合php-fpm進程清蚀,對發(fā)來的請求進行處理匕荸,nginx本身并不會解析php,他只是作為一個服務(wù)器枷邪,接受客戶端發(fā)來 的請求榛搔,如果是php請求,則交給php進程處理东揣,并將php處理完成之后的結(jié)果發(fā)送給客戶端践惑。這個很簡單,安裝好nginx+php-fpm之后配置好 各自的配置文件嘶卧,啟動就可以實現(xiàn)尔觉。運行原理可以看下面這段解釋:
以下我們就來舉例說明如何使用 nginx 實現(xiàn)負載均衡。因為nginx在處理并發(fā)方面的優(yōu)勢芥吟,現(xiàn)在這個應(yīng)用非常常見侦铜。當(dāng)然了Apache的 mod_proxy和mod_cache結(jié)合使用也可以實現(xiàn)對多臺app server的反向代理和負載均衡,但是在并發(fā)處理方面apache還是沒有 nginx擅長钟鸵。
//上面的文字是復(fù)制張貼的泵额,不過寫這些東西的文采,比我屌携添。算了嫁盲。i/o密集型nginx, cpu密集型 httpd。
額~ 百度會得到很多比如lvs、haproxy羞秤、nginx缸托,算了我以后上云的。 keepalived + nginx好像好多都在用瘾蛋。那天研究運維的時候再來寫吧俐镐。先搞PHP開發(fā)方面的。
好了哺哼,開始佩抹,3臺機子。
一臺nginx的
兩臺httpd
upstream qwer{
server 114.215.252.233 weight=3;
server 121.40.76.153 weight=2;
}
location / { }里面加上proxy_pass http://qwer;
隨便解釋一下weight就是“權(quán)重”取董,寫3的就是有3/5的概率被選擇到棍苹,小學(xué)數(shù)學(xué)了。
weight=2茵汰,就是2/5的概率枢里。看下圖
設(shè)置完后蹂午,重新重啟nginx栏豺。
結(jié)果圖出來了,能看得懂吧豆胸。我看得懂就行了奥洼。
max_fails=2 fail_timeout=30s; //后面加上這兩個。
3.max_fails :允許請求失敗的次數(shù)默認為1.當(dāng)超過最大次數(shù)時晚胡,返回proxy_next_upstream 模塊定義的錯誤 4.fail_timeout:max_fails次失敗后溉卓,暫停的時間。
寫人話吧搬泥,按照上面的,當(dāng)max_fails掛2次之后伏尼,fail_timeout每30秒就會拿棍子捅它忿檩,看看有沒有掛,
如果還是掛了爆阶,再等30秒去捅它燥透。直到它起死回生。
我就直接來把它服務(wù)停止辨图,讓它掛了班套。
之后,nginx就會選擇沒有掛的那臺故河,蠻機智的吱韭。
之后來寫個backup
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器鱼的。所以這臺機器壓力會最輕理盆。
人話:備胎痘煤,就是給汽車準(zhǔn)備一個備用輪胎,一旦那個輪子爆胎或者出了問題猿规,備用輪胎就方便及時地取而代之衷快,汽車就不至于中途拋錨。
用于我只搞了3臺姨俩,現(xiàn)在備胎用不了蘸拔,那么就結(jié)果就是一直訪問114.215.252.233;
把114.215.25搞宕機后环葵,就用備胎了调窍。看下面的圖积担。
ip_hash;
nginx中的ip_hash技術(shù)能夠?qū)⒛硞€ip的請求定向到同一臺后端陨晶,這樣一來這個ip下的某個客戶端和某個后端就能建立起穩(wěn)固的session。
就是變成固定訪問了帝璧,訪問了A機先誉,那么就固定訪問A機。不會去訪問BCDE機了的烁。
有好處褐耳,也有壞處吧。
upstream qwer{
ip_hash;
server 114.215.252.233 weight=3 max_fails=2 fail_timeout=30s;
server 121.40.76.153 weight=2;
}
至于說session共享渴庆,這個用戶登陸方面铃芦,我想到就是把uid存在cookie。
這樣用戶襟雷,至少不用被踢出來刃滓。直接讀取cookie里面uid。其實貌似現(xiàn)在
第三方的來做session共享耸弄。比如memcached redis咧虎。額~就這樣吧。