Session服務器之Session復制!


 

全部運行在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也在變(圖為教師圖)

 

本次實驗失敗

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM