Re: Tomcat session management with Redisson

2019-02-24 Thread Herb Burnswell
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,
> >   

Re: Tomcat session management with Redisson

2019-02-24 Thread Herb Burnswell
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