真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何搭建Tomcat7session同步集群-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)如何搭建Tomcat7 session同步集群,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

專(zhuān)業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶和效益!成都創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)負(fù)責(zé)任的成都網(wǎng)站制作公司!

Tomcat session同步集群搭建

一、如何保持session會(huì)話

為了使web能適應(yīng)大規(guī)模的訪問(wèn),需要實(shí)現(xiàn)應(yīng)用的集群部署。集群最有效的方案就是負(fù)載均衡,而實(shí)現(xiàn)負(fù)載均衡用戶每一個(gè)請(qǐng)求都有可能被分配到不固定的服務(wù)器上,這樣我們首先要解決session的統(tǒng)一來(lái)保證無(wú)論用戶的請(qǐng)求被轉(zhuǎn)發(fā)到哪個(gè)服務(wù)器上都能保證用戶的正常使用,即需要實(shí)現(xiàn)session的共享機(jī)制。

因?yàn)槲疫@邊提供web服務(wù)的是兩臺(tái)Tomcat服務(wù)器,也會(huì)有session共享的議題存在,經(jīng)過(guò)與開(kāi)發(fā)人員的交談中了解到,他們應(yīng)用的session是由JVM產(chǎn)生的,所以為了讓一臺(tái)tomcat服務(wù)器出現(xiàn)故障時(shí),另外一臺(tái)可以繼續(xù)承接服務(wù),并保持原先會(huì)話,即在故障服務(wù)器上處于登入狀態(tài)的用戶,不需要再次登入。

二、在集群系統(tǒng)下實(shí)現(xiàn)session統(tǒng)一的有如下三種方案:

1、請(qǐng)求精確定位產(chǎn)生session的web服務(wù)器:sticky session,即當(dāng)前用戶的請(qǐng)求都集中定位到一臺(tái)服務(wù)器中,這臺(tái)服務(wù)器保存了用戶的session登錄信息,如果宕機(jī),

則等同于單點(diǎn)部署,會(huì)丟失,會(huì)話也不會(huì)復(fù)制。

#注:上述情況適用于在web端做好session共享,負(fù)載均衡層做好sticky session,則就可以實(shí)現(xiàn)精準(zhǔn)定位又實(shí)現(xiàn)解除故障的情況。

2、session復(fù)制共享:session replication,如tomcat自帶session共享,主要是指集群環(huán)境下,多臺(tái)應(yīng)用服務(wù)器之間同步session,使session保持一致,對(duì)外透明。

如果其中一臺(tái)服務(wù)器發(fā)生故障,根據(jù)負(fù)載均衡的原理,調(diào)度器會(huì)遍歷尋找可用節(jié)點(diǎn),分發(fā)請(qǐng)求,由于session已同步,故能保證用戶的session信息不會(huì)丟失,實(shí)現(xiàn)會(huì)話復(fù)制。

但必須在同一種中間件之間完成(如:tomcat-tomcat之間).

session復(fù)制帶來(lái)的性能損失會(huì)快速增加.特別是當(dāng)session中保存了較大的對(duì)象,而且對(duì)象變化較快時(shí), 性能下降更加顯著,會(huì)消耗系統(tǒng)性能。這種特性使得web應(yīng)用的水平擴(kuò)展受到了限制。

Session內(nèi)容通過(guò)廣播同步給成員,會(huì)造成網(wǎng)絡(luò)流量瓶頸,即便是內(nèi)網(wǎng)瓶頸,在大并發(fā)下表現(xiàn)也并不好。

#注:上述2適用于并發(fā)量小的集群需求

3.基于 memcache/redis緩存的 session 共享

即使用cacheDB存取session信息,應(yīng)用服務(wù)器接受新請(qǐng)求將session信息保存在cache DB中,當(dāng)應(yīng)用服務(wù)器發(fā)生故障時(shí),調(diào)度器會(huì)遍歷尋找可用節(jié)點(diǎn),分發(fā)請(qǐng)求,當(dāng)應(yīng)用服務(wù)器發(fā)現(xiàn)session不在本機(jī)內(nèi)存時(shí),則去cache DB中查找,如果找到則復(fù)制到本機(jī),這樣實(shí)現(xiàn)session共享和高可用。

