一、LVS介紹
1. 為應用服務器提供高可用性和負載均衡的能力,滿足大量並發訪問的需要 2. 節約成本。替代商業的硬件負載均衡器,為起步型IT公司提供價格低廉的解決方案。理想選擇。
二、 軟件簡介
1. LVS簡介 LVS是一個開源的軟件,由畢業於國防科技大學的章文嵩博士於1998年5月創立,可以 實現LINUX平台下的簡單負載均衡。LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務器。
1.1工作原理 LVS由前端的負載均衡器(Load Balancer,LB)和後端的真實服務器(Real Server, RS)群組成。RS間可通過局域網或廣域網連接。結構對用戶是透明的,用戶只能看見一台作為LB的虛擬服務器(Virtual Server),而看不到提供服務的RS群。 當用戶的請求發往虛擬服務器,LB根據設定的包轉發策略和負載均衡調度算法將用戶請求轉發給RS。RS再將用戶請求結果返回給用戶。同請求包一樣,應答包的返回方式也與包轉發策略有關。
1.2三層結構 (1) Load Balancer(負載均衡器): 調度器是整個集群系統的前端,負責把客戶請求轉發到Real Server上。
Backup是備份負載調度器,當Master Load Balancer不可用時,有Backup接替,成為Master Load Balancer。
Load Balancer通過Ldirectord監測各Real Server的健康狀況。在Real Server不可用時把它從群中剔除,恢復時重新加入。 (2) Server pool(服務器池):
Server pool是一組運行實際應用服務的機器,比如WEB, Mail, FTP, DNS, Media等等。 (3) Shared Storage(共享存儲):
Shared Storage為所有Real Server提供共享存儲空間和一致的數據內容。 1.3實現模式 1)Virtual Server via NAT2)Virtual Server via IP Tunneling 3)Virtual Server via Direct Routing 1.4 調度算法
2. Piranha簡介 一款類似於keepalived的web配置軟件,優點是方便而而且直觀,在30分鐘內可配置一套基於LVS基礎的負載均衡高可用解決方案。
2.1 Piranha組件 > Pluse 負責主調度器和備份調度器之間的的健康狀態檢測,heartbest的通信進程。 > Lvsd Lvsd進程活動在LVS路由器中,讀取/etc/sysconfig/ha/lvs.cf,調用ipvsadm來構建和維護IPVS路由表,並為每個配置LVS服務分配nanny。 > Ipvsadm 此服務更新和維護內核中的IPVS路由表,LVS進程通過調用ipvsadm來添加、修改或刪除IPVS路由表。 > Nanny Nanny存在於狀態是Active的的路由器中。通過此進程,活動狀態的調度器可以檢測每個realserver的狀態,同時管理監控負載狀態。每個realserver中定義的每一個服務都有一個獨立的nanny進程管理。 > Send_arp 在活動調度器失效時,備用調度器調用send_arp將虛擬地址切換到備份調度器。並在公網和局域網發送命令關掉lvsd進程,同時啟動備份掉武器的LVSD進程。
三、 配置3.1 方案IP信息列表
名稱 IP 心跳地址
LVS-Active 192.168.2.167 /24 10.0.0.1/32
LVS-Backup 192.168.2.165/24 10.0.0.2/32
Real-Server1 192.168.0.112
Real-Server2 192.168.0.113
LVS-VIP 192.168.2.168
3.2 配置環境:
Director: CentOS 6.4
RealServer: Windows Server Enterprise 2003,CentOS 6.4
配置方式:VS/DR(直接路由)
軟件:ipvsadm+piranha
3.3.1 安裝lvs,Piranha、PHP。
#yum install ipvsadm modcluster piranha system‐config‐cluster php php‐cli php‐common
3.3.2 配置Piranha 主LVS服務器
#vim /etc/sysctl.conf //修改系統參數 Net.ipv4.ip_forward = 1 //將默認0修改為1,開啟IP轉發 #sysctl –p //執行命令即時生效
3.3.2.2 啟動piranha服務
#/etc/init.d/piranha-gui start //啟動piranha服務
#/usr/sbin/piranha-passwd //設置piranha登陸密碼
使用浏覽器打開管理頁面:http://localhost:3636 如圖:
登陸管理頁面用戶名:piranha 密碼: (執行/usr/sbin/piranha-passwd)後輸入的密碼
3.3.3 配置主LVS服務器
點擊 GLOBAL SETINGS > Primary server public IP : 192.168.2.167
Primary server private IP ( May be blank) : 10.0.0.1 // 心跳地址
Use network type : Direct Routing // 直接路由方式
點擊 ACCEPT //保存
3.3.4 配置Backup Server (不部署備用LVS 直接查看3.3.5 )
點擊 ENABLE 激活冗余服務器
Redundant server public IP: 192.168.2.165 //備份LVS地址
Heartbeat interval (seconds):6 //心跳網絡檢測時間
Assume dead after(seconds):18 //死亡轉移時間
Heartbeat runs on port:539 //監控的端口
Monitor NIC links for failures : 不勾選 //網卡鏈路失效選項
Syncdaemon: 不勾選 //同步守護進程選項
3.3.5 配置虛擬服務器 > 點擊 VIRTUAL SERVER > ADD
添加一條心的記錄並編輯
name : LVS-VIP //自定義名稱
Application port :80 //監控應用端口號
Protocol :tcp //監控網絡的協議類型
Virtual IP Address:192.168.2.168 //虛擬服務器的IP地址
Virtual IP Network Mask: 255.255.255.255 //虛擬服務掩碼
Device: p4p1:0 //虛擬IP設備宿主 >
Re-entry time: 15 //移除RS後從新加入時間
Service timeout: 6 //RS失效後存活時間
Scheduling: WRR //調度算法
Persistence: 30 //維持時間
Persistence Network Mask:255.255.255.255 //掩碼