當前位置:
首頁 > 知識 > 負載均衡session共享的三種處理方法

負載均衡session共享的三種處理方法

百度百科給出的解釋是: 負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴展 網路設備 和 伺服器 的帶寬、增加 吞吐量 、加強網路數據處理能力、提高網路的靈活性和可用性。直白點就是,首先,大量的並發訪問或數據流量分擔到多台節點設備上分別處理,減少用戶等待響應的時間;其次,單個重負載的運算分擔到多台節點設備上做並行處理,每個節點設備處理結束後,將結果匯總,返回給用戶,系統處理能力得到大幅度提高。從而提高性能,和吞吐量;但是負載均衡有一個問題就是不同的伺服器間進行session共享問題的處理;肯定不可能每分配到一個服務上讓用戶進行一次登錄,這樣的用戶體驗會是極差的;

負載均衡採用的是使用nginx進行反向代理,進行分配流量,nginx的安裝和使用:

1,下載Nginx的安裝包,http://download.csdn.net/download/qq_34125349/10115583

2,

1.打開conf打開nginx.conf進行配置負載均衡

upstream localhost {

server localhost:8080 weight=1;

server localhost:18080 weight=1;

}

3.修改 Nginx 埠號不與 Tomcat 衝突

server {

listen 80;

}

4.啟動、重啟和關閉 nginx

啟動 DOS 環境進入 nginx 目錄,輸入

start nginx 啟動 nginx

nginx -s reload 重啟 nginx

nginx -s stop 關閉 nginx

這樣配置後訪問 http://localhost 後 nginx 會將請求分發給 http://localhost:8080 和 http://localhost:18080

# Tomcat 配置

1.將 Tomcat 文件夾複製成多份

2.修改埠號,修改 conf 文件夾下面的 server.xml 配置文件

<Server port="18005" shutdown="SHUTDOWN">

<Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />

負載均衡Session共享的三種方案:

方案一、Tomcat 廣播方案(Tomcat Session Clustering)

1.修改 conf 文件夾下面的 server.xml 配置文件,在 Engine 模塊下添加如下代碼

<Engine name="Catalina" defaultHost="localhost">

-- 添加下面代碼

<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"

address="228.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

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>

2.在 web 項目的 web.xml 文件中添加

<distributable/>

方案二、Tomcat-redis-session-manager 插件方案,將sessionId放在redis進行存儲

1.添加 redis session 集群依賴的jar包到 tomcat/lib 目錄下

tomcat-redis-session-manager-2.0.0.jar

jedis-2.5.2.jar

commons-pool2-2.2.jar

2.修改 conf 目錄下的 context.xml 文件

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

host="localhost"

port="6379"

database="0"

maxInactiveInterval="60" />

3.啟動 DOS 環境進入 redis 目錄,啟動 redis

redis-server.exe redis.windows.conf

方案三、tomcat-memcached-session-manmger 插件方案

1.添加 memcached session 集群依賴的 jar 包到 tomcat/lib 目錄下

couchbase-client-1.4.4.jar

javolution-5.4.3.1.jar

memcached-session-manager-1.6.5.jar

memcached-session-manager-tc7-1.6.5.jar

msm-javolution-serializer-1.6.5.jar

msm-kryo-serializer-1.6.5.jar

msm-xstream-serializer-1.6.5.jar

spymemcached-2.11.4.jar

2.修改 conf 目錄下的 context.xml 文件

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:localhost:11211"

sticky="false"

requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization="false"/>

3.安裝 memcached

windows:

解壓 memcached 安裝包,啟動 DOS 環境,進入 memcached 的目錄,輸入 memcached.exe -d install 命令安裝 memcached

安裝後的 memcached 安裝為系統服務,進入任務管理器,在服務中找到 memcached 服務,右鍵啟動

3種方式的配置Demo在http://download.csdn.net/download/qq_34125349/10115601,親測可用,有什麼描述問題請大家指教;

負載均衡session共享的三種處理方法

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

基於SSM架構的網路租車系統
C 關於使用異或運算交換兩數的值

TAG:程序員小新人學習 |