使用Nginx實現Tomcat集群負載均衡

2021-09-07 18:42:52 字數 3278 閱讀 7071

概述

要解決的問題

環境準備以及問題解決思路

配置

測試

小結

一、概述

使用nginx主要是來解決高併發情況下的負載均衡問題。

二、要解決的問題

1、最主要是負載均衡請求分發。

3、多個tomcat之間session共享問題,否則會出現不斷要求登入的情況。

三、環境準備以及問題解決思路

1、第乙個問題肯定就是使用nginx來做負載均衡。安裝nginx,請參考:linux centos 6.5_x86安裝nginx。

2、第二個問題思路有兩個:

3、上述提到的第三個問題即session共享問題選擇是tomcat-redis-session_manager來解決的,具體請參考:使用tomcat-redis-session-manager來實現tomcat集群部署中的session共享。

3、一台linux安裝多個tomcat請參考:linux系統下安裝兩個或多個tomcat。

分別為:tomcat1:192.168.1.96:7070

tomcat2:192.168.1.96:8081

tomcat3:192.168.1.96:9090

四、配置

# 使用的使用者和組

user root root

;# 指定工作衍生程序數(一般等於cpu的總核數或總核數的兩倍,例如兩個四核cpu,則綜合數為8.通過命令ps -ef|grep nginx可以看出來設定的是幾個)

worker_processes 8;

#指定錯誤日誌存放的路徑,錯誤日誌記錄級別可選項為:[

debug|info|notice|warn|error|crit

],預設是crit,記錄的日誌數量從crit到debug,由少到多。

error_log /usr/local/nginx/logs/nginx_error.log crit

;#指定pid存放的路徑

pid /usr/local/nginx/nginx.pid

;# 指定檔案描述符數量??

worker_rlimit_nofile 51200;

#events settings

events

#遵循http協議的伺服器全域性設定

#server虛擬主機設定,可以設定多個:基於ip的虛擬主機,基於網域名稱的虛擬主機

# 第乙個虛擬主機(基於網域名稱的虛擬主機),反向**tomcat_server和image_server這兩組伺服器

server

# location模組說明

# 使用環境:server模組

# iamge 伺服器location

location ~*/nginxtest/image/

#image expires settings

# expires 屬於http header模組,主要用來nginx返回給使用者網頁新增附件的header資訊,可以在http,server,location中使用

# expires 屬於http header模組,主要用來nginx返回給使用者網頁新增附件的header資訊,可以在http,server,location中使用

location ~ .*\.(js|css|html)?$

# 如果http模組設定了,則繼承。此處設定了則覆蓋。

#error_page 404 /404.html;

#error_page 500 502 503 504 /50x.html;

}}

以下**配置了兩組負載均衡伺服器。

#upstream設定,設定**伺服器(負載均衡池),預設的負載均衡方式是輪詢,另外一種是ip_hash

upstream tomcat_server

其中location ~*/nginxtest/image/ 符合這種url路徑(這種路徑是根據自己的應用需求約定的)的請求**到 proxy_pass屬性指定的 image_server伺服器,其他請求**到tomcat_server這組伺服器。具體的路徑規則請按照自己專案需求約定。nginx配置引數請參考書籍:《實戰nginx:取代apache的高效能web伺服器》。

五、測試

說明:

解壓後有三個檔案:nginxtest.war,nginxtest2.war,nginximagetest.war,

其中nginxtestimage必須放到tomcat3中,三個應用程式名字在放入tomcat之後必須都改為nginxtest。

只用nginxtestimage應用有檔案,nginxtest和nginxtest2中無檔案。

訪問:http://ip:port/nginxtest/whichtomcat,如下圖:

不斷重新整理該頁面,sessionid如果是不變化的說明,session是從redis中取到的,解決了session共享問題。

不斷重新整理頁面,這是「tomcat伺服器1「文字應該和「tomcat伺服器2」不斷變化,說明請求訪問的不是相同的tomcat。因為只有tomcat3中的應用有檔案,所以的獲取是從tomat3中獲取的,也就解決了第二個問題。

六、小結

1、此時nginx只有一台,如果這台nginx訪問不了了,整個集群就無法提供服務,所以為了實現nginx的高可用,需要實現nginx的failover,實現方式參考:nginx+keepalived實現站點高可用。

2、redis的問題同上,參考:keepalived+redis 高可用redis主從解決方案。

使用Nginx實現Tomcat集群負載均衡

1.概述 2.要解決的問題 3.環境準備以及問題解決思路 一 概述 使用nginx主要是來解決高併發情況下的負載均衡問題。二 要解決的問題 1 最主要是負載均衡請求分發。3 多個tomcat之間session共享問題,否則會出現不斷要求登入的情況。三 環境準備以及問題解決思路 1 第乙個問題肯定就是...

tomcat和nginx的使用

context path ol docbase mastering openlayers3 1.1 server location location geoserver 配置詳解 listen為監聽埠,server name為服務名稱,上面配置的訪問位址為http localhost 11100 l...

nginx結合tomcat實現負載均衡

哇,首先容許我感嘆一聲,nginx是真的恐怖,反向 負載均衡 web快取等等內容的實現只需要修改下配置,誰能想到這一切會如此簡單,不得不讓人感嘆,果然偷懶才是人類進步的源泉 笑 先說下什麼是web伺服器的負載均衡,簡單來說就是就是將多個請求分攤到多個伺服器上,從而提高網路的可用性。大致架構應該是下面...