nginx負載均衡原理是什么?負載均衡在服務端開發(fā)中是一個比較重要的特性。因為Nginx除了作為常規(guī)的Web服務器外,還被大規(guī)模的用于反向代理前端。
Nginx的異步框架可以處理很大的并發(fā)請求,把這些并發(fā)請求hold住之后,就可以分發(fā)給后臺服務端來做復雜的計算、處理和響應,并且在業(yè)務量增加的時候可以方便地擴容后臺服務器。
對于常用的HTTP負載均衡,主要先定義一個upstream作為backend group,然后通過proxy_pass/fastcgi_pass等方式進行轉(zhuǎn)發(fā)操作,其中fastcgi_pass幾乎算是Nginx+PHP站點的標配了。
Nginx中有會話一致性是通過sticky開啟的,會話一致性和之前的負載均衡算法之間并不沖突,只是需要在第一次分配之后,該會話的所有請求都分配到那個相同的backend上面。目前支持三種模式的會話一致性:Cookie Insertion、Sticky Routes、Learn。
負載均衡不是nginx獨有,apache也有,但性能可能不如nginx。多臺服務器提供服務,但域名只解析到主服務器,而真正的服務器IP不會被ping下即可獲得,增加一定安全性。
upstream里的IP不一定是內(nèi)網(wǎng),外網(wǎng)IP也可以。不過經(jīng)典的案例是,局域網(wǎng)中某臺IP暴露在外網(wǎng)下,域名直接解析到此IP。然后又這臺主服務器轉(zhuǎn)發(fā)到內(nèi)網(wǎng)服務器IP中。某臺服務器宕機、不會影響網(wǎng)站正常運行,Nginx不會把請求轉(zhuǎn)發(fā)到已宕機的IP上