Download the Postgres 8.3 Appliance OVF image and unzip the two files. Fire up VirtualBox 2.2 and use File->Import Appliance and point it to the .ovf file from the zip file. Change the networking from NAT to "Bridged Network" and start the VM and soon you get "postgresdb login:" screen. Use root/opensolaris to login into the system and verify that postgres instance is already running as follows:

Wednesday Nov 05, 2008

The New Sun Microsystems announced a new Glassfish/MySQL/OpenSolaris SPECjAppServer2004 result today. The real highlight is that all software used in this benchmark is all Open Source Software. It is a win for Open Source Software including Open Source Databases like PostgreSQL and MySQL. We need more of such benchmarks to highlight the exorbitant prices charged by Proprietary Database & other Software Vendors who charge and force customers to give them all their major dollars of their IT budget.

Tom Daly's blog entry highlight that in terms of Price/Performance, the proprietary database vendors who conveniently also happen to be the Application Server Vendors charge a much higher cost including all hardware/software (10X) associated with same performance which can be obtained by Open Source database alternatives like PostgreSQL and MySQL. Check BM Seer's blog entry for more comparison.

SPEC required
disclosure : -
SPEC, SPECjAppServer reg tm of Standard Performance Evaluation
Corporation.
Results from www.spec.org as of 5th Nov 2008
All comparisons are based on the SPEC SPECjAppServer2004JOPS@Standard
metric from www.spec.org or on pricing made using the bill of materials
included in each SPECjAppServer2004 result

Solaris 10 10/08 (ala Solaris 10 Update 6) is now available. One of the new features of Solaris 10 10/08 is that PostgreSQL 8.3 is now bundled and available at /usr/postgres/8.3. I thought I will take this opportunity to help folks on how to use the new version on PostgreSQL using Openbravo ERP 2.40 as an example. (Note: This is specifically for Solaris 10 Update 6. If you are looking for instructions on how to install Openbravo and PostgreSQL on OpenSolaris check the other blog entry.)

First of all I recommend people to use the ZFS root feature now available in this update. On my Sunblade 2000 I had to use the text installer via

boot cdrom - text

to install the system with ZFS boot.

Also another piece of recommendation is to put /var in a separate dataset. Why? Well all postgresql databases typically goes by default in /var/postgres and hence to use the snapshot feature of ZFS, this provides a fine granularity.

Once Solaris 10 Update 6 is installed, then to see all options of Postgres available on Solaris 10 Update 6 do the following:

Note when you do svcadm enable for any of the PostgreSQL instances, it first does an initdb and then does the equivalent of pg_ctl start. So only after the first enable of the service, you will see that the data directory initialized in /var/postgres/8.3/data (for 64-bit it will be data_64).

At this point of time I typically edit postgresql.conf located in /var/postgres/8.3/data/postgresql.conf and modify it for my basic tweaks:

checkpoint_segments=16 shared_buffers = 128MB wal_buffers=512kB

and then restart PostgreSQL server so the changes are incorporated before I start using the PostgreSQL server instance.

Great now PostgreSQL 8.3 server is up and running. Don't forget to use psql from /usr/postgres/8.3/bin instead of the default /usr/bin which uses PostgreSQL 8.1 psql.

Lets now use an application on top of this new PostgreSQL server. Openbravo ERP 2.40 which was recently released also requires tomcat .

Now there are two versions of tomcat in Solaris 10 Update 6 (unlike OpenSolaris which has none by default and when you install it via pkg it is the latest version). The two versions are the original Tomcat 4 and Tomcat 5.5.

/usr/apache/tomcat - Tomcat 4

/usr/apache/tomcat55 - Tomcat 5.5

For ease of use and Openbravo we want to use the newer Tomcat version.

Openbravo ERP 2.40 requires ant to be 1.6.5 or higher. The ant in /usr/sfw/bin in Solaris 10 Update 6 is still the original version 1.5.4. I downloaded apache-ant-1.7.1-bin.zip from ant.apache.org and unzipped it in /opt

Download the Openbravo ERP 2.40 Solaris (SPARC) installer available on its download site.

First of all if you are not logged in as root and use "su -" to root, then using another terminal using the normal userid, give X server display rights to root. As a short cut I use "xhost localhost" to give permission to all users on localhost.

After the information the installation GUI takes quite a bit of time
to complete specially if you select to load the demo data. (Hope you
made changes to PostgreSQL before to tune this loading.)

Notice that all user related data (PostgreSQL, Tomcat, Openbravo Attachments) are now going in /var. This allows us now to take a snapshot of /var to revert back to this installed image in case we accidentally corrupt user data or application settings.

Before taking the snapshot it might be a good procedure to make sure the database and tomcat is not running. Since we haven't started tomcat55 yet we only have to bring down PostgreSQL server.

Tuesday Oct 21, 2008