二、本文主要講第二種集群方式,配置基于tomcat7環(huán)境,通過(guò)tomcat集群自帶的session復(fù)制,session信息將會(huì)被自動(dòng)復(fù)制到各個(gè)節(jié)點(diǎn)。

涉及環(huán)境:

主機(jī)        操作系統(tǒng)    IP地址      主要軟件

Nginx   centos7.2     172.16.22.2   nginx-1.10.1

tomcat01     centos7.2     172.16.22.3     jdk-8u102-linux-x64.tar.gz、apache-tomcat-7.0.72.tar.gz

tomcat02     centos7.2     172.16.22.4     jdk-8u102-linux-x64.tar.gz、apache-tomcat-7.0.72.tar.gz

三、安裝軟件工作

1.安裝Nginx

a.首先安裝nginx前需要安裝一些依賴(lài)庫(kù) openssl-devel 、zlib-devel 、pcre-devel

[root@~]# yum install -y openssl-devel 、zlib-devel 、pcre-devel

因?yàn)槌绦蚰J(rèn)是使用 nobody 身份運(yùn)行的,我們?yōu)榱吮阌诓榭纯梢詣?chuàng)建nginx 用戶來(lái)運(yùn)行,首先添加nginx組和用戶,可不創(chuàng)建家目錄,并且不允許登陸系統(tǒng)

[root@~]# groupadd  nginx

[root@~]# useradd  -M  -s /sbin/nologin  -g  nginx  nginx

b.解壓nginx-1.10.1.tar.gz,并編譯

[root@~]# tar xf nginx-1.10.1.tar.gz

[root@~]# cd nginx-1.10.1

#  ./configure \

 --prefix=/data0/nginx  \

 --pid-path=/data0/nginx/logs/nginx.pid  \

 --lock-path=/var/lock/nginx.lock \

 --user=nginx \

 --group=nginx \

 --with-http_ssl_module \

 --with-http_flv_module \

 --with-http_stub_status_module \

 --with-http_gzip_static_module \

 --http-client-body-temp-path=/var/tmp/nginx/client/ \

 --http-proxy-temp-path=/var/tmp/nginx/proxy/ \

 --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

 --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

 --http-scgi-temp-path=/var/tmp/nginx/scgi \

 --with-pcre

 結(jié)果如下:

 Configuration summary

 + using system PCRE library

 + using system OpenSSL library

 + md5: using OpenSSL library

 + sha1: using OpenSSL library

 + using system zlib library

 nginx path prefix: "/data0/nginx"

 nginx binary file: "/data0/nginx/sbin/nginx"

 nginx modules path: "/data0/nginx/modules"

 nginx configuration prefix: "/data0/nginx/conf"

 nginx configuration file: "/data0/nginx/conf/nginx.conf"

 nginx pid file: "/data0/nginx/nginx.pid"

 nginx error log file: "/data0/nginx/logs/error.log"

 nginx http access log file: "/data0/nginx/logs/access.log"

 nginx http client request body temporary files: "/var/tmp/nginx/client/"

 nginx http proxy temporary files: "/var/tmp/nginx/proxy/"

 nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/"

 nginx http uwsgi temporary files: "/var/tmp/nginx/uwsgi"

 nginx http scgi temporary files: "/var/tmp/nginx/scgi"

c.上述配置完,就進(jìn)行編譯安裝

[root@~]# make && make install

[root@~]# mkdir /var/tmp/nginx/client/ -pv

等編譯安裝完成后在 /data0 下就會(huì)出現(xiàn) nginx 這個(gè)目錄了,進(jìn)入這個(gè)目錄后發(fā)現(xiàn)目錄非常簡(jiǎn)單。

它的配置文件存放在 conf 目錄中,網(wǎng)頁(yè)文件存放在 html 中,日志文件存放在 logs 中,

sbin 目錄下只有一個(gè)可執(zhí)行程序 "nginx"

d.進(jìn)入/data0/nginx/conf,配置nginx.conf

