Saturday, February 21, 2009

Geronimo Enterprise & Clustering

Over the past several months myself and a colleague have been working on code we will contribute back to Apache Geronimo to provide additional needed functionality when deploying Geronimo in the Enterprise and in a Cluster distributed across separated LANs.

Project 1 code is two fold in improving Logging. One java class implements Jetty's RequestLog interface using Logback in the implementation. The other java class implements the same interface using Log4j.

Both classes provides the abilty to logging Request Logs (Access logs) to Log Appenders, like Socket, SNMP, JMS, and syslog, among many options.

Project 2 code, which is being tested now, adds an additional option to Geronimo's Plugin Based Farming so that installed Geronimo instances on more than one separated LAN can participate together.

The current mechanism is to use Multicast for clustered node communication. My colleague has implemented an additional optional method that performs unicast to a Geronimo instance configured on another LAN to relay (like a bridge) the multicast traffic.

Project responsibilities with our employer slows us down, but expect to see the code contributed within the next month or two. If you want to know the status, listen in on the Geronimo mailling lists - we are chatting about it there as we progress.

Wednesday, November 12, 2008

Monday, November 3, 2008

New PERL Modules released

Two new PERL modules have been released.
  • Getopt::XML
  • XML::TreePP::XMLPath
These modules were created in the process of developing other CodePin hosted software projects. They ease the use of XML in configuring an application.

In particular, XML::TreePP::XMLPath (which is NOT Xpath) is created to access XML data at a Subtree level. And Getopt::XML is a wrapper for Getopt::Long to allow for default values of parameters to be inputed into an application as XML. Getopt::XML uses XML::TreePP::XMLPath for accessing the XML data at a subtree level.

So in brief, a programmer can use these modules to have the default values of parameters defined in an XML document, writing that the default values are located at a certain path of the XML document, and then allow those default values to be overwritten by user inputted parameter values.

The modules were written to be general and roundly useful. They are available through a subversion checkout, and as a download.

The PERL Modules are available on CodePin: http://www.codepin.org/project/perlmod

Wednesday, October 1, 2008

MPP - working towards version 1.0.4

I have been working on some changes to MPP to aid in using multiple cache files. Out of the box with 1.0.3, one cache file is easily managed. With 1.0.4, I am trying to make it easier to manage multiple cache files. This allows us to use the MPP tools to work with multiple cache files in single command calls.
I am also attempting to improve MPP setup and configuration.

MPP still remains a solution to create a failover scenario for MySQL servers. But I am seeing it can be good for just monitoring groups of MySQL servers participating in a replication ring.

As such, the changes I am working on now will aid us in setting up MPP environments, and monitoring MPP statistics. One tool to be released in 1.0.4 is mpp-monitor which will generate status reports and error reports, plus e-mail the reports out. mpp-monitor has been finished and is available in the MPP Subversion repository. You need only have MIME::Lite installed so it can send e-mail.

For 1.0.4, there will be no updates to MPP's integration with MySQL Proxy. I have been kind of waiting to see what the MySQL Proxy team releases next. As I discussed in the MySQL Proxy Forums, It would be great if we can either launch threads in Lua, or launch a Lua script on the startup command line into a thread, or allow the administrative port to have access to the Lua global variable environment. All these would allow MySQL Proxy to monitor MySQL out-of-bandwidth. As of right now, we monitor MySQL when actual client connections are made. This is what MPP does. It makes a client connection to Proxy and loads its statistics into the Lua global variables. If you are interested, you should read my posts in the MySQL Proxy forums.

MPP is available on CodePin: http://www.codepin.org/project/mpp

-RG