开篇
利用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
/