億級流量網站架構核心技術 第二章 負載均衡與反向代理

二層負載均衡是經過改寫報文的目標MAC地址爲上游服務器MAC地址,源IP地址和目標IP地址是沒有變的nginx

四層負載均衡是根據端口將報文轉發到上游服務器算法

七層負載均衡是根據端口號和應用層協議,轉發報文到上游服務器緩存

 

 

 

upstream配置服務器

經過nginx的http指令下的upstream配置上游服務器架構

1 IP地址和端口負載均衡

2 權重分佈式

 

 

 

負載均衡算法代理

1 round-robin:輪詢進程

2 ip_hash:相同ip負載均衡到同一個upstreamip

3 hash key:哈希算法和一致性哈希算法

4 least_conn:將請求負載均衡到最少活躍鏈接的上游服務器

5 least_time:最小平均響應時間進行負載均衡

 

 

 

失敗重試

配置max_fails和fail_timeout,當fail_timeout時間內失敗了max_fails次請求,則認爲服務器不可用,而後fail_timeout時間後再次將該服務器加入

 

 

 

 

健康檢查

1 TCP心跳檢查

2 HTTP心跳檢查

 

 

 

其餘配置

1 域名上游服務器

  在nginx解析配置文件的階段將域名解析成IP地址並保存,可是域名對應IP變化時,該upstream不會更新

2 備份上游服務器

  當主服務器不存活時,纔會發給備服務器

3 不可用上游服務器

 

 

 

長鏈接

keepalive指令配置長鏈接數量,指每一個worker進程與上游服務器可緩存的空閒鏈接的最大數量,超過此數量,最近最少使用的鏈接將被關閉。

此指令不限制worker進程與上游服務器的總鏈接

 

 

 

 

HTTP反向代理示例

 

 

 

 

HTTP動態負載均衡

將upstream動態註冊到nginx上,從而實現upstream服務的自動發現

Consul是一款開源的分佈式服務註冊與發現系統,

實現架構:

1 consul+cousul-template

  (1)upstream啓動,經過管理後臺向consule註冊服務

  (2)在nginx上啓動consul-template agent,監聽服務變動

  (3)動態修改upstream列表

  (4)重啓nginx

2 consul+openResty

  (1)經過Consul管理後臺註冊服務

  (2)nginx啓動,拉取配置,更新到共享字典。經過定時器,按期去拉取配置

  (3)使用共享字典的upstream列表進行動態負載均衡

 

 

 

 

nginx四層負載均衡

1 靜態負載均衡

  配置在stream指令下

2 動態負載均衡

相關文章
相關標籤/搜索