對於大型企業,後臺的服務器成千上萬臺,如何合理的將來自客戶端訪問的壓力平均適宜的分配給各個後臺服務器是至關重要的問題,將壓力均發給後臺服務器,可以有效的控制流量,有助於加快客戶的訪問速度,提高用戶體驗。
負載均衡的實現分類:
1、根據硬軟件分類劃分
硬件:F5Big-IP Citrix Netscaler A10 A10
軟件:LVSnginx haproxy ats perlbal pound
2、根據工作的協議層次劃分
傳輸層:LVS nginx haproxy
應用層:http:nginx, httpd, haproxy
fastcgi :nginx, httpd
mysql: mysql-proxy
這裏小編只針對LVS進行講述
一、LVS介紹
1、LVS工作原理:VS根據請求報文的目標IP和目標協議及端口將其調度轉發到某RS,根據調度算法來挑選RS
2、專業術語:
VS:VirtualServer 調度器
RS:Realserver 真正提供服務的調度器
CIP:客戶端IP
VIP:VS的外網IP
DIP:VS的內網IP
RIP:RS的IP地址
3、客戶端通過VS的訪問流程:
CIP <------> VIP ==DIP <------> RIP
4、實現LVS的管理工具
Ipvsadm/ipvs
Ipvsadm: 用戶空間的命令工具,規則管理器,用於管理集羣服務及RealServerr
Ipvs: 工作於內核空間netfilter的INPUT鉤子上的構架
5、LVS集羣的類型
Lvs-nat: 修改請求報文的目標IP,多目標IP的DNAT
Lvs-dr: 操縱封裝新的mac地址
Lvs-tun: 在原請求IP報文之外新加一個IP首部
Lvs-fullnat;修改請求報文的源和目標IP
6、這裏小編針對比較常用兩個模型進行分析和實驗,給大家進行演示:主要演示lvs-nat模型的實現,後續的模型實現敬請期待。
二、lvs-nat模型
1、實驗條件要求:
(1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址; RS的網關要指向DIP (2)請求報文和響應報文都必須經由Director轉發,Director易於成爲系統瓶頸 (3)支持端口映射,可修改請求報文的目標PORT
(4)VS必須是Linux系統,RS可以是任意OS系統
2、網絡結構拓撲圖
3、地址分配
CIP:172.17.250.60
VIP:172.17.253.20
DIP:192.168.11.17
RS1_ip:192.168.11.11
RS2_ip:192.168.11.12
4、 路由設置
客戶端:
VS端:
RS1端:
RS2端:
總體路由配置思路:
讓客戶端的路由指向VS的VIP,因爲真實的互聯網環境中客戶端是通過路由叨叨VS的,但是實驗中爲了節省機器,所以我們簡單的將客戶端的默認路由指向VS的VIP,需要注意的是CIP和VIP都是屬於公網地址,實驗環境中需要將這兩個IP地址分配爲同一網段的。
VS中的路由一定要有指向RS的出口,所以有兩個網段,一個對應外網,一個對應內網。
RS中的路由都要指向VS的DIP,這樣在負載分配的時候數據包可以找到返回的路徑。
5、 VS端的配置
(1)開啓路由轉發功能
方法一、直接改內存參數
echo1 > /proc/sys/net/ipv4/ip_forward
Vim/etc/sysctl.conf
方法二、修改配置文件
添加:net.ipv4.ip_forward = 1
(2)關閉防火牆和selinux
(3)安裝ipvsadm
yum install ipvsadm
(4)配置ipvsadm進行修改ipvs參數
6、 RS需要配置web服務
這裏小編就不在進行配置了,我們的主要目的是爲了實現負載均衡。所以小編事先分配好了web服務。
7、 在客戶端進行測試:
使用curl工具進行測試:
8、測試成功!
三、實驗過程錯誤總結
1、需要先對RS服務器進行測試,看web服務是否能正常使用,確保web服務沒有問題。
2、在VS上需要開啓路由轉發功能,否則VS不能將來自客戶端的請求轉發給RS服務器。
3、在配置的過程中一定要保證路由是通暢的,確保客戶端能夠ping通RS,這樣才能讓數據包正確的傳輸。
4、如果測試的時候顯示的並不是分配到了兩臺RS上,可能是VS的分配出了問題,如果客戶機能夠ping通RS,則不會出現該問題。
5、如果測試中,客戶機能夠ping通RS,但是不能訪問頁面,去查看VS上ipvsadm服務是否開啓。
6、如果ipvsadm服務不能正常開啓,可以執行ipvsadm-seve > /etc/sysconfig/ipvsadm,執行完後再進行開啓ipvsadm服務。