負載均衡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,親測可用,有什麼描述問題請大家指教;
※基於SSM架構的網路租車系統
※C 關於使用異或運算交換兩數的值
TAG:程序員小新人學習 |