訪問流程 Web Browser.Zhuhai 113.106.x.x -> LVS(58.215.138.160) -> RS(10.20.165.174) RS Nginx 日誌以下 113.106.x.x - - [12/Feb/2015:00:18:48 +0800] "GET / HTTP/1.1" 200 612 "
結論:
驗證NAT模式下客戶端地址正確性爲可以獲取真實IP.
nginx
RS 網絡配置以下, gateway 爲LVS的內網IP算法
auto eth0 iface eth0 inet static address 10.20.165.173 gateway 10.20.165.121 netmask 255.255.255.0
在 LVS 下添加以下 iptables 規則後端
/sbin/iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
實測:網絡
zhangbo3@rise-vm-173:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_req=1 ttl=44 time=62.0 ms 64 bytes from 8.8.8.8: icmp_req=2 ttl=44 time=62.2 ms
針對一臺LVS 作高流量測試,測試過程當中,併發200,20000個請求。
只針對網卡流量來看,內存,磁盤,CPU User time 不統計
每一個請求返回7MB大小的包。併發
壓測峯值800Mb
高併發
此時的軟中斷
性能
實測軟中斷峯值只到0.7%
此時的IN包數
測試
此時的OUT包數
3d
包數IN + OUT 峯值爲 100K日誌
針對一臺LVS 作高併發小包測試,測試過程當中,併發80000,4KW個請求。
每一個請求返回2K大小的包。
峯值IN 流量 772Mbps 平均大概750Mbps
峯值OUT 流量 773Mbps 平均大概750Mbps
峯值IN 包數 149KPS 平均大概140KPS
峯值OUT 包數 103KPS 平均大概 90KPS
測試過程當中軟中斷 峯值 8.2% 平均大概 7%
測試結果:
分別測試了LVS 在大包高流量狀況下和小包高併發狀況下的表現。
高流量狀況下
,能夠徹底的利用網卡性能,且無丟包和出錯狀況,千M網卡流量到800Mb,軟中斷平均在 0.7%。
高併發小包狀況下
,帶寬爲750Mbps,包流量爲250KPs的狀況下(已經接近網卡極限),軟中斷平均在 7%.
兩種狀況的測試結果代表,不管是高流量仍是高併發,LVS 都可以在網卡的額定值內發揮正常。
以上測試均爲對多隊列網卡作軟中斷綁定的表現.
10000個併發,10W請求下
LVS 後端增長一臺RealServer狀況下
Concurrency Level: 10000 Time taken for tests: 13.198 seconds Time per request: 0.132 [ms]
在未添加LVS 狀況下,單獨測試Realserver 數據
Concurrency Level: 10000 Time taken for tests: 14.474 seconds Time per request: 0.145 [ms]
總結:
在增長了LVS先後,響應時間幾乎沒有影響.
分別用兩臺獨立IP的機器對LVS作大量的長鏈接訪問,以下爲 LVS 的鏈接分佈狀況.
zhangbo3@rise-rs-135:/usr/local/nginx/conf$ sudo ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 58.215.x.x:80 rr -> 10.20.165.173:80 Masq 1 3332 14797 -> 10.20.165.174:80 Masq 1 3198 14931
總結:
RR算法,同一個Src IP也會定向到同一個LVS
初始狀況下,普通配置時候,單臺機器壓測數據
Concurrency Level: 10000 Time taken for tests: 5.530 seconds Complete requests: 50000 Failed requests: 0 Write errors: 0 Keep-Alive requests: 49836 Total transferred: 42149180 bytes HTML transferred: 30600000 bytes Requests per second: 9040.98 [#/sec] (mean) Time per request: 1106.074 [ms] (mean) Time per request: 0.111 [ms] (mean, across all concurrent requests) Transfer rate: 7442.78 [Kbytes/sec] received
向 LVS 中添加1W個端口映射後的壓測數據
Concurrency Level: 10000 Time taken for tests: 5.588 seconds Complete requests: 50000 Failed requests: 0 Write errors: 0 Keep-Alive requests: 49974 Total transferred: 42149870 bytes HTML transferred: 30600000 bytes Requests per second: 8948.49 [#/sec] (mean) Time per request: 1117.506 [ms] (mean) Time per request: 0.112 [ms] (mean, across all concurrent requests) Transfer rate: 7366.76 [Kbytes/sec] received
總結:
添加上網條端口映射後,對系統性能無影響.
keepalived雙機備份的狀況下,打開LVS的鏈接狀態後,查看同步狀態發現沒同步ESTABLISHED狀態,SYNC_RCV,TIME_WAIT狀態均已同步,握手和關閉的狀態都會同步,可是ESTABLISHED的狀態要發送必定的數據包才同步,默認數據包是3個,每秒50個包的頻率.
sudo ipvsadm -Sn 可導出當前配置