打造極致效能資料庫中介軟體丨LVS+Keepalive+華為雲DDM之理論篇
背景說明
華為雲分散式資料庫中介軟體(Distributed Database Middleware,簡稱DDM),專注於解決資料庫分散式擴充套件問題,突破了傳統資料庫的容量和效能瓶頸,實現海量資料高併發訪問。
DDM使用華為關係型資料庫(RDS)作為儲存引擎,具備自動部署、分庫分表、彈性伸縮、高可用等全生命週期運維管控能力。
上邊幾句話是從華為雲官網的幫助手冊摘錄出來的[1],簡單介紹了DDM服務。從我這個使用者的角度看來,DDM主要優點有:高效能[2]、海量資料支援、資料平滑擴容和業務無感知的讀寫分離。這些特點正是公司當前需要的。改用DDM服務之後,各方面的效能都有很大的提升。但是,公司一部分程式碼使用的是PHP語言,而PHP語言對長連線和客戶端負載均衡的支援不是很好[3]。為了解決這個問題,打算是用LVS做一個負載均衡,通過LVS連線DDM服務。花了將近一週的時間將LVS相關背景瞭解清楚,並搭建成功,業務執行正常。這篇文章詳細介紹了搭建過程,並且對LVS+keepalive從個人理解的角度做了介紹,希望對同輩中人能略有幫助。
LVS+Keeplive理論知識
一、LVS理論基礎
1.LVS是什麼
The Linux Virtual Server(LVS) is a highly scalable and highly available server built on a cluster of real servers, with the load balancer running on the Linux operating system. The architecture of the server cluster is fully transparent to end users, and the users interact as if it were a single high-performance virtual server. For more information, click here.
LVS官網的介紹[4],個人理解,LVS提供一種從Linux核心態支援的高可用、高轉發效率的負載均衡。本身原始碼是開源的GPL協議。值得一提的,LVS是是國人章文嵩發起的一個開源專案。
【問】LVS工作在TCP/IP的哪一層?
【答】LVS有多種工作模式,不能嚴格的說工作在哪一層。簡單說,LVS-NAT工作在IP層,LVS-DR工作在資料鏈路層,LVS-TUN工作在IP層。
【問】LVS能負載多少RealServer?
【答】不同的工作模式轉發效能不一樣,LVS-DR號稱可以支援200+以上節點。
如下對LVS的幾種工作模式做個簡單的介紹,內容均來自“簡書”“醬油菠菜”的一篇文章:https://www.jianshu.com/p/8a61de3f8be9。目前是看到的最簡清晰的介紹了:
LVS的3種工作模式,各自有自己的適用場景,目前用的比較多是LVS-DR模式,DR模式也是3中模式中效能最高的。
2.LVS-NAT
原理:
基於ip偽裝MASQUERADES,原理是多目標DNAT。
所以請求和響應都經由Director排程器。
優點:
●支援埠對映
●RS可以使用任意作業系統
●節省公有IP地址。
RIP和DIP都應該使用同一網段私有地址,而且RS的閘道器要指向DIP。
使用nat另外一個好處就是後端的主機相對比較安全。
缺點:
請求和響應報文都要經過Director轉發;極高負載時,Director可能成為系統瓶頸。
就是效率低的意思。
3.LVS-TUN
原理:
基於隧道封裝技術。在IP報文的外面再包一層IP報文。
當Director接收到請求的時候,選舉出排程的RealServer
當接受到從Director而來的請求時,RealServer則會使用lo介面上的VIP直接響應CIP。
這樣CIP請求VIP的資源,收到的也是VIP響應。
優點:
●RIP、VIP、DIP都應該使用公網地址,且RS閘道器不指向DIP;
●只接受進站請求,解決了LVS-NAT時的問題,減少負載。
●請求報文經由Director排程,但是響應報文不需經由Director。
缺點:
●不指向Director所以不支援埠對映。
●RS的OS必須支援隧道功能。
●隧道技術會額外花費效能,增大開銷。
3.LVS-DR
原理:
當Director接收到請求之後,通過排程方法選舉出RealServer。
講目標地址的MAC地址改為RealServer的MAC地址。
RealServer接受到轉發而來的請求,發現目標地址是VIP。RealServer配置在lo介面上。
處理請求之後則使用lo介面上的VIP響應CIP。
優點:
●RIP可以使用私有地址,也可以使用公網地址。
●只要求DIP和RIP的地址在同一個網段內。
●請求報文經由Director排程,但是響應報文不經由Director。
●RS可以使用大多數OS
缺點:
●不支援埠對映。
●不能跨區域網。
二、Keepalive簡介
Keepalive的官網介紹如下:
Keepalived is a routing software written in C. The main goal of this project is to provide simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures. Loadbalancing framework relies on well-known and widely used Linux Virtual Server (IPVS) kernel module providing Layer4 loadbalancing. Keepalived implements a set of checkers to dynamically and adaptively maintain and manage loadbalanced server pool according their health. On the other hand high-availability is achieved by VRRP protocol. VRRP is a fundamental brick for router failover. In addition, Keepalived implements a set of hooks to the VRRP finite state machine providing low-level and high-speed protocol interactions. Keepalived frameworks can be used independently or all together to provide resilient infrastructures.
簡單概括如下:
●Keepalive是C語言寫的
●Keepalive被廣泛應用於和LVS一起提供4層的負載均衡
● Keepalive可以探測負載均衡節點的健康狀態,管理負載均衡節點
●通過VRRP協議提供高可靠
從上文的介紹可以看出,使用LVS+Keepalive可以搭建一個具備故障自動遷移的高可用負載均衡。本篇主要介紹了一些基礎理論知識,下一篇會詳細的說明怎麼樣一步步使用LVS+Keepalive+DDM搭建高效能的資料庫中介軟體,敬請期待。
參考文獻
[1]. 華為雲DDM官網幫助文件:https://support.huaweicloud.com/productdesc-ddm/zh-cn_topic_0063320859.html
[2]. 華為雲DDM效能指標:https://support.huaweicloud.com/bestpractice-ddm/zh-cn_topic_0062151536.html
[3]. 如何連線華為雲DDM例項:https://support.huaweicloud.com/usermanual-ddm/zh-cn_topic_0055087669.html
[4]. LVS官網:http://www.linuxvirtualserver.org/
[5]. Linux伺服器集群系統(一):http://www.linuxvirtualserver.org/zh/lvs1.html
[6]. Keepalive官網:http://www.keepalived.org/