- 負載均衡集羣簡介
- LVS簡介
- LVS IP Tunnel模式
- LVS DR模式
- LVS調度算法
- LVS集羣搭建
負載均衡集羣介紹
- 主流開源軟件LVS、Keepalived、haproxy、nginx等。
- LVS屬於4層負載均衡,Nginx屬於7層負載均衡,Haproxy即可以認爲是4層,也可以做7層使用。
- LVS這種4層的負載均衡是可以分發除80外的其他端口通信的,比如MySQL,而Nginx僅僅支持HTTP、HTTPS、Mail;Haproxy也支持MySQL;
- 相比較來說,LVS這種4層的更穩定,能承受更多的請求,而Nginx這種7層的更加靈活,能實現更多個性化需求。
LVS簡介
- LVS是由國人章文嵩開發。
- LVS是基於TCP/IP做的路由轉發,穩定性和效率很高。
- LVS是工作於Linux內核中的。
- LVS有三種常見的模式:NAT、DR、IP Tunnel
- LVS架構中有一個核心的角色叫分發器(Load Balancer),它用來分發用戶的請求。
一個LVS集羣往往包含以下角色:
- DS:Director Server。指前端負載均衡器節點。
- RS:Real Server。後端真實的工作服務器。
- VIP:Load Balancer對外暴露的虛擬IP,向外部直接面向用戶請求,作爲用戶請求的目標IP地址。
- DIP:Director Server IP。主要用於和內部主機通訊的IP地址。
- RIP:Real Server IP,後端服務器的IP地址。
- CIP:Client IP。客戶端的IP地址。
NAT模式(改IP)
- 藉助iptables的nat表來實現。
- 用戶的請求到分發器後,通過預設的iptables規則,把請求的數據包轉發到後端的RS上去。
- RS需要設定網關爲分發器的內網IP
- 用戶請求的數據包和返回給用戶的數據包全部經過分發器,所以分發器成爲瓶頸。
- 只需要分發器有公網IP即可,所以比較節省公網IP資源。
IP Tunnel模式(封裝報文)
- 需要有一個公共的IP配置在分發器和所有的RS上,也就是VIP
- 客戶端請求的目標IP爲VIP,分發器接收到請求數據包後,會對數據包做一個加工(協議包裝,將原數據包作爲包裝協議的payload,),會把目標IP改爲RS的IP,這樣數據包就到了RS上。
- RS接收數據包後,會還原原始數據包,這樣目標IP爲VIP,因爲所有RS上配置了這個VIP,所以它會認爲是它自已。
DR模式(改Mac)
- 這種模式也需要有一個公共的IP配置在分發器和所有RS上,也就是VIP。
- 和IP Tunnel不同的是,它會把數據包的MAC地址修改爲RS的MAC地址。
- RS接收數據包後,會還原原始數據包,這樣目標IP爲VIP,因爲所有RS上配置了這個VIP,所以它會認爲是它自已。
LVS調度算法
- 輪叫 Round Robin
- 加權輪叫 Weighted Round Robin
- 最少鏈接 Least Connections
- 加權最少鏈接 Weighted Least Connections
- 基於局部性的最少鏈接 Locality-Based Least Connections
- 帶複製的基於局部性的最少鏈接 Locality-Based Least Connections with Replication
- 目標地址散列 Destination Hashing
- 源地址散列 Source Hashing