配置nginx.conf文件

[root@conf ] vim nginx.conf

user  nginx;

#user root;

worker_processes  auto;

error_log /data0/nginx/logs/error.log crit;

pid  /data0/nginx/logs/nginx.pid;

worker_rlimit_nofile 100000;

events {

  worker_connections  2048;

  multi_accept on;

  use epoll;

}

http {

  include /data0/nginx/conf/mime.types;

  default_type  application/octet-stream;

  server_tokens off;

  sendfile on;

  tcp_nopush on;

  tcp_nodelay on;

keepalive_timeout  10;

  client_header_timeout 10;

  client_body_timeout 10;

  reset_timedout_connection on;

  send_timeout 10;

  limit_conn_zone $binary_remote_addr zone=addr:5m;

  limit_conn addr 100;

  gzip_disable "msie6";

  gzip_proxied any;

  gzip_min_length 1000;

  gzip_comp_level 6;

  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

  open_file_cache max=100000 inactive=20s;

  open_file_cache_valid 30s;

  open_file_cache_min_uses 2;

  open_file_cache_errors on;

   #load balance

upstream tomcat {

    server 172.16.22.3:8080;

    server 172.16.22.4:8080;

    }

#load balance

  server {

    listen    80;

    server_name  localhost;

    charset utf-8;

    location  ~ /uploads/.*\.(gif|jpg|jpeg|png|pdf|doc|xls|docx|xlsx|apk|htm|html|mp4|flv)$ {

      expires 24h;

      root /data0/nginx/res/home/;

      access_log off;

      proxy_store on;

      proxy_store_access user:rw group:rw all:rw;

      proxy_temp_path     /data0/nginx/res/home/;

proxy_redirect      off;

      proxy_set_header     Host $host;

      proxy_set_header     X-Real-IP $remote_addr;

      proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;

      client_max_body_size   20m;

      client_body_buffer_size 1280k;

      proxy_connect_timeout  900;

      proxy_send_timeout    900;

      proxy_read_timeout    900;

      proxy_buffer_size    40k;

      proxy_buffers      40 320k;

      proxy_busy_buffers_size 640k;

      proxy_temp_file_write_size 640k;

      if ( !-e $request_filename)

      {

         proxy_pass  http://127.0.0.1:80;

      }

    }

     location / {

    client_max_body_size   20m;

        proxy_pass http://localhost:8080/;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #    allow 113.28.26.107

    #    deny all;

    }

    error_page  500 502 503 504  /50x.html;

      location = /50x.html {

      root  html;

    }

e.檢測(cè)配置文檔是否準(zhǔn)確無(wú)誤

[root@~] # /data0/nginx/sbin/nginx -t

nginx: the configuration file /data0/work/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /data0/work/nginx/conf/nginx.conf test is successful

#注:如果有問(wèn)題,通過(guò)提示內(nèi)容進(jìn)行解決即可

f.啟動(dòng)nginx服務(wù)

[root@~] # /data0/nginx/sbin/nginx

g.但是記得關(guān)閉防火牆或?qū)⒍丝诩尤敕阑饓σ?guī)則

因?yàn)樵贑entOS 7 以後不再用iptables作為防火牆,直接使用firewall

[root@~]# systemctl stop firewalld.service && systemctl disable firewalld.service

或者

[root@~]# firewall-cmd --permanet --add-port=80/tcp

[root@~]# firewall-cmd --reload

h.打開(kāi)瀏覽器訪問(wèn)http://172.16.22.2或者在本機(jī)使用[root@~] curl http://localhost:80訪問(wèn),如果能打開(kāi)nginx默認(rèn)網(wǎng)頁(yè)出現(xiàn)Welcome to nginx字樣,則nginx安裝成功

2.安裝配置java 與tomcat

a.在安裝tomcat前需要安裝Java

解壓並且進(jìn)入安裝包

[root@~]# tar -zxvf jdk-8u101-linux-x64.tar.gz

[root@~]# mkdir /usr/local/java

[root@~]mv jdk1.8.0_101/ /usr/local/java/

