[wildfly-dev] 2 instance cluster in master/slave

Jason T. Greene jgreene at redhat.com
Fri May 30 20:58:10 EDT 2014



Sent from my iPhone

> On May 30, 2014, at 6:44 PM, Arun Gupta <arun.gupta at gmail.com> wrote:
> 
> One (hopefully) last bit...
> 
> How/where do I set the sticky session ?

If you are using mod_proxy there is a memory based sticky session parameter you have to set to JSESSIONID, see the apache page.


> 
> Arun
> 
>> On Fri, May 30, 2014 at 11:27 AM, Jason Greene <jason.greene at redhat.com> wrote:
>> 
>> On May 30, 2014, at 12:54 PM, Arun Gupta <arun.gupta at gmail.com> wrote:
>> 
>>>> 
>>>> A couple other options that would be fun to play with:
>>>> 
>>>> 1. Using Undertow’s reverse proxy like this (assuming you named the nodes pi1, pi2, and thus they have a pi1, pi2 jvmroute, which defaults to the host name if you didn’t set it):
>>>> 
>>>> <reverse-proxy name="reverse-proxy" connections-per-thread=“20">
>>>>     <host name=“http://p1.example:8080" instance-id=“pi1”/>
>>>>     <host name=“http://p2.example:8080" instance-id=“pi2"/>
>>>> </reverse-proxy>
>>> 
>>> Where will I add this fragment ?
>> 
>> In your domain.xml define a new profile called proxy, which is derived from the “default" profile.
>> 
>> In your new profile under the undertow subsystem, in the handlers section, below the welcome content file handler, add the above proxy config. You then need to change the location name=“/“ to point to the “reverse-proxy” handler (instead of “welcome-content”)
>> 
>> You basically want 3 server instances, one proxy, web server 1, and web server 2, all preferably on separate systems. The proxy would be assigned the proxy profile, the two other servers would get ha profiles.
>> 
>> You could have your DC collocated on the proxy or on a separate box. You need to be sure that your instance-id matches the jvm route on the web 1 and 2 boxes (defaults to hostname) for sticky sessions to work properly. If you look at the cookie value you will see the jvmroute as a suffix.
>> 
>>> 
>>>> 
>>>> 2. You could also use undertow 1.1 standalone which has a mod_cluster impl (coming to WildFly soon)
>>>> 
>>>> https://github.com/undertow-io/undertow/blob/master/examples/src/main/java/io/undertow/examples/reverseproxy/ModClusterProxyServer.java
>>>> 
>>>> (requires alteration for your topology)
>>> OK, let me try the simpler route first.
>>> 
>>> I'm having issues building mod_cluster on ARM and following up on that
>>> separately. Seems like I may have to use mod_proxy for now since this
>>> is baked into Apache2 for ARM.
>>> 
>>>>> The session ids are indeed different. Just pushed out the latest blog
>>>>> in this series at:
>>>>> 
>>>>> http://blog.arungupta.me/2014/05/wildfly-managed-domain-raspberrypi-techtip27/
>>>>> 
>>>>> The session id are shown towards the end in screen snapshots, and are
>>>>> indeed different.
>>>> 
>>>> So the problem is you need to either have a shared cookie domain, or use an LB, since the cookie domain has to match the URL for the browser to send the same cookie. You can do this in either the global config (standalone.xml under servlet-container), or you can add a setting to your web.xml like this:
>>>> 
>>>> <session-config>
>>>>  <cookie-domain>.example</cookie-domain>
>>>> </session-config>
>>> 
>>> Can this element be added to domain.xml as well for the managed domain mode ?
>> 
>> Yes next to the “server” block inside the undertow subsystem you can add:
>> 
>> <servlet-container>
>>   <session-cookie domain=“.example”>
>> </servlet-container>
>> 
>> Although note that you ONLY have to do this if you are not using an LB.
>> 
>>> 
>>>> 
>>>> Then you want to add host entries to hosts:
>>>> 
>>>> pi1.example 10.x.x.x
>>>> pi2.example 10.x.x.x
>>> 
>>> These entries would be made in each individual /etc/hosts ?
>> 
>> You just need this on the machine with the client browser, so that when it sends HTTP requests it does “Host: pi1.example” instead of "Host: 10.xxxxx”.
>> 
>> If you decide to go the LB route, and want to have name references then you could do them everywhere to make it all easy.
>> 
>>> 
>>> Arun
>>> 
>>>> 
>>>> 
>>>> After you do that you should be able to stick pi1.example and pi2.example in the browser.
>>>> 
>>>> --
>>>> Jason T. Greene
>>>> WildFly Lead / JBoss EAP Platform Architect
>>>> JBoss, a division of Red Hat
>>> 
>>> 
>>> 
>>> --
>>> http://blog.arungupta.me
>>> http://twitter.com/arungupta
>> 
>> --
>> Jason T. Greene
>> WildFly Lead / JBoss EAP Platform Architect
>> JBoss, a division of Red Hat
> 
> 
> 
> -- 
> http://blog.arungupta.me
> http://twitter.com/arungupta



More information about the wildfly-dev mailing list