Loading balance 的幾種方法
# Http 重定向
http 重定向 server return status code 302,導向真實的server
優點: 簡單
缺點:
- client 需要兩次的 request
- SEO 問題
# DNS
優點:
DNS 處理相關loading balance , 自己就不用太麻煩
缺點:
DNS 㑹 cache , server 關掉時, DNS 不㑹立刻更新
# reverse proxy(application level)
所有request 到 reverse proxy, reverse proxy → server , server 處理完回傳給 proxy, proxy return client, 造成瓶頸
轉發過程在http 協議層, 所以也叫application 負載平衡
# IP 負載平衡
client 連去 loading balancer(114.100.80.10)
loading balancer 在操作系統內核進程獲取封包,
根據算法得到一台真實的web server 10.0.0.1
改request 的目的地ip 改為 10.0.0.1 , 不需通過application 程序處理。
web server 10.0.0.1 處理後 返回給 loading balancer(114.100.80.10)
封包的source ip 從 web server 10.0.0.1 改為 loading balancer(114.100.80.10)
loading balancer 把封包回傳給client
限制在於網卡頻寬
#數據鏈路層負載平衡(又稱三傳輸模式)
loading 在分發過程中不修改ip 地址, 只改目的地的mac address
通過配置所有web 機器的虛擬ip 和loading balancer ip地址一致
從而達到不用修改封包的source ip 和 目的地ip 就可以做到loading balancer
使用三角傳輸模式的鏈路層負載平衡是目前大型網站使用最廣的一種負載平衡手段
在linux 平台最好的使用三角傳輸模式的開源產品是LVS(Linux Virtual Server)
ref:
大型網站技術架構核心原理與案例分析