Re: Tomcat session management with Redisson
On Mon, Feb 18, 2019 at 11:13 AM Harpreet Sandhu wrote: > If you want to go with redis in HA environment. You should opt redis > sentinel over master-slave architecture. > Thanks Harpreet. I did switch to using the sentinel configuration as I have: sentinel 1 -- sentinel 2 sentinel 3 redis master --- redis slave However, the application says it cannot connect to the sentinel servers: INFO | jvm 1| main| 2019/02/18 15:23:11.722 | [localhost-startStop-1] WARN org.redisson.connection.SentinelConnectionManager - Can't connect to sentinel server. Unable to connect to: node1:26379 INFO | jvm 1| main| 2019/02/18 15:23:11.722 | [localhost-startStop-1] WARN org.redisson.connection.SentinelConnectionManager - Can't connect to sentinel server. Unable to connect to: node2:26379 INFO | jvm 1| main| 2019/02/18 15:23:11.722 | [localhost-startStop-1] WARN org.redisson.connection.SentinelConnectionManager - Can't connect to sentinel server. Unable to connect to: node3:26379 I posted a question on the redis-db google group as I thought it may not be appropriate for this Tomcat User Group: https://groups.google.com/forum/#!topic/redis-db/-mTTnahSgZo If you have experience with the Tomcat --> Sentinel connectivity, I'd be grateful for any guidance.. thanks, HB > On Tue 19 Feb, 2019, 12:29 AM Herb Burnswell wrote: > > > On Fri, Feb 15, 2019 at 12:21 PM Christopher Schultz < > > ch...@christopherschultz.net> wrote: > > > > > -BEGIN PGP SIGNED MESSAGE- > > > Hash: SHA256 > > > > > > Herb, > > > > > > On 2/14/19 12:41, Herb Burnswell wrote: > > > > Tomcat 8.5.23 RHEL 7.5 > > > > > > > > We are looking to set up session management via Redisson to offload > > > > the CPU consumption of using Tomcat's built in clustering session > > > > management. We have CPU licensing limits and need to conserve as > > > > much CPU as possible. > > > > > > Dumb question: aren't you just going to move the CPU cycles to another > > > system? > > > > > > > Thanks for the reply. Short answer, yes. But that is the idea. We can > > only use 2 CPU's per application node (3 nodes) with our licensing > > structure so we do not want to take cycles away from the application to > > manage sessions. > > > > > > > Another dumb question: do you actually need clustering? > > > > > > > If I'm using the term correctly, yes. The idea would be for HA > > functionality; If users were connected to node 3 and the node failed for > > some reason, their session would be picked up by node 1 or 2 > > uninterrupted. Sorry if I confused the intent. > > > > > > > > > > > I have never set up a configuration this way, however I have Redis > > > > set up and running as 1 Master, 1 Slave. I seemingly just need to > > > > point our application to it. I have read this doc on how to: > > > > > > > > https://github.com/redisson/redisson/tree/master/redisson-tomcat > > > > > > > > It seems pretty straight forward except for the redisson.conf > > > > configuration: > > > > > > > > Add RedissonSessionManager into tomcat/conf/context.xml > > > > > > > > > > > configPath="${catalina.base}/redisson.conf" readMode="REDIS" > > > > updateMode="DEFAULT"/> > > > > > > I would do this in the application's context.xml file instead of the > > > global/default one. That means modifying the application's > > > META-INF/context.xml file, or, if you deploy via files from outside > > > your WAR/dir application, then conf/[engine]/[hostname]/[appname].xml. > > > > > > > Yes, this is requiring the editing a application specific xml file. > > > > > > > > > > > I am more familiar with YAML so plan on configuring the > > > > redisson.conf as such. I have read the referenced configuration > > > > wiki page: > > > > > > > > https://github.com/redisson/redisson/wiki/2.-Configuration > > > > > > > > However, it has a great deal of options and I'm not sure what is > > > > and is not needed. > > > > > > > > I am reaching out here on the Tomcat user group to see if anyone > > > > else is using Redisson for session management and if maybe I can > > > > get some guidance on a basic redisson.conf configuration. I'd also > > > > be interested in comments on if there are better options or things > > > > to watch out for. > > > > > > I don't have any experience with either Redis or Redisson, but what is > > > wrong with the default/sample configuration you have provided above? > > > > > > > I have through much trial and error been using this config: > > > > { > >"masterSlaveServersConfig":{ > > "idleConnectionTimeout":1, > > "connectTimeout":1, > > "timeout":3000, > > "retryAttempts":3, > > "retryInterval":1500, > > "failedSlaveReconnectionInterval":3000, > > "failedSlaveCheckInterval":6, > > "password":"", > > "subscriptionsPerConnection":5, > > "clientName":true, > > "subscriptionConnectionMinimumIdleSize":1, > > "subscriptionCo
Re: Tomcat session management with Redisson
On Mon, Feb 18, 2019 at 12:27 PM John Dale wrote: > Regarding clustering and state recovery, I opted some time ago to > store session information in the database - I prefer full control over > session state for security/obscurity reasons. > > Load balancing is straightforward this way. > > I'm not sure I would ever need more than 2 nodes for my purposes, > though, since Java can address such a huge memory space. It's an > amazing computing environment now compared to what we had 20 years > ago. > Thanks John, this is my motivation. I really want the insight and load balancing capability. Do you use Redis for the DB or other? HB > > On 2/18/19, Christopher Schultz wrote: > > -BEGIN PGP SIGNED MESSAGE- > > Hash: SHA256 > > > > Herb, > > > > On 2/18/19 13:59, Herb Burnswell wrote: > >> On Fri, Feb 15, 2019 at 12:21 PM Christopher Schultz < > >> ch...@christopherschultz.net> wrote: > >> > >> Herb, > >> > >> On 2/14/19 12:41, Herb Burnswell wrote: > > Tomcat 8.5.23 RHEL 7.5 > > > > We are looking to set up session management via Redisson to > > offload the CPU consumption of using Tomcat's built in > > clustering session management. We have CPU licensing limits > > and need to conserve as much CPU as possible. > >> > >> Dumb question: aren't you just going to move the CPU cycles to > >> another system? > >> > >> > >>> Thanks for the reply. Short answer, yes. But that is the idea. > >>> We can only use 2 CPU's per application node (3 nodes) with our > >>> licensing structure so we do not want to take cycles away from > >>> the application to manage sessions. > > > > Okay, so if you move the session-management to another machine, you > > don't have to pay app-license fees for the session-management server? > > Fair enough. > > > > Just remember that you still need code "managing" sessions from your > > Tomcat note to your Redisson server. I can't imagine that the > > Tomcat->Resisson code would be any less complicated than the Tomcat -> > > Tomcat code. You might want to validate that assumption before > > committing any resources toward solving a problem by adding complexity > > to your deployments. > > > >> Another dumb question: do you actually need clustering? > >> > >> > >>> If I'm using the term correctly, yes. The idea would be for HA > >>> functionality; If users were connected to node 3 and the node > >>> failed for some reason, their session would be picked up by node > >>> 1 or 2 uninterrupted. Sorry if I confused the intent. > > > > That's exactly what you will get. > > > > If you do NOT use clustering, a failed node will require the users who > > were on the failed node to re-login to a surviving node. Only you can > > determine whether that is an acceptable consequence of a failed node > > for your users and application. I, as well as many others, have > > decided that fail-over is such a rare event and logins such a > > non-issue that introducing the complexity of clustering is not justified > > . > > > > I have never set up a configuration this way, however I have > > Redis set up and running as 1 Master, 1 Slave. I seemingly > > just need to point our application to it. I have read this > > doc on how to: > > > > https://github.com/redisson/redisson/tree/master/redisson-tomcat > > > > > > > > It seems pretty straight forward except for the redisson.conf > > configuration: > > > > Add RedissonSessionManager into tomcat/conf/context.xml > > > > > className="org.redisson.tomcat.RedissonSessionManager" > > configPath="${catalina.base}/redisson.conf" readMode="REDIS" > > updateMode="DEFAULT"/> > >> > >> I would do this in the application's context.xml file instead of > >> the global/default one. That means modifying the application's > >> META-INF/context.xml file, or, if you deploy via files from > >> outside your WAR/dir application, then > >> conf/[engine]/[hostname]/[appname].xml. > >> > >> > >>> Yes, this is requiring the editing a application specific xml > >>> file. > > > > Good. > > > > I am more familiar with YAML so plan on configuring the > > redisson.conf as such. I have read the referenced > > configuration wiki page: > > > > https://github.com/redisson/redisson/wiki/2.-Configuration > > > > However, it has a great deal of options and I'm not sure what > > is and is not needed. > > > > I am reaching out here on the Tomcat user group to see if > > anyone else is using Redisson for session management and if > > maybe I can get some guidance on a basic redisson.conf > > configuration. I'd also be interested in comments on if > > there are better options or things to watch out for. > >> > >> I don't have any experience with either Redis or Redisson, but what > >> is wrong with the default/sample configuration you have provided > >> above? > >> > >> > >>> I have through much trial and error been using this config: