About one month left until Web2.0EXPO in Berlin. There’s also an “unconference” element with the Web2Open as a part of the Web 2.0 Expo. You can meet me at the Sun Microsystems stand, where I’ll present some Pixelpark 2.0 and Web Hosting solutions.
Today, Sun’s Ecotour stops at our office in Berlin. Rolf Kersten and the Sun Ecorider brought us a lot of fun while having a short ride at Oberbaum City.
As mentioned on Jonathan’s Blog, Sun will release a new 4-socket 16-core Intel Xeon MP 7300 series server.
Some facts about Sun’s new 16-core Intel Server:
- 2U Rackmount Server
- 4 Sockets, 16 Cores in one Box
- Intel Tigerton 7300 Quad Core CPUs, currently up to 2,93Ghz/120W
- 32 DIMM Slots, up to 256GB RAM
- 8 hot-swap SAS 2.5″ Disks
Nice to see more than 4 disks in a Sun server. This was still a gap, comparing Sun Galaxy Servers to IBM or HP Boxes.
Hope that the Bios and ILOM will be better than ILOM of the Sun Blade 6000 X6250 modules, currently the Blade6000 feels quite beta compared to the Sun X4200 Bios and ILOM.
To run an J2EE application server like glassfish in production brings a lot of additional work after installation. While a simple installation for developers is easy, it seems no so easy today to bring glassfish in production. From my point of view, there are at least the following things to do for a production installation:
- Add new user and group (e.g. glassfish) to /etc/passwd /and /etc/group
- install latest jdk
- install glassfish
- setup and install start/stop scripts (smf on Solaris10)
- install glassfish apache 2.2 ajp integration (example1 example2 example3)
- configure glassfish logfile rotation
- tune glassfish because default settings are not suitable for production ( a lot of parameters!)
- harden glassfish because default security settings are not strong and secure enough
- deploy jdbc configuration (jars + settings)
- write scripts to integrate glassfish in your monitoring framework
- write scripts to integrate glassfish in your deployment framework (e.g. Sun N1 SPS)
- and of of course, this list is not complete
Nowadays, we have at least three (virtual) servers for each customer project. One for development, one for test and ond for production. This means to install and modify glassfish at least three times. But often, we also have hardware based load balancing in projects, that means to have at least two strings of glassfish for dev/test/prod or six installations alltogether!
Looking at the new glassfish V2 feature called application server usage profiles shows, that the three offered profiles (“developer”, “cluster”, “enterprise”) still leaking real production settings. A simple “production” or production-cluster profile would be nice. The production profiles should have tuned values (at least the parameters mentioned in the Sun Java System Application Server 9.1 PerformanceTuning Guide beginning on page 50) which makes it easier to setup glassfish for admins. The mentioned enterprise profile might be not the best for high traffic web 2.0 production web sites.
How do we do this job with other app servers? For a couple of customers, we’re using the Bea Weblogic Application Server. And we’re using the Sun N1 SPS Bea Weblogic module to install and configure Weblogic. N1 SPS also uses the possibility to run the WebLogic Scripting Tool (WLST) , which is a BEA tool for scripting the configuration of BEA WebLogic. WLST is a command-line scripting interface to monitor and manage BEA WebLogic Server instances and domains. The WLST scripting environment is based on the Java scripting interpreter, Jython.
Someting like this (GFST) would be cool to have for glassfish, too.
There’s a lot of documentation for glassfish V2 and the the Sun Java Enterprise System Application Server 9.2 distro on the web. Besides wikis and blogs, there’s the “official” documentation set for glassfish V2, which is the same as the documentation set for Sun Java Enterprise System Application Server 9.1.
Because there are differences between these two distributions, the documentation refers to them.
In the Installation Guide (which I checked first) for example, the different installation methods for these distributions are explained. For earlier Versions of the Sun Java Enterprise System Application, there’s another distribution with the Sun Java™ Enterprise System (Java ES) installer, which also refered in the “Uninstalling Application Server Software” chapter. So, maybe we’ll have three types of glassfish V2 distros and install methods in future?
After setting up glassfish V2 I was interested in tuning and what the Sun Java System Application Server 9.1 PerformanceTuning Guide recommends for production mode. Focusing on the administrative part, I was wondering if there are tips for modifing the default JVM and Solaris 10 settings for different type of Servers like the Sun T2000 Niagara server or Sun X4200 Galaxy AMD Opteron servers. Looking at the section “Tuning for Solaris”, gives me a couple of tuning parameters listed. Looking at them and comparing them to
the Solaris 10 Tunable Parameters Reference Manual shows up, that the suggested Tuning parameters are for Solaris 8 or 9 but not for Solaris 10. Disappointed looking around, I found interesting values to start with in the submitted SPEC jAppServer2004 Results for Sun Java Enterprise System Application Server 9.0 .
I raised issue #3082 for updating tuning parameters to Solaris 10.
UPDATE: Also see gfwiki.
Running a web server in front of a java application server makes sense in almost all production scenarios, where end users from the internet connect directly to your site. The web server offers you much more configuration, security and performance features than the integrated http connector of any java application server. Software developers sometimes argue, that it should work (and of course it does). But if you want to speed up your website and tune your weblayer with optimizing settings like cache-control headers, turn of Etags and so on, a java application server doesn’t allow you to modify this settings.
Therefore, web servers like apache httpd are running in front of the application server and you can configure almost everything you want with apache httpd and apache modules. The connections from apache to the java application server (cluster) are configured through additional apache modules. Commercial Vendors like BEA offers you apache modules for Weblogic to connect. For Tomcat we saw a lot of different modules over the last years. These were mod_jk, mod_webapp, mod_jk2 and the return of mod_jk. With apache 2.2, there’s a build in module, called mod_proxy_ajp. The connection from apache to tomcat with the mod_jk or the mod_proxy_ajp is done by the AJP protocol, which is a binary protocol and faster than http. Before apache 2.2 and its mod_proxy_ajp module, some people used mod_proxy as a revers proxy from apache to tomcat. This might be good for small web sites, and if you do not need to pass some additional informations to you app server.
Now to glassfish. Currently, glassfish V1 and V2 ships only with a http connector module. There’s no apache httpd mod_glassfish or something like that. You can connect with httpd’s mod_proxy_reverse.
But regarding some blog entries from Jean-Francois Arcand and Amy Roh, it’s possible to extend glassfish with the libs ( tomcat-ajp.jar modeler-1.1.jar commons-logging-1.0.4.jar) from tomcat and tweak some config files.
But stop. Are there different versions of these jars? Which jar version fits to which glassfish version?
Some people already blogged about their problems to extend glassfish withe the ajp protocol.
Why does the glassfish distribution currently do not bundle the ajp libs and missing configurations in the config files?
In my opinion, it is very very important for the future success of glassfish, to offer build in connectors to apache (with ajp), to Sun JES Web Server (an NSAPI Module?) and MS IIS . These connectors should be well documented and easy to configure for admins and developers.
Here my first experience installing glassfish V2 beta. I started installing glassfish V2 build 33 in a Solaris 10 11/06 local zone. The hardware I installed glassfish is a Sun X4200M2, 4Cores 2,4 Ghz each and 4GB RAM.
Here the steps to do:
> java -Xmx256m -jar glassfish-installer-v2-b33.jar
> cd glassfish
> ant -f setup.xml
Total time: 31 seconds
>./asadmin start-domain domain1
Accessing Glassfish Webadmin
Firefox: http://localhost:4848/ user: admin password: adminadmin (both defaults…)
Just put some pictures on flickr.