做php2年多了,一直覺得這個玩意很高深,最近總想去了解下。今天抽時間,弄了感覺這個東西沒有想象的那麼難弄。簡單的實現,確實非常容易,但是足可以實現負載均衡分佈的功能了。今天就給大家分享下,也算是一個小記錄吧!
準備工作,3臺服務器,或者開虛擬機吧!我就是開虛擬機實現的。
ip分別爲:192.168.1.10 192.168.1.11 192.168.1.12 (環境:安裝了ngixn 沒有做任何配置)
3臺服務器環境最好一樣,我是再vm裏直接克隆出來的,環境絕對一樣吧!不一樣,我估計會遇到很多奇怪的問題,沒試過。
192.168.1.10 作爲 負載均衡服務器 (一會負載均衡就在這裏臺服務器做配置,另外2臺不用做配置)
先了解下負載一些常見知識
nginx 的 upstream目前支持 4 種方式的分配 1)、輪詢(默認) 每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。 2)、weight 指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。 2)、ip_hash 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。 3)、fair(第三方) 按後端服務器的響應時間來分配請求,響應時間短的優先分配。 4)、url_hash(第三方) |
可以開始配置了。打開192.168.1.10 的nginx.conf 只需要在配置文件增加如下代碼
upstream www.129.com {
server 192.168.1.11:80;
server 192.168.1.12:80;
}
server {
listen 80;
server_name www.juzheke.com;
location / {
proxy_pass http://www.juzheke.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log logs/access_log;
error_log logs/error_log;
}
實踐結果:
http://www.juzheke.com 我通過修改host 指向了 192.168.1.10
爲了使測試結果明顯,我修改了ngixn默認頁面的html
vi /usr/local/nginx/html/index.html
再index.html 加入顯示本機ip
192.168.1.11 和 192.168.1.12 都要修改,這樣測才明顯
我通過本機瀏覽器,輸入 http://www.juzheke.com
每次刷新,都會跳轉到不同的服務器上頁面(當然我這個是爲了明顯所以用的是輪詢的方式,大家可以根據自己需求進行修改)