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