Often people ask me what I do for a living and my short answer is "We make applications run best on Solaris". However it is generally not clear to many people what "run best" on Solaris or now OpenSolaris really means. Majority of the people think it is all about performance since it can be a measured quantity for an action "runs" in terms of "how fast". Well that is just one part of the job. Runs best actually means multiple thing. Lets take an example to see how it means multiple thing.

Consider a Business problem that can be solved by using a solution based on IT. Well the first thing most people will do is find the right piece of software that solves the business problem. Lets call it the BusinessApp. Now BusinessApp is what now drives the foodchain for the Techical Architect to see how that BusinessApp can be deployed to acheive the goal. Let's assume a simple scenario that the BusinessApp requires a DatabaseApp and both of them running on some OperatingSystem running on SomeHardware.

Let's recap the components

BusinessApp (for example: Openbravo ERP)

DatabaseApp (for example: PostgreSQL)

OperatingSystem (for example: OpenSolaris)

SomeHardware (for example: Intel Xeon Quad Core based system)

So the question is what really features are more appealing to the Technical Architect:

It should work - No brainer

It should be easy to integrate the components and deploy it

It should be easy to maintain

It should perform meeting a minimum user expectations on how long to wait

It should scale with the increase in the number of users

So "run bests" means all of the above in tandem. The priorities may differ slightly depending on the Technical Architect but most of them will agree the initial thing is to meet the first three steps before you go for a pilot to test the performance out.

So how do we achieve "runs best" on OpenSolaris

First of all we identify that the individual components (say PostgreSQL, Openbravo, etc) works on OpenSolaris which is what most people mean when they say "Oh! it works", "Oh! Its supported" in ascending order of deep support of components in the stack.

The "Easy to integrate/deploy" is often missed out however it is quite important for the "First User Experience of a deployer" who often makes recommendations on what's easy to do. For example to use Openbravo on OpenSolaris you need PostgreSQL, Tomcat, Ant, JDK and integrate them together before you can deploy the Openbravo ERP application on OpenSolaris. Most of the time you need a tight integration to "Ease" the pains which generally to many are more critical than the performance problems itself. This is mainly resolved by having documentation and/or good scripts which makes sure that the dependent and other components are preinstalled and a great installer to integrate all of them together. Remember pkg(5) doesn't do all we want, it installs the components we still need to have good scripts to integrate all the components together to act as a single integrated application. That's an effort which has the biggest return on investment since many people find this step as make or break to continue with the effort of seeing the feasability of whether deployment is possible or not.

Yet another thing which is important but often sidelined is "Easy to Maintain". For example starting Openbravo requires that PostgreSQL server is running and then also Tomcat is running. Instead of making a user run different scripts, a well written SMF Manifest makes it easy to start and stop the service on OpenSolaris which can be made practically hands free and start and stop along with the database. Otherthing which really helps "Easy to Maintain" are the new ZFS snapshot features which in the next release of OpenSolaris (2008.11) will include Time Slider which can be tweaked to make sure that the app and all its related components have consistent snapshots which means you always have a good and working version to revert back in case a bad thing happens.

This one is the most popular of all "It Performs Great!". Of course it doesnt perform all by itself. Every Technical Architect knows that its best to do their own performance test if their name is going to be tied to solution. DTrace on OpenSolaris is exactly an aid in those scenarios to help resolve the problems many times before it occurs in Production. And fortunately even when the problem does make it to the production system also.

Of course no solution is complete if the scaling process is not thought out before. These are the what-if scenarios. What if instead of 50 regular users, I get 30,000 users because an email from HR was fired to input all the vacation days in the system before the end of the day. Such scenarios are unfortunately more common than not.

Again all this is part of the job to make an OpenSource project for that matter any project run best on OpenSolaris

Wednesday Aug 27, 2008

Or it should read how to setup an ERP System quickly for your enterprise using PostgreSQL.

What you need:

A x86 or x64 based server running OpenSolaris 2008.05

Fast access to Internet

Preparing OpenSolaris 2008.05 to be Openbravo ready:

Let's start from the point where you have already installed OpenSolaris 2008.05 configured to access the internet.

Requirements for Openbravo:

JDK

ANT

Tomcat

PostgreSQL

Before executing the binary you need to install the following packages on OpenSolaris 2008.05.

# pkg install SUNWj6dev

# pkg install SUNWant

# pkg install SUNWtcat

# pkg install SUNWpostgr-82-server

# pkg install SUNWpostgr-82-client

# pkg install SUNWpostgr-82-jdbc

# pkg install SUNWpostgr-82-server-data-root

# svccfg import /var/svc/manifest/application/database/postgresql.xml

# svcadm enable svc:/application/database/postgresql:version_82

To improve data loading speed during installation, you might want to edit /var/postgres/8.2/data/postgresql.conf and increase checkpoint_segments=16 and if you have 1GB RAM or more, increase shared_buffers = 128MB and wal_buffers=512kB. Restart PostgreSQL as follows:

# svcadm restart svc:/application/database/postgresql:version_82

Make sure that your newly installed tomcat setup has a valid server.xml file or copy it from an example file included.