一、準(zhǔn)備工作
中間件:Tomcat、Redis、Nginx
jar包:commons-pool2-2.4.2.jar、jedis-2.8.0.jar、tomcat-redis-session-manager-2.0.0.jar
二、配置Tomcat
多臺(tái)Tomacat需要配置不同的端口號(hào)
將jar包存放到apache-tomcat-9.0.7\lib目錄下
下載nginx和tomcat, 復(fù)制一份tomcat作為tomcat2服務(wù)器
分別修改tomcat1、tomcat2的server.xml配置文件
tomcat2一樣, 對(duì)應(yīng)修改為28005, 28080, 28009
/conf/context.xml
host為Redis的ip地址,port為端口,database為數(shù)據(jù)庫(kù)。
為了區(qū)分tomcat1、tomcat2, 修改F:\test_nginx_tomcat\tomcat1\webapps\ROOT
目錄下的index.jsp文件內(nèi)容
分別啟動(dòng)tomcat1、tomcat2, /bin目錄下startup.bat命令, 訪(fǎng)問(wèn)http://localhost:18080
、http://localhost:28080
, 查看是否啟動(dòng)成功
到目前為止兩臺(tái)tomcat服務(wù)器已經(jīng)準(zhǔn)備就緒了, 但是還沒(méi)配置nginx, 所以此時(shí)是訪(fǎng)問(wèn)不了http://localhost
的, 如:
OK, 現(xiàn)在配置nginx, 其實(shí)就是修改nginx.conf文件
這是參考別人的配置, 最重要的是下面中的內(nèi)容
upstream: 指定服務(wù)器集群, 我們開(kāi)啟了tomcat1、tomcat2, 定義2個(gè)server即可
weight: 權(quán)重, tomcat2是1的兩倍, 后面測(cè)試發(fā)現(xiàn), 基本上tomcat1和tomcat2的請(qǐng)求次數(shù)比例為1:2
server: 監(jiān)聽(tīng)localhost:80的所有請(qǐng)求, 并將請(qǐng)求根據(jù)upstream配置的集群規(guī)則進(jìn)行分發(fā), 注意, proxy_pass的test.nginx.com
必須跟upstream的test.nginx.com
一致
proxy_connect_timeout 3; # 當(dāng)其中一臺(tái)服務(wù)器宕機(jī)后, 請(qǐng)求連接的超時(shí)時(shí)間, 設(shè)為3s, 可以看到tomcat2宕機(jī)后, 當(dāng)輪詢(xún)到tomcat2服務(wù)器時(shí), 響應(yīng)會(huì)有3s的延時(shí), 3s后自動(dòng)將請(qǐng)求轉(zhuǎn)到tomcat1服務(wù)器, 實(shí)現(xiàn)了集群的高可用, 同理, 開(kāi)啟tomcat2后, nginx恢復(fù)正常的輪詢(xún)請(qǐng)求
proxy_read_timeout 1;
proxy_send_timeout 1;
保存配置, 啟動(dòng)nginx, 雙擊啟動(dòng)
瀏覽器請(qǐng)求http://localhost
, 不斷刷新、停掉任意一臺(tái)服務(wù)器, 可以看到文章實(shí)現(xiàn)目標(biāo)
中的效果
三、測(cè)試
先后啟動(dòng)Redis服務(wù)、兩臺(tái)tomcat服務(wù)器、Nginx服務(wù)器。
在Tomcat啟動(dòng)頁(yè)面加上標(biāo)識(shí),判斷兩臺(tái)服務(wù)器中sessionId是否一致。
聯(lián)系客服