1. 程式人生 > >lvs-nat負載均衡模式

lvs-nat負載均衡模式

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 9000php-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上從而實現負載均衡。


















本文出自 “13162732” 博客,請務必保留此出處http://13172732.blog.51cto.com/13162732/1980104

lvs-nat負載均衡模式