nginx簡介及tomcat集成負載均衡

nginx作用:

反向代理

負載均衡

http服務器(包含動靜分離)

郵件服務器

反向代理(reverse proxy)

代理服務器接受來自網絡的請求,並將此請求轉發給網絡內部的服務器,內部服務器處理完將結果通過代理服務器返回給客戶端,所以此代理服務器對外表現爲反向代理服務器

server {  
        listen       80;                                                        
        server_name  localhost;                                              
       
        location / {
            proxy_pass http://localhost:8080;
           
        }
}

當在瀏覽器中輸入localhost的時候就相當於訪問了http:// localhost:8080


負載均衡

負載均衡是nginx使用頻率較高的用途之一,當有2臺或2臺以上的服務器,nginx通過規則選擇將請求分發到某臺服務器上,一般nginx做負載均衡會結合反向代理使用,目前支持3中負載均衡的策略

第一種:RR(默認)

按照請求時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,自動剔除

upstream test {
        server localhost:8080;
        server localhost:8081;
    }
    server {
        listen       81;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;

        location / {
            proxy_pass http://test;
            proxy_set_header Host $host:$server_port;
        }
    }

 upstream test {
        server localhost:8080;
        server localhost:8081;
    }

 http://localhost 的時候,也不會有問題,會默認跳轉到 http://localhost:8080 具體是因爲Nginx會自動判斷服務器的狀態,如果服務器處於不能訪問(服務器掛了),就不會跳轉到這臺服務器,所以也避免了一臺服務器掛了影響使用的情況,由於Nginx默認是RR策略,所以我們不需要其他更多的設置。

第二種:權重 (weight)

指定輪詢機制,權重和輪詢機率是成正比的

pstream test {
        server localhost:8080 weight=9;
        server localhost:8081 weight=1;
    }

如果有10次請求,8081這個端口,會被訪問9次,8080端口會被訪問1次

第三種:ip_hash

上面兩種方式都有一個問題,那就是下一個請求來的時候請求可能分發到另外一個服務器,當我們的程序不是無狀態的時候(採用了session保存數據),這時候就有一個很大的很問題了,比如把登錄信息保存到了session中,那麼跳轉到另外一臺服務器的時候就需要重新登錄了,所以很多時候我們需要一個客戶只訪問一個服務器,那麼就需要用iphash了,iphash的每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。

    upstream test {
        ip_hash;
        server localhost:8080;
        server localhost:8081;
    }

第四種:fair

按後端服務器的響應時間來分配請求,響應時間短的優先分配。

 upstream backend {
        fair;
        server localhost:8080;
        server localhost:8081;
    }

第五種:url_hash

按照訪問路徑url的hash結果,使每個url定向到同一個同一個後臺服務器,後端服務器一般爲緩存服務器會比較有效

    upstream backend {
        hash $request_uri;
        hash_method crc32;
        server localhost:8080;
        server localhost:8081;
    }
Shell

注意:fair和url_hash需要安裝第三方模塊才能使用,


nginx+tomcat實現負載均衡(以nginx在window環境爲例)

準備好兩個tomcat



這裏都是用的本地的tomcat,只是修改了端口

nginx的配置:

到nginx.conf下配置



啓動nginx.exe

當用戶在瀏覽器輸入http://localhost/test/index.jsp時nginx會攔截請求利用反向代理找到test然後將請求轉發給localhost:8080或者localhost:8088,這樣頁面就能正常顯示了 test是我的項目名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章