隨著社會的發展和科技水平的不斷提高,互聯網在人們日常生活中扮演著越來越重要的角色,同時網路安全,網路可靠性等問題日益突出。傳統的單體服務架構已不能滿足現代用戶需求。隨之而來的就是各種分散式/集群式的服務架構模式。實現多台服務共同提供服務。最常見的就是Nginx代理技術。 對於用戶的請求到達nginx ...
隨著社會的發展和科技水平的不斷提高,互聯網在人們日常生活中扮演著越來越重要的角色,同時網路安全,網路可靠性等問題日益突出。傳統的單體服務架構已不能滿足現代用戶需求。隨之而來的就是各種分散式/集群式的服務架構模式。實現多台服務共同提供服務。最常見的就是Nginx代理技術。
對於用戶的請求到達nginx代理伺服器後,根據不同的策略被轉發到不同的server上,以實現負載均衡。
使用多個Tomcat實例,配置server.xml
<!-- Connector中使用線程池 -->
修改:不同的實例中使用不同的埠號
<1>-----------------------------------------------------------------------------------------------------------------------------
<Connector executor="tomcatThreadPool" port="8081" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="30000" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false"
connectionUploadTimeout="150000" acceptCount="300" keepAliveTimeout="120000"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<2>-----------------------------------------------------------------------------------------------------------------------------
<Connector executor="tomcatThreadPool" port="8082" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="30000" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false"
connectionUploadTimeout="150000" acceptCount="300" keepAliveTimeout="120000"/>
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443"/>
...
在環境變數中配置多個CATALINA_HOME,分別對應各自的tomcat實例,還需修改catalina.bat和startup.bat中各自的CATALINA_HOME的名字和環境變數中的要對應。
部署好項目。
配置Nginx:在。。Nginx/conf/nginx.conf,打開並配置nginx.conf
#tomcat 集群配置
upstream myapp {
# myapp 是集群的名稱,低版本(8.5.31之前)的tomcat會對該名稱構成的轉發地址進行校驗,不能存在下劃線“_”等特殊字元,否則會產生400錯誤;
#weight 根據權重值的大小決定訪問幾率;
#ip_hash 根據客戶端ip地址的hash值分配將要轉發的server(由於此ip是固定的,可以實現session共用。另外使用redis,springSession也可以實現session共用機制);
#fair 根據server的響應速度快慢分配;
# url_hash;
#預設採用輪詢方式
server 127.0.0.1:8081 ; #tomcat1配置
server 127.0.0.1:8082 ;
#server 127.0.0.1:8083 weight=6;
# server 192.168.1.108:88 weight=3; #tomcat2配置
}
server {
listen 9090; #監聽埠
server_name localhost; #nginx服務的ip地址
location / {
proxy_pass http://myapp;
proxy_redirect default;
proxy_set_header Host $host:$server_port;
}
}
分別啟動應用服務,再啟動nginx服務
最後,訪問 http://localhost:9090/(項目名稱)