一 . LB集羣簡介
LB:Load Balancing:負載均衡集羣
負載均衡集羣中有一個分發器或者叫調度器,我們將其稱之爲Director,它處在多臺服務器的上面,分發器根據內部鎖定義的規則或調度方式從下面的服務器羣中選擇一個以此來響應客戶端發送的請求。
常見的主流負載均衡器有LVS , Nginx , HAProxy . 在這裏主要介紹的是LVS的使用 .
二 . LVS的介紹與使用
LVS概述
LVS(Linux Virtual Server) : 意爲Linux虛擬服務器 , 也叫做分發器或調度器director ; 由中國的章文嵩博士開發 , 它不是正真提供服務 , 但它能接受客戶的訪問 , 爲整個集羣提供了一個唯一的入口 , 虛擬服務器再和真實服務器(Real Server)進行通信 ;因LVS是Linux內核的一部分 , 所以性能很高.
LVS優點和缺點
1、抗負載能力強。抗負載能力強、性能高,能達到F5硬件的60%;對內存和cpu資源消耗比較低
2、工作在網絡4層(傳輸層),通過vrrp協議轉發(僅作分發之用),具體的流量由linux內核處理,因此沒有流量的產生。
3、穩定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived)
4、應用範圍比較廣,可以對所有應用做負載均衡;因爲他是通過修改網絡數據包中的端口號、IP地址來實現負載均衡的,跟上層應用無直接關係。
5、不支持正則處理,不能做動靜分離。(只有應用層(即七層)的負載均衡才支持正則處理)
6、支持負載均衡算法:rr(輪循、輪詢)、wrr(帶權輪循)、lc(最小連接)、wlc(權重最小連接)
7、配置複雜,對網絡依賴比較大,穩定性很高。[這裏說的配置複雜是跟nginx的負載均衡來做對比]
三 . LVS-NAT模式
首先我們得了解LVS相關術語(牢記):
DS(或DR) :Director Server調度服務器。指的是前端負載均衡器節點。(相當於餐廳服務員)
RS :Real Server。後端真實的工作服務器。(相當於餐廳的廚師)
VIP:Virtual IP虛擬IP,是指向外部直接面向用戶請求,作爲用戶請求的目標的IP地址。(外網IP地址)
DIP:Director Server IP調度服務器IP,主要用於和內部主機通訊的IP地址。(內網IP地址)
RIP:Real Server IP,後端服務器的IP地址。
CIP:Client IP,客戶端的IP地址。
LVS基於NAT地址轉換模式原理
LVS-NAT模式工作流程解析:
當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發往至Linux內核(kernel)空間的PREROUTING鏈.(此時報文的源IP爲CIP , 目標IP爲VIP)
PREROUTING檢查發現數據包的目標IP爲本機IP , 就會將數據包送至INPUT鏈
IPVS(IP Virtual Service)是工作在INPUT鏈上的 , IPVS比對數據包請求的服務是否爲集羣服務 , 若是,則修改數據包的目標IP地址爲後端服務器的IP , 然後將數據包發送至POSTROUTING鏈 .(此時的報文源IP爲CIP,目標IP爲RIP)
POSTROUTING鏈通過選路 , 將數據包發送給Real Server
Real Server比對發現目標爲自己的IP , 開始構建響應報文發回給Director Server .(此時報文的源IP爲RIP,目標IP爲CIP)
Director Server在響應客戶端前 , 此時會將源IP地址修改爲自己的VIP地址 , 然後響應給客戶端 . (此時報文的源IP爲VIP,目標IP爲CIP)
由上述流程可以看出 , 客戶機發送請求和後端服務器響應請求數據包往返都會經過Director server進行處理 , 所以這也是LVS-NAT模型的缺陷
LVS-NAT模型的特性
1). RS應該使用私有地址,RS的網關必須指向DIP
2). DIP和RIP必須在同一個網段內
3). 請求和響應報文都需要經過Director Server,高負載場景中,Director Server易成爲性能瓶頸
4). 支持端口映射
5). RS可以使用任意操作系統
LVS-NAT模式的部署實例
實驗目標 : 搭建LVS-NAT模式實現客戶端訪問web服務器時進行負載均衡
實驗準備:
3臺Centos7系統虛擬機 , IP分別爲192.168.11.11 , 192.168.11.12 , 192.168.11.13 , 其中
Director Server (負載均衡器)IP爲:192.168.11.11 (注 : 負載均衡器上需要兩個網卡 , 因此實驗還需在192.168.11.11上添加一塊IP爲192.168.10.11的網卡來作爲VIP地址)
Real Server(後端web服務器)IP爲:192.168.11.12 和 192.168.11.13
Client(客戶機)IP爲:192.168.10.1
實驗拓撲圖:
整個實驗的部署的LVS-NAT網絡拓撲圖(詳細過程):
部署流程步驟 :
首先部署後端web服務器(Real Server) (192.168.11.12 和 192.168.11.13)
關閉防火牆和selinux
systemctl stop firewalld
setenforce 0
安裝apache服務
rpm -q httpd #查看服務是否安裝
yun install -y httpd curl #安裝httpd服務
systemctl restart httpd #啓動(重啓)httpd服務
echo node12.com > /var/www/html/index.html #給apache服務設置一個主頁 , 內容自定義
curl 127.0.0.1 #用curl命令進行本地測試
將這兩臺主機網關(gw)設置爲192.168.11.11(Director Server的IP , 不明白可藉助上述詳細的網絡拓撲圖)
在這裏設置網關有兩種方法:
臨時修改網關:
route -n #查看路由表信息
route del default gw 192.168.11.2 #臨時刪除默認網關
route add default gw 192.168.11.11 #臨時設置默認網關
route -n #再次查看路由表信息
永久修改網關:
vim /etc/sysconfig/network-scripts/ifcfg-ens33 , 修改內容爲
GATEWAY=192.168.11.11 #修改網關爲192.168.11.11
systemctl restart network #重啓網絡服務
route -n #查看修改網關後的路由表信息
LVS負載均衡器配置(192.168.11.11)
在node11(192.168.11.11)上檢查80端口是否被佔用 , 如果被佔用就關閉服務(apache/nginx)
lsof -i:80
確保能訪問到後端web服務器的網站
curl 192.168.11.12
curl 192.168.11.13
保證node11上有兩塊網卡 , 一塊IP爲192.168.11.11 , 一塊爲192.168.10.11
添加一塊新的NAT類型的虛擬網卡
將物理機的VMnet8IP設置爲192.168.10.1 , 網關爲192.168.10.11(VIP地址)
將虛擬機網卡ens37的IP地址設置爲192.168.10.11 , vim /etc/sysconfig/network-scripts/ifcfg-ens37如圖所示:
ip a #查看地址
route -n #查看路由表信息
route del default gw 192.168.11.2 #刪除網關
route del default gw 192.168.10.2
配置LVS負載均衡集羣服務器信息列表:
yum install -y ipvsadm
ipvsadm -Ln
ipvsadm -A -t 192.168.10.11:80 -s rr
ipvsadm -a -t 192.168.10.11:80 -r 192.168.11.12:80 -m
ipvsadm -a -t 192.168.10.11:80 -r 192.168.11.13:80 -m
開啓路由轉發功能
vim /etc/sysctl.conf 文件 , 添加內容爲: net.ipv4.ip_forward=1
cat /proc/sys/net/ipv4/ip_forward #查看路由轉發是否開啓 , 爲1表示開啓
檢測負載均衡:
WIN+R 打開cmd ,檢測是否負載均衡搭建成功 , 如下圖表示訪問成功
如果出現錯誤 , 對照網絡拓撲圖檢查IP是否正確:
排錯:1. 檢查負載均衡器路由轉發是否開啓
2 . 後端服務器網關是否爲192.168.11.11(臨時設置可能會掉)
3 . 檢查負載均衡器IP a 查看ip信息是否正確