Kate Li (Taiwan)的部落格

首頁

lvs科技淺析

作者 morcillo 時間 2020-03-01
all

LVS是LinuxVirtualServer的縮寫,意思是Linux虛擬伺服器,早在2.4內核就已經合併入linux標準內核,並被全球各大互聯網公司廣泛使用;據我所知,國內百度/新浪/阿裡/騰訊等都在使用LVS;下圖是LVS在常用互聯網應用架構中的位置:LVS處於最前端,用於將用戶請求轉發到後端的多臺webserver上。

LVS引入Virtual Server的概念,用戶的請求由Virtual Server按一定負載均衡策略(如,round-robin)轉發到多臺後端webserver上,後端webserver被稱為RealServer。

注:當前,無論是LVS還是商業LB均採用了VirtualServer的概念。

對於用戶來說,其一直和Virtual Server通訊,不用關心後端有哪些RealServer;對於服務網站來說,其可以根據請求規模擴大/縮減RealServer數量,而不需要通知用戶。 

      介紹到這,可能有人會問,在LVS出現以前,還有哪些LB科技?LVS比這些科技好在哪裡?why LVS?

      在這之前,普遍使用DNS科技來實現LoadBalance,例如,www.taobao.com這個功能變數名稱在DNS中配寘對應5個ip地址(5臺apache server);DNS伺服器一般會採用round-robin的策略返回ip地址給用戶,從而實現流量在5臺apache server間的負載均衡。

注1:DNS科技介紹參見:http://en.wikipedia.org/wiki/Domain_Name_System;

注2:常用的DNS開源軟件是BIND,參見:https://www.isc.org/software/bind;

      和LVS相比,DNS有如下不足:

1.      一臺apache server down後,DNS中删除相應ip,删除生效時間不可控;(Local DNS不一定嚴格遵守約定的TTL);

2.     負載均衡策略單一,只支持WRR(weight-Round-Robin)策略;

3.     Apache Server間流量不均衡,因為每個Local DNS後端的用戶數量是不同的,TTL也不同;