全部運行在Tomcat下
第一台主機:192.168.200.131 安裝nginx
修改hosts文件
[root@localhost ~]# vim /etc/hosts
192.168.200.131 nginx
192.168.200.130 node1
192.168.200.122 node2
//將hosts文件發送給另外兩台主機
[root@nginx ~]# scp /etc/hosts 192.168.200.122:/etc
[root@nginx ~]# scp /etc/hosts 192.168.200.130:/etc
//關閉防火牆及安全機制
[root@localhost ~]# iptables -F
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostname nignx
[root@localhost ~]# bash //bash刷新
[root@nignx ~]#vim /usr/local/nginx/conf/nginx.conf
修改如下
#gzip on; upstream tomcat_pool { //聲明tomcat_pool,默認輪詢 server 192.168.200.130:8080 weight=1 max_fails=1 fail_timeout=10s;
//server 192.168.200.130:8080(節點端口)
//weight=1(權重)
//max_fails=1(最大故障數)
//fail_timeout=10s(故障超時)
server 192.168.200.122:8080 weight=1 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
server_name localhost;
charset utf-8;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_set_header Host $http_host; //此處要添加host頭
//如果反向代理層的nginx不重寫請求頭中的host字段,將會導致請求失敗,報400錯誤
proxy_pass http://tomcat_pool; //做tomcat代理
}
[root@nginx ~]# nginx -t
[root@nginx ~]# killall -HUP nginx
測試:
結論:131主機nginx做tomcat反向代理依舊可以訪問tomcat頁面
輪詢測試:介於122、130ip之間相互變化
因為130、122主機都做了session.jsp服務,此時131主機也可以進入測試頁面
Session綁定測試使得在122或130任意主機之間一個保持ip不變:
[root@nignx ~]#vim /usr/local/nginx/conf/nginx.conf
upstream tomcat_pool {
ip_hash; //ip_hash表示綁定
server 192.168.200.130:8080 weight=1 max_fails=1 fail_timeout=10s;
server 192.168.200.122:8080 weight=1 max_fails=1 fail_timeout=10s;
}
測試:

結論:這種方式極不穩定一旦122的主機服務中斷,那么131服務必定從120跳轉到130,這樣會影響線上服務
解決方案一進行Session復制(在tomcat兩台主機做nginx主機不用改變)
Session復制測試(131主機):
可以利用IE瀏覽器測試,測試結果為session不變,node在變,ip也在變
解決方案2:
=================================================================================
第二台主機:192.168.200.130 安裝tomcat
[root@localhost ~]# hostname node1
[root@localhost ~]# bash
[root@node1 ~]#
建立session.jsp的測試
[root@node1 ~]# vim /usr/local/tomcat8/webapps/ROOT/session.jsp
Session ID:<%= session.getId() %><BR>
SessionPort:<%= request.getServerPort() %>
//第一條與第二條:開頭都是直接在網頁上輸出
//后面的函數都是會自動獲取本機session的ID號,根據機器信息自動生成
<% out.println("This tomcat server 192.168.200.130");%>
啟動tomcat
[root@node1 ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node1~]# /usr/local/tomcat8/bin/startup.sh
測試:
Session復制:
[root@node1 ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node1 ~]# /usr/local/tomcat8/bin/startup.sh
[root@node1 ~]# netstat -anpt | grep -E "8080|4000" //有4000端口表示復制成功,沒有4000端口表示復制失敗,測試失敗
Session復制測試:
Session復制測試結果應該為session不變,node在變,ip也在變(圖為教師圖)
本次實驗失敗
===============================================================================
第三台主機:192.168.200.122 安裝tomcat
[root@localhost ~]# hostname node2
[root@localhost ~]# bash
[root@node2 ~]#
建立session.jsp的測試
[root@node2 ~]# vim /usr/local/tomcat8/webapps/ROOT/session.jsp
Session ID:<%= session.getId() %><BR>
SessionPort:<%= request.getServerPort() %>
//第一條與第二條:開頭都是直接在網頁上輸出
//后面的函數都是會自動獲取本機session的ID號,根據機器信息自動生成
<% out.println("This tomcat server 192.168.200.122");%>
啟動tomcat
[root@node2~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node2 ~]# /usr/local/tomcat8/bin/startup.sh
測試:
Session復制:
[root@node2~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node2 ~]# /usr/local/tomcat8/bin/startup.sh
[root@node2~]# netstat -anpt | grep -E "8080|4000" //有4000端口表示復制成功沒有4000端口表示失敗
Session復制測試結果應該為session不變,node在變,ip也在變(圖為教師圖)
本次實驗失敗