b.配置環(huán)境變量

[root@~]# vim /etc/profile

在最后一行添加上下列信息

# java

export JAVA_HOME=/usr/local/java/jdk1.8.0_101

export JRE_HOME=/usr/local/java/jdk1.8.0_101/jre

export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

export PATH=$JRE_HOME/bin:$JRE_HOME/bin:$PATH

c.讓配置生效查看版本

[root@~]# source /etc/profile

[root@~]# java -version

java version "1.8.0_101"

Java(TM) SE Runtime Environment (build 1.8.0_101-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

d.首先tomcat是一個(gè)免安裝軟件直接進(jìn)行解壓即可,查看tomcat版本及JVM配置環(huán)境信息

[root@~]# tar -xf apache-tomcat-7.0.72.tar.gz

[root@~]# sh /data0/tomcat01/bin/version.sh

Using CATALINA_BASE:  /data0/tomcat01

Using CATALINA_HOME:  /data0/tomcat01

Using CATALINA_TMPDIR: /data0/tomcat01/temp

Using JRE_HOME:     /usr/local/java/jdk1.8.0_101/jre

Using CLASSPATH:    /data0/tomcat01/bin/bootstrap.jar:/data0/tomcat01/bin/tomcat-juli.jar

Server version: Apache Tomcat/7.0.72

Server built:  Sep 14 2016 12:12:26 UTC

Server number:  7.0.72.0

OS Name:     Linux

OS Version:   3.10.0-327.el7.x86_64

Architecture:  amd64

JVM Version:   1.8.0_101-b13

JVM Vendor:   Oracle Corporation

e.啟動(dòng)tomcat服務(wù)

[root@~]# sh /data0/tomcat01/bin/startup.sh

f.查看是否開(kāi)放了tomcat端口 8080 8009 8005,服務(wù)是否正常

[root@~]# netstat -nltp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address      Foreign Address     State    PID/Program name

tcp     0    0 0.0.0.0:8009       0.0.0.0:*        LISTEN    9844/java

tcp     0    0 0.0.0.0:8080       0.0.0.0:*        LISTEN    9844/java

tcp     0    0 0.0.0.0:80         0.0.0.0:*        LISTEN    32434/nginx: master

tcp     0    0 127.0.0.1:8005     0.0.0.0:*        LISTEN    9844/java

3.呈現(xiàn)訪問(wèn)測(cè)試session頁(yè)面的準(zhǔn)備工作

在上述步驟完畢后,便修改tomcat配置文件

a.注:設(shè)置默認(rèn)主機(jī),并增加jvmRoute

[root@~]# vim /data0/tomcat01/conf/server.xml

找到第102行

102  

在下面添加下列內(nèi)容,該jvmRoute改為T(mén)omcat01

如:

目的是為了在使用負(fù)載均衡層訪問(wèn)頁(yè)面時(shí),了解承接服務(wù)的是哪一臺(tái)tomcat服務(wù)器

#注:tomcat02也是這么做,只是jvmRoute不同,只要把Tomcat01更換成Tomcat02即可

b.在發(fā)布文檔目錄內(nèi)添加測(cè)試文件

[root@~]# vim /data0/tomcat01/webapps/ROOT/jsp/index.jsp

<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

tomcat01

 

Session serviced by tomcat

       

<% session.setAttribute("abc","adc");%>

      

  

Session ID <%=session.getId() %>
Created on<%=session.getCreationTime() %>

#注:另外Tomcat02節(jié)點(diǎn)與tomcat01節(jié)點(diǎn)配置基本類(lèi)似,另外為了區(qū)分由哪個(gè)節(jié)點(diǎn)提供訪問(wèn),測(cè)試頁(yè)標(biāo)題也不同。其他的配置都相同

c.重啟tomcat服務(wù),分別進(jìn)行測(cè)試訪問(wèn)index.jsp

訪問(wèn)Tomcat01測(cè)試頁(yè)面

如何搭建Tomcat7 session同步集群

訪問(wèn)Tomcat02測(cè)試頁(yè)面

如何搭建Tomcat7 session同步集群

可以看到訪問(wèn)結(jié)果中頁(yè)面呈現(xiàn)的session ID 不同,到這,可以說(shuō)準(zhǔn)備工作就基本完成,下面我們來(lái)配置tomcat的負(fù)載均衡,通過(guò)session復(fù)制實(shí)現(xiàn)會(huì)話保持。

4.配置tomcat集群環(huán)境:

配置會(huì)話共享集群,分別在tomcat01和tomcat02完成下面的操作

a.配置server.xml文件

[root@~]# vim /data0/tomcat01/conf/server.xml

找到110行左右

110  

在下面添加下列內(nèi)容:

         channelSendOptions="8" >

     

          expireSessionsOnShutdown="false"

          notifyListenersOnReplication="true"/>

       

        

           address="228.0.0.4"

           port="45564"

           frequency="500"

           dropTime="3000"/>

       

         address="auto"

         port="4000"

         autoBind="100"

         selectorTimeout="5000"

         maxThreads="6"/>

        

      

    

    

    

    

    

       filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>

    

    

          tempDir="/tmp/war-temp/"

          deployDir="/tmp/war-deploy/"

          watchDir="/tmp/war-listen/"

          watchEnabled="false"/>

    

    

    

#上述添加集群的內(nèi)容來(lái)自于官網(wǎng)配置文檔,請(qǐng)參考:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html

b.配置應(yīng)用代碼目錄下的web.xml文件

修改應(yīng)用的web.xml文件,加入標(biāo)簽,這是tomcat集群實(shí)現(xiàn)session復(fù)制的的關(guān)鍵,如果沒(méi)有添加,Tomcat集群可以說(shuō)就無(wú)法實(shí)現(xiàn)。設(shè)置很簡(jiǎn)單如下所示:

[root@~]# vim /data0/tomcat01/webapps/ROOT/WEB-INF/web.xml

  index.shtml

  index.jspx

 

 --添加的

#注:直接加在之前就可以了。

c.兩臺(tái)Tomcat均按上述步驟修改了配置文檔后,我們重啟下兩臺(tái)Tomcat服務(wù)器,并通過(guò)瀏覽器訪問(wèn)jsp測(cè)試頁(yè)面

我們重啟下兩臺(tái)Tomcat服務(wù)器Tomcat服務(wù)

tomcat02重啟Tomcat服務(wù)

[root@~]#sh /data0/tomcat02/bin/shutdown.sh

[root@~]#sh /data0/tomcat02/bin/startup.sh

再對(duì)tomcat01重啟Tomcat服務(wù)

[root@~]#sh /data0/tomcat01/bin/shutdown.sh

[root@~]#sh /data0/tomcat01/bin/startup.sh

查看先啟動(dòng)那臺(tái)機(jī)器上的catalina.out日志

[root@tomcat02 ~]# tail -f /data0/work/tomcat02/logs/catalina.out

May 11, 2017 11:46:29 AM org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded

INFO: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{172, 16, 22, 3}:4000,{172, 16, 22, 3},4000, alive=1011, securePort=-1, UDP Port=-1, id={-66 109 3 57 13 98 70 60 -86 23 -103 16 91 -52 -91 -49 }, payload={}, command={}, domain={}, ]

從上面的SimpleTcpCluster memberAdded來(lái)看tomcat01和tomcat02成了集群成員了。

然后訪問(wèn)負(fù)載均衡層的測(cè)試頁(yè)面

如何搭建Tomcat7 session同步集群

刷新,再看測(cè)試頁(yè)面

如何搭建Tomcat7 session同步集群

大家可以從圖中看到,不管你怎么刷新SessionID都不會(huì)變,只有承載的服務(wù)器在變化而已,從而說(shuō)明我們的Tomcat的DeltaManager集群配置完成,實(shí)現(xiàn)了會(huì)話共享。

以上就是如何搭建Tomcat7 session同步集群,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


文章題目:如何搭建Tomcat7session同步集群-創(chuàng)新互聯(lián)
文章URL:http://weahome.cn/article/djccoi.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部