关于负载均衡,导致需要实现Session共享。大概有两个解决办法:
https://github.com/jcoleman/tomcat-redis-session-manager
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost" <!-- optional: defaults to "localhost" -->
port="6379" <!-- optional: defaults to "6379" -->
database="0" <!-- optional: defaults to "0" -->
maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) -->
sessionPersistPolicies="PERSIST_POLICY_1,PERSIST_POLICY_2,.." <!-- optional -->
sentinelMaster="SentinelMasterName" <!-- optional -->
sentinels="sentinel-host-1:port,sentinel-host-2:port,.." <!-- optional --> />
另外两个包比较容易找到。下面自己构建(之前网上找到都会报错)
git clone git@github.com:jcoleman/tomcat-redis-session-manager.git
# vim ~/tomcat-redis-session-manager/build.gradle
# 增加 49, 注释57-59
47 signing {
48 sign configurations.archives
49 required = false
50 }
51
52 uploadArchives {
53 repositories {
54 mavenDeployer {
55 beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
56
57 //repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
58 // authentication(userName: sonatypeUsername, password: sonatypePassword)
59 //}
60 //repository(url: "https://oss.sonatype.org/content/repositories/snapshots") {
61 // authentication(userName: sonatypeUsername, password: sonatypePassword)
62 //}
gradle build --stacktrace
build
├── libs
│ ├── tomcat-redis-session-manager-2.0.0-javadoc.jar
│ ├── tomcat-redis-session-manager-2.0.0-sources.jar
│ └── tomcat-redis-session-manager-2.0.0.jar