開篇
利用Nginx作為Tomcat的負載均衡器,Tomcat的會話Session數據存儲在Redis,,可以或許實現0當機的7x24運營結果。因為將會話存儲在Redis中,因此Nginx就不必設置成stick粘粘某個Tomcat方法,這樣才氣真正實現靠山多個Tomcat負載均衡,用戶請求可以或許發往任何一個tomcat主機,當我們需要陳設新應用代碼時,只要遏制任何一臺tomcat,所有當前在線用戶城市導向到運行中的tomcat實例,因為會話數據被序列化到Redis,在線用戶不會受到影響,一旦停掉的tomcat實例上線,別的其他反復陳設進程。
一、設置情況
東西 | 版本 | 端口 |
nginx | 1.9.4 | 127.0.0.1:80(默認) |
tomcat7_1 | 7.0.61 | 127.0.0.1:8091 |
tomcat7_2 | 7.0.61 | 127.0.0.1:8092 |
tomcat7_3 | 7.0.61 | 127.0.0.1:8093 |
redis | 2.7.3+ | 127.0.0.1:6379(默認) |
二、構建 tomcat-redis-session-manager-master
先容:tomcat-redis-session-manager 是一個用來將 Tomcat 的 Session 數據存儲在 Redis 庫中的項目。
官網:https://github.com/jcoleman/tomcat-redis-session-manager
從官網下載相關源代碼,找到build.gradle文件,由于作者利用了第三方客棧(sonatype),需要注冊帳號,太貧苦,注釋后直接利用maven中央客棧,同時注釋簽名相關劇本并增加依賴包的輸出劇本 copyJars(dist目次),修改后的 build.gradle 文件如下:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'signing'
group = 'com.orangefunction'
version = '2.0.0'
repositories {
mavenCentral()
}
compileJava {
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
dependencies {
compile group: 'org.apache.tomcat', name: 'tomcat-catalina', version: '7.0.61'
compile group: 'redis.clients', name: 'jedis', version: '2.7.3'
compile group: 'org.apache.commons', name: 'commons-pool2', version: '2.2'
//compile group: 'commons-codec', name: 'commons-codec', version: '1.9'
testCompile group: 'junit', name: 'junit', version: '4.+'
testCompile 'org.hamcrest:hamcrest-core:1.3'
testCompile 'org.hamcrest:hamcrest-library:1.3'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile group: 'org.apache.tomcat', name: 'tomcat-coyote', version: '7.0.61'
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from 'build/docs/javadoc'
}
task sourcesJar(type: Jar) {
from sourceSets.main.allSource
classifier = 'sources'
}
artifacts {
archives jar
archives javadocJar
archives sourcesJar
}
//signing {
// sign configurations.archives
/