How to configure Wildfly 8 clustering and deploying picketlink enabled war application to test the session.

In this tutorial we will try to configure wildfly cluster and test it by deploying a picketlink enabled war application where a user can login and the session shared between the virtual server.

Before we start, make sure that you read these links:
https://docs.jboss.org/author/display/AS71/AS7+Cluster+Howto
http://blog.arungupta.me/2014/03/wildfly-8-clustering-and-session-failover/

The concept of wildfly clustering is already discussed in the previous links so we will just enumerate the steps we've done and provide a sample war.

This is how I configured my servers (note that I'm using Wildfly 8.1 Final). Basically we have 2 physical machine, windows (master) and slave (ubuntu). Windows is the domain controller, while ubuntu has host controller and 2 virtual servers. Note that we need to manually deploy wildfly on both servers.

-Windows (IP=192.168.0.100)
--domain controller
-Ubuntu (IP=192.168.0.116)
--host controller

2 server groups
-main-server-group
-other-server-group

You may refer to the following images for reference.
Master
Slave

We need to create a slave user in the master's machine. This user will be use by the slave server later on. To create a user account (username / password) run wildfly/bin/add-user.bat. Take note of the password as we will need to convert it later to base64.

Here are the configuration changes that we need to do:
On master, wildfly/domain/configuration/host.xml, we need to update the correct ip address, don't use 127.0.0.1:
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:192.168.0.100}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:192.168.0.100}"/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:192.168.0.100}"/>
</interface>
</interfaces>

Then on slave machine, rename host.xml to host.bak.xml and rename host-slave.xml to host.xml. We need to update the following:
//set host name to slave
<host name="slave" xmlns="urn:jboss:domain:2.1">

//set domain controller, point to master's ip
<domain-controller>
<remote host="192.168.0.100" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
</domain-controller>

//set the secret key, basically it's the base64 representation of your slave password
//http://www.freeformatter.com/base64-encoder.html
<server-identities>
<!-- Replace this with either a base64 password of your own, or use a vault with a vault expression -->
<secret value="xxxxxx"/>
</server-identities>

In your master's domain.xml file, don't forget to set the hornetq-server's cluster-password.
<subsystem xmlns="urn:jboss:domain:messaging:2.0">
<hornetq-server>
<cluster-password>${jboss.messaging.cluster.password:absolutely}</cluster-password>

Run the server on both machine. And you should get the images I've posted above. The topology will become:



To test if the clustering is working download the project from:
https://github.com/czetsuya/picketlink-authentication-jsf

Download, build with maven and deploy on the 2 server groups:

Now we can access the application from:
http://192.168.0.110:8080/jboss-as-picketlink-authentication-jsf/home.jsf

To test if clustering is working we need to setup cluster module from apache which is properly documented here: https://docs.jboss.org/author/display/AS71/AS7+Cluster+Howto.

0 nhận xét:

Đăng nhận xét