Sakai Hazelcast distributed caching setup

This is a work in progress:  KNL-1272 - Getting issue details... STATUS

Hazelcast (http://hazelcast.org/) is a distributed in-memory data grid. It can be used as a cache or queuing mechanism across a cluster of JVMs. Hazelcast can be embedded in the JVM or can run as an external server. Hazelcast is open source (https://github.com/hazelcast/hazelcast) but the complete commercial version is closed source (http://hazelcast.com/products/hazelcast-enterprise/) and not very cheap. Installations running at very high scale (100k+ users, 10+ nodes) should probably read the Deployment Best Practices and consider paying for the enterprise version.

Installation (dev)

Hazelcast installation is pretty simple and is covered in their documentation: http://hazelcast.org/documentation/

This is a really simple way to get things up and running for developers (you should go to the hazelcast community for assistance though). If you want to run hazelcast servers for a production cluster then you need to go to the official hazelcast documentation and the hazelcast community for help. Sakai just connects to the hazelcast server so you should not ask the Sakai community for assistance.

  1. Download the version of Hazelcast which matches the version used in your Sakai installation (e.g. 3.2.3, check the kernel/pom.xml file)
  2. Extract the zip to a folder called hazelcast (this will be the hazelcast ROOT)
  3. Run the hazelcast server using the "server" script in the bin directory.
  4. Startup the hazelcast management center by putting the war into a servlet container like tomcat OR using jetty-runner like so:

    java -jar jetty-runner.jar --port 8888 mancenter-3.2.3.war
  5. Connect to the running hazelcast server (or servers if you have a cluster of them) using the management center (login as prompted)
    http://localhost:8888/
  6. You will probably be shown a warning about how the hazelcast cluster is not configured. Just close the warning and use the Update Cluster URL to connect to the default dev cluster (all default settings should work fine unless you changed something). Then you should see the center console as shown.
  7. Click on the $ Console and paste the following commands (this will create some map data)
    NOTE: You have to run these one at a time!

    ns test
    m.put AZ Aaron_Zeckoski
    #50 m.put Aaron$i Zeckoski$i
    ns test2
    #100 m.put key$i value$i
  8. Click on the Home button and you should now see the 2 maps (test, test2) and the distribution shown in the console
     
  9. Click on the test map and then click the Map Browser and enter AZ to view a specific entry in the map
     
  10. Done! (you have a simple hazelcast server up and running for dev purposes)

 

Configuring Sakai to use Hazelcast caching

TBD