為了對比hproxy和nginx負載均衡的效果,分別在測試機上(以下實驗都是在單機上測試的,即負載機器和後端機器都在一台機器上)做了這兩個負載均衡環境,並各自抓包分析。
下面說下這兩種負載均衡環境下抓包分析後的結果:
1)haproxy負載均衡環境下的實驗記錄。後端有一台機器掛掉後,如果還沒達到探測的時間點時,請求還會往掛掉的這台機器**,請求會丟失。
haproxy負載均衡的實驗記錄如下:
1--先看下haproxy的配置。
配置inter 20000為20s檢測一次,這個是為了更明顯的抓下haproxy的負載均衡探測機制。
[root@wangshibo ~]# cat /usr/local/haproxy/conf/haproxy.cfg
........2--後端機器的nginx的配置listen test9090
bind 127.0.0.1:9090
mode tcp
server localhost90 127.0.0.1:90 check inter 20000
server localhost91 127.0.0.1:91 check inter 20000
[root@wangshibo ~]# cat /usr/local/nginx/conf/vhost/test.conf
server先在/var/www/html裡建立乙個首頁index.html檔案}
[root@wangshibo ~]# echo "this is test" > /var/www/html/index.html
然後測試訪問,並在機器上開兩個視窗看下抓包是否均衡正常,兩個視窗執行的命令分別如下:
上面抓包的截圖證明nginx監聽的90和91埠都有在監聽。使用抓包來檢測比看日誌來更細點,所以還是用抓包來分析了。
3--抓包檢視haproxy的健康檢測機制
因為前面haproxy裡配置了inter 20000,也就是告訴haproxy 20s檢測一次,抓包檢視也是20s檢查一下。
注意:這個檢測是在客戶端無任務請求的時候進行探測的,也就是處理請求跟探測是分開的。
4--模擬線上故障,nginx掛掉91埠
2)nginx負載均衡環境下的實驗記錄
1--nginx的反向**負載均衡配置,如下:
[root@wangshibo ~]# cat /usr/local/nginx/conf/vhost/lb.conf
upstream backend前端還是使用9090來監聽,把請求**到90和91埠。server
}
2--後端nginx配置如下。可在/var/www/html/建個index.html進行測試
[root@wangshibo ~]# cat /usr/local/nginx/conf/vhost/test.conf
server在/var/www/html裡建立乙個首頁index.html檔案}
[root@wangshibo ~]# echo "this is test2" > /var/www/html/index.html
3--抓包檢視nginx反向**負載均衡的健康檢測機制。抓包同樣會發生90和91的包都有過來。
抓包會發現nginx在沒有請求的時候,90和91埠上沒有任務的請求。也就是在沒有請求的時候,是不會對後端的**伺服器進行檢測的。
4--模擬線上故障,nginx掛掉91埠
把listen 91這個nginx的配置去除,然後reload一下,發現前端的訪問沒有任務影響。抓包如下,請求有打包91,但由於91沒請求到資料。nginx的均衡還會再次去90上取資料。也就是說,nginx如果後端掛掉91埠的話,對前端的請求沒有任務影響,只要併發支撐得住的話。
由上面的實驗可知:
1)haproxy對於後端伺服器一直在做健康檢測(就算請求沒過來的時候也會做健康檢查):
後端機器故障發生在請求還沒到來的時候,haproxy會將這台故障機切掉,但如果後端機器故障發生在請求到達期間,那麼前端訪問會有異常。也就是說haproxy會把請求轉到後端的這台故障機上,並經過多次探測後才會把這台機器切掉,並把請求發給其他正常的後端機,這勢必會造成一小段時間內前端訪問失敗。
2)nginx對於後端的伺服器沒有一直在做健康檢測:
後端機器發生故障,在請求過來的時候,分發還是會正常進行分發,只是請求不到資料的時候,它會再轉向好的後端機器進行請求,直到請求正常為止。也就是說nginx請求轉到後端一台不成功的機器的話,還會再轉向另外一台伺服器,這對前端訪問沒有什麼影響。
3)因此,如果有用haproxy做為前端負載均衡的話 ,如果後端伺服器要維護,在高併發的情況,肯定是會影響使用者的。但如果是nginx做為前端負載均衡的話,只要併發撐得住,後端切掉幾台不會影響到使用者。
haproxy和nginx負載均衡分析
出於對負載均衡工具的疑問,分別對haproxy和nginx的負載均衡進行了抓包分析,分析的過程跟大家分享下。先說下對haproxy抓包得到的結論吧 haproxy在負載均衡的一台後端掛掉後,如果還沒達到探測的時間點時,請求還會往掛掉的這台 請求會丟失。haproxy負載均衡的實驗過程如下 1 先看下...
乾貨 haproxy和nginx負載均衡
出於對負載均衡工具的疑問,分別對haproxy和nginx的負載均衡進行了抓包分析,分析的過程跟大家分享下。先說下對haproxy抓包得到的結論吧 haproxy在負載均衡的一台後端掛掉後,如果還沒達到探測的時間點時,請求還會往掛掉的這台 請求會丟失。haproxy負載均衡的實驗過程如下 1 先看下...
haproxy和nginx負載均衡後端獲取真實ip
負載均衡haproxy 讓後端伺服器獲取客戶端真實ip 在listen 模組下 增加 option forwradfor nginx負載均衡 nginx內建多個變數 remote為真實ip x real ip 為內建的向後傳的客戶端ip 一般在location下面增加 proxy set heade...