lvs-nat负载均衡模式
文章的開始,我們要先弄懂一下幾個問題
1. 為什么要使用lvs?
??? 隨著互聯網的發展使多媒體網絡服務器面對的訪問量快速增加,服務器需要具備提供大量并發訪問的能力,因此對于大負載的服務器來講,CPU,I/O處理能力很快會成為瓶頸。由于單臺服務器的性能總是有限的,簡單地提高硬件性能并不能真正解決這個問題。為此,必須采用多服務器和負載均衡技術才能滿足大量并發訪問的需求。linux虛擬服務器使用負載均衡技術將多臺服務器組成一個虛擬服務器。它為適應快速增長的網絡訪問量提供了一個負載能力易于擴展,而價格低廉的解決方案。
2.什么是lvs?
?????LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目?? 在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。
?3.lvs工作原理
VS: Virtual Server ,負責調度
RS: Real Server ,負責真正提供服務
VS 根據請求報文的目標IP?和目標協議及端口將其調度轉發至某RS ,根據調度算法來挑選RS
4.lvs集群的類型
lvs-nat?:修改請求報文的目標IP,?多目標IP?的DNAT
lvs-dr?:操縱封裝新的MAC?地址
lvs-tun?:在原請求IP?報文之外新加一個IP?首部
lvs-fullnat?:修改請求報文的源和目標IP
今天就先講一下lvs-nat模式
工作原理
Virtual Server via NAT(VS-NAT):用地址翻譯實現虛擬服務器地址轉換器有能被外界訪問到的合法IP地址,它修改來自專有網絡的流出包的地址外界看起來包是來自地址轉換器本身,當外界包送到轉換器時,它能判斷出應該將包送到內部網的哪個節點優點是節省IP 地址,能對內部進行偽裝;缺點是效率低,因為返回給請求方的流量經過轉換器
LVS負載均衡NAT工作流程
? (1). 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP?
?(2). PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
?(3). IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為后端服務器IP,然后將數據包發至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP?
?(4). POSTROUTING鏈通過選路,將數據包發送給Real Server
?(5). Real Server比對發現目標為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IP為CIP?
?(6). Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP
lvs用到的軟件為ipvsadm
程序包:ipvsadm
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
規則保存工具:/usr/sbin/ipvsadm-save
規則重載工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvsadm?命令
集群服務的RS?管理:增、刪、改
格式:
ipvsadm -A|E -t|u|f service-address [-sscheduler] [-p [timeout]][-M netmask][--pepersistence_engine] [-bsched-flags]
ipvsadm -A ——add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。
ipvsadm -E ——edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄
ipvsadm -D -t|u|f service-address?刪除
ipvsadm?–C?清空
ipvsadm?–R?重載
ipvsadm -S [-n]?保存
?增、改:ipvsadm-A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
?刪除:ipvsadm -D -t|u|f service-address
?service-address:?:
-t|u|f:?:
-t: TCP?協議的端口,VIP:TCP_PORT
-u: UDP?協議的端口,VIP:UDP_PORT
-f?:firewall MARK?,標記,一個數字
?[-s scheduler]?:指定集群的調度算法,默認為wlc
?增、改:ipvsadm -a|e-t|u|f service-address -rserver-address [-g|i|m] [-w weight]
?刪:ipvsadm -d -t|u|fservice-address -r server-address
?server-address:?
rip[:port]?如省略port?,不作端口映射
?選項:
lvs?類型:
-g: gateway, dr?類型,默認
-i: ipip, tun?類型
-m: masquerade, nat?類型
-w weight?:權重
?清空定義的所有內容:ipvsadm –C
?清空計數器:ipvsadm -Z[-t|u|f serv ice-address]
?查看:ipvsadm -L|l[options]
--numeric, -n?:以數字形式輸出地址和端口號
--exact?:擴展信息,精確值
--connection?,-c?:當前IPVS?連接輸出
--stats?:統計信息
--rate?:輸出速率信息
?ipvs?規則:?/proc/net/ip_vs
?ipvs?連接:/proc/net/ip_vs_conn
保存及重載規則
保存:建議保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm -S > /PATH/TO/IPVSADM_FILE
systemctl stop ipvsadm.service
?重載:
ipvsadm-restore </PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_FILE
systemctl restart ipvsadm.service
設計要點:
(1) RIP?與DIP?在同一IP?網絡, RIP?的網關要指向DIP
(2)?支持端口映射
(3) Director?要打開核心轉發功能
實驗
實驗之前要先檢查lnmp是否已經成功,若出現錯誤頁面,查看端口80 3306 9000,php-fpm mariadb nginx是否開啟
準備工作:三臺虛擬機一臺lvs-server?兩臺lnmp(僅主機模式):lnmp01,lnmp02,關掉selinux和防火墻。
1.lvs-server:yum install ipvsadm
添加一條新的虛擬服務器記錄 ipvsadm -A -t 172.17.136.172:80 -s wrr
添加真實服務器lnmp01 lnmp02記錄:
ipvsadm -a -t 172.17.136.172:80 -r 192.168.136.174:80 -m -w 1
ipvsadm -a -t 172.17.136.172:80 -r 192.168.136.174:80 -m -w 1
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
lnmp01
添加指向DIP的網關:route add default gw 192.168.136.172
lnmp02
添加指向DIP的網關: route add default gw 192.168.136.172
Lnmp01
測試:寫兩個網頁
Cd /data/web/
Vim index.html
Hello world
Lnmp02
Vim index.html
Good morning
通過訪問一個IP地址可以訪問兩個頁面,這個測試說明可以通過lvs將并發訪問量分發到兩個real-server上從而實現負載均衡。
本文轉自 ? ?honeyorange ? 51CTO博客,原文鏈接:http://blog.51cto.com/13172732/1980104
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的lvs-nat负载均衡模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7、文档元素
- 下一篇: rsync与inotify实现数据实时同