tomcat apache session粘性配置和session複製配置
好早前配置了負載均衡和session複製,今天寫出來備忘。
方案:
1、基於request的負載均衡
該種方式下,負載均衡器 (load balancer)會根據各個node的狀況,把每個 http request進行分發。使用這樣的均衡策略,就必須在多個node之間複製使用者的session,實時保持整個cluster的使用者狀態同步,這種操作被稱為session複製(session replication)。Jboss的實現原理是使用攔截器(interceptor),根據使用者的同步策略攔截request,做同步處理後再交給server產生響應。
優點是客戶不會被繫結都具體的node,只要還有一個node存活,使用者狀態都不會丟失,cluster都能夠繼續工作。
缺點是node之間通訊頻繁,響應速度有影響,多併發、高頻操作的情況下效能下降比較厲害。
2、 基於使用者的負載均衡
該種方式下,當用戶發出第一個request後,負載均衡器動態的把該使用者分配到某個節點,並記錄該節點的jvm路由,以後該使用者的所有request都會被繫結這個jvm路由,使用者只會與該server發生互動,這種策略被稱為粘性session(session sticky)。
優點是響應速度快,多個節點之間無須通訊。
缺點也很明顯,某個node死掉以後,它負責的所有使用者都會丟失session。
採取方案:
目前採用第二種,也就是session stiky (1小時)
檔案伺服器的配置 (1天)
Tomcat引數優化 (1天)
叢集的配置
首先在apache 的conf目錄下找到httpd.conf(apache 的配置檔案)檔案
在該檔案裡找到
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
並且把上面的#號去掉
然後找到
Include conf/extra/httpd-vhosts.conf
把上面的#號去掉
在最後一行加上
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=tomcat3(與該tomcat裡德jvmRote名字一樣)
BalancerMember ajp://127.0.0.1:8020 loadfactor=1 route=tomcat2
</proxy>
第二步找到\conf\extra包下面的httpd-vhosts.conf
在下面加上
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/dummy-host2.163.com-error.log"
CustomLog "logs/dummy-host2.163.com-access.log" common
</VirtualHost>
第三步找到解壓後的tomcat在不同的tomcat裡修改server.xml裡的埠引數使之不重複
(大家都知道就不詳細說了)
這裡改幾個比較重要的引數
一個是<Engine name="Catalina" defaultHost="localhost">
改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
另一個後面改成tomcat3
然後加上
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
mcastBindAddress="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
tcpListenAddress="127.0.0.1"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
這個是session複製用的不需要session複製的可以不用
最後一步
在需要session複製的程式裡面的web.xml里加上
<distributable />
Session粘性,一般用到粘性就不用sesssion複製了
只需要在httpd.conf裡最後一段加上
ProxyRequests Off
ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3
ProxyPassReverse / balancer://cluster/
【www.sufms.com】
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=tomcat3
BalancerMember ajp://127.0.0.1:8020 loadfactor=1 route=tomcat2
</proxy>
就行了。
相關推薦
tomcat apache session粘性配置和session複製配置
好早前配置了負載均衡和session複製,今天寫出來備忘。方案:1、基於request的負載均衡 該種方式下,負載均衡器 (load balancer)會根據各個node的狀況,把每個 http request進行分發。使用這樣的均衡策略,就必須在多個node之間複製使
weblogic叢集配置和session共享(12c版本) 上
weblogic安裝太多就不細說了。直接百度即可,由於圖片太多限制,所以分為上,下篇。直接說正題! 配置叢集大體步驟: 1 建立多個服務(server) 2 建立一個叢集(cluster) 3 建立代理(proxy用於分發請求到server) 4 配置擴充套件域 5 配置p
weblogic叢集配置和session共享(12c版本) 下
接著上篇繼續。。。 擴充套件域配置截圖 結束後會生成apps目錄,如圖。代理會需要到下面這2個檔案,下面會講 根據截圖目錄找到命令,啟動各個server:命令 xxx.cmd Server-4 http://127.0.0.1:7001 其中Ser
Centos7安裝MySQL5.7和主從複製配置
一:MySQL安裝 1、下載tar包,這裡使用wget從官網下載 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 2、將mysql安裝
Session的獲取和session存取值
獲取session HttpServletRequest request=ServletActionContext.getRequest(); HttpSession session= request.getSession(); 存取session值 &nbs
什麼是session? cookie和session有何聯絡?
什麼是session: 1.session 是一種服務端機制,類似散列表結構來儲存使用者資料。 2.瀏覽器第一次向伺服器傳送請求的時候,伺服器會自動生成一個session和sessionID 3.sessionID唯一標識這個session 4.伺服器通過返回響應將s
redis4.0.1(stable)安裝和主從複製配置
依賴環境 Centos 6.5 gcc-4.4.7:編譯redis原檔案 tcl-8.5.7:執行編譯檢測 1.編譯redis #cd /usr/local #tar -zx
什麼是cookie,什麼是session,cookie和session的區別
會話跟蹤1. 什麼是會話 * 使用者撥打10086,從服務檯接通後會話開始; * 使用者發出話費查詢請求,服務檯響應。這是該會話中的一個請求; * 使用者發出套餐變更請求,服務檯響應。這是該會話中的又一個請求; * ... * 使用者結束通話電話,會話結束。2. 會
初識Hibernate的主配置和映射配置
rac 子元素 映射 關聯 ref des ring 用戶 package Hibernate.cfg.xml 主配置 Hibernate.cfg.xml 主配置文件夾中主要配置:數據庫鏈接配置,其他參數配置,映射信息等。 常用配置查看源碼:
Spring application.xml配置和web.xml配置
事務 mybatis 配置 ive word tran ransac pro web application.xml<!--掃描包—-> <context:compent-scan package="com.bdqn.exam">&
Redis主從配置和哨兵監控配置——伺服器端環境搭建
一:介紹 公司用到的redis框架,主要分為cluster的快取叢集和sentinel中的哨兵主從。這種的選用方式一般需要更具業務場景來做區分,兩種框架的配置圖為:右圖為哨兵主從框架和cliuster的叢集框架。sentienl的叢集框架,適用於redis的key值都屬於熱
Git使用者名稱郵箱的全域性配置和單倉庫配置
Git可以配置了一個全域性的使用者名稱和郵箱: $ git config --global user.name "xxxxx" $ git config --global user.email "[email protected]" $ git config
Dubbo的Zookeeper單機配置和Zookeeper叢集配置
Zookeeper單機配置: 方式一、 <dubbo:registry address="zookeeper://10.20.153.10:2181"/> 方式二、 <dubbo:registry protocol="zookeeper" addre
spring配置:xml配置和java註解配置對比
雖然spring早就推出java註解的方式配置框架,由於習慣了看xml所以一直沒有去學習,然而最近需要學習springboot,為了平滑過渡,先被迫研究一下註解配置方式。 這裡展示3種spring配置檔案,來對比xml配置和java註解配置的區別,分別是spring\mv
SpringBoot 全域性配置和靜態資源配置
1、配置檔案 SpringBoot使用一個全域性的配置檔案,配置檔名是固定的; application.properties application.yml 配置檔案的作用:修改SpringBoot自動配置的預設值;SpringBoot在底層都給我們自動配置好;
android 許可權配置和測試環境配置
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.y
django drf 動態權限配置和動態seriaizer_class配置
miss turn urn generic cti model 重寫 create 實現 可以通過重寫get_permissions方法和get_serializers_class方法來實現動態的配置權限和序列化 VIewDemo class RegUserS
springWeb之全註解配置和全xml配置
1.springWeb之java配置 @Configuration @ComponentScan(basePackages =
apache負載均衡和tomcat6叢集和session複製
系統環境:Windows XP SP3 ,jdk1.5.0_05 軟體版本:apache_2.2.11-win32-x86-openssl-0.9.8i.msi apache-tomcat-6.0.16 apache-tomcat-6.0.18 備註:tomcat可以下載壓縮包
Apache + Tomcat基於HTTP協議實現反代、動靜分離、負載均衡和session會話保持
1、演示環境: IP 作業系統 部署程式 192.168.1.143 CentOS 7.6 Apache 192.168.1.144 CentOS 7.6 Tomcat