The Initial release of ZoneMan

Posted by Sam

I've been wanting to switch from BIND to PowerDNS for a while now but I haven't been able to find any admin tools that worked the way I wanted them to. This is the problem when you can write software. It seems that hardly anything is just right. Since PowerDNS can use a SQL back-end it seems that everybody wants to create a web admin which is fine for lots of things. One of the things I'm working on now is something I like to call Agile Systems Administration. If nobody has coined the term to date I'm coining it now. Basically I'm looking for ways to automate whatever I can. Since I deploy a LOT of sites DNS was an obvious choice to start automating.

This is where ZoneMan comes into play. It's a command line tool that works with MySQL, PostgreSQL or any other database that Rails works with. The usage is pretty simple. Here's an example of adding a new record. $ ./zoneman add_record example.com www.example.com A 10.1.1.1
example.com has been created
That's it. To break out what we just did. add_record is the command. Example.com is the domain that you are adding the record to. www.example.com is the record itself. 'A' is the record type. And lastly '10.1.1.1' is where the record is pointing to. Using that example you can see how easy it is to script new site setups from the DNS perspective. You can wrap that command in a bash script and make it even shorter.

The initial release is already hosted at RubyForge. It's very rough and untested. I've also set up a project page on this site. If you have suggestions feel free to leave them in the comments. I hope to make this a very useful tool for managing PowerDNS. Enjoy.

Tags: powerdns zoneman

My Love Hate Relationship with MySQL

Posted by Sam

The Hate

It seems everybody is using MySQL these days. It's getting plenty of press, especially lately with them getting bought by Sun and all. I've been using MySQL for at least 10 years. Only recently did I throw out an old O'Reilly book that cover MySQL version 3. But lately I've been pretty dissatisfied with MySQL and it's annoying limitations. For instance, why do we need so many database engines that all do different things? MyISAM, HEAP, InnoDB, NDB, Falcon and NitroEDB to name but six and I've probably left out a couple. But with all these options there isn't a single option if you want something as simple as say, transactions AND Full Text Indexing. You can get Full Text Indexing with MyISAM and transactions with InnoDB but if you want/need both then you are out of luck or relying on a third party hack. No offense meant to the Sphinx folks with that 3rd party hack comment, it's just that I want to tightly integrated into my database and I'd prefer not to have compile, install and configure another application for FTI. Then there's also the well documented performance limitations concerning the use of lots of cores.

A while back I was working on a project that I needed a modern database engine and Full Text Indexing. The searching was going to be a critical part of the site so that's what I focused on. I spent hours researching FTI on MySQL only to walk away realizing that it just wasn't going to work without going the MyISAM route or some third party hack. And the more research I did on MyISAM the scarier it got because it apparently has some serious scaling issues regarding FTI. All this research led me to one thing. Postgres. Postgres has one database engine that does everything. Oh and these days it happens to be really fast. Often faster than MySQL. Now that it's fast and they have the vacuuming stuff more automatic Postgres is a great database and people really should be looking into it for replacing MySQL IMHO. But Postgres aside, the more I research MySQL the more convinced I was that the company just doesn't get it. They seem to be more interested in creating more engines than in making a single engine that does 90 - 95% of what most people want.

The Love

So what do I love about MySQL? Well I'm glad you asked. The other day I was talking to a co-worker and I was telling him how excited I was about our new MySQL cluster. We have a master/slave configuration set up so recovering from a database disaster should be just a quick reconfigure away. And if we need the capacity we can point sites at the slaves. And we can do backups on the slaves without taking down the site because the database is locked. Needless to say I was excited. So many possibilities. I like everything to be redundant. Everything. So the database redundancy was a big deal. And MySQL makes it easy to set up. It really is nice. So after I finished extolling the virtues of our set up he asked me if this means that I no longer hate MySQL. This is where I realized that I had a love/hate relationship with it. From the admin side I love it. MySQL is easy to work with, runs anywhere and makes some cool stuff (like clustering) uber easy. From the development side I hate it for the reasons I stated above. If I'm programming I'm going to lean towards Postgres, but if I'm wearing my sys admin hat I'm going to lean towards MySQL. It gets really confusing when I'm doing both roles as if often the case. Hrm, maybe I need to look into Postgres' clustering and then it will be an easy choice.

Where to now?

I'm really hoping that Sun can do something to turn around MySQL because for a lot of projects it's a really good database but for just as many it's an awful choice. They really need to fix the scaling issues and stop with the database engine madness. A couple of database engines are OK, but come on. They are just out of control. Pick a couple of engines and just pour all your time into supporting them. And the scaling issue is a no brainer. Lots of cores are the norm and MySQL needs to get with the times or risk being left behind.

Tags: mysql

Zone Manager Screencast

Posted by Sam

Sometimes it's hard to understand just how simple something is without seeing it first hand. In an attempt to show people just how powerful and extremely awesome Zone Manager is (not to mention Solaris Zones) I thought I would create a screencast. Screencasts are all the rage these days and for good reason. Running commands from the command line isn't sexy, but watching a video where I create an entirely new server in well under two minutes is dead sexy! And so without further ado I present Zonemgr!

Tags: solaris zones zonemgr

Engine Yard to Create mod_rubinius

Posted by Sam

In a previous blog I posted a rebuttal of sorts against the DreamHost whine fest. Well at least that's how I saw their blog. The arguments spilled over to a another blog posted on Ruby Inside. One of the points that I took issue with was DreamHost saying that the Ruby on Rails folks needed to step up and create something that DreamHost could resell. In their words:

4. Officially support shared hosting environments.
Alastair and I are in agreement that there is already a great way to deploy Rails applications and it is not Mongrel and [insert favorite web server/proxy solution here]. LiteSpeed is light years of ahead of everybody else in Rails support and deployment and it's also much, much faster than Apache in general. But in all honesty the bigger issue here was that I feel like DreamHost needs to step up and put their money where their mouth is. They are making money on hosting not the Ruby on Rails developers. If they want to make money on Ruby on Rails hosting then they should step up and create a solution.

Well it appears I wasn't the only one who felt the same way. Yesterday, the folks at Engine Yard announced that they hired a developer to work on mod_rubinius. Rubinius is a very promising Ruby implementation that is gaining a lot of momentum and Engine Yard is backing it with the hiring of several developers. It's been written about plenty on the web but it's nice to see that a hosting company that is making money from Rails hosting is actually putting it's money where it's mouth is instead of just expecting everybody else to do their work for free and let them reap the benefits.

I couldn't be happier deploying Rails apps on LiteSpeed, but I always welcome alternatives. So well done Engine Yard!

Tags: rubyonrails

Kemp Load Master 1500 Review

Posted by Sam

A while back I reviewed the Barracuda 340 load balancer. The review wasn't pretty, because frankly the experience was horrible. I was so disgusted that I shipped that box back pretty quickly and went with the other contender. The other contender was Kemp's Load Master 1500. Several people have written me to find out what my experience with the Kemp load balancer has been so I thought it was about time that I put my thoughts down on paper ... so to speak.

I've been using the Kemp in production for over three months. Because of the amount of sites that run behind the Load Master it's pretty difficult to tell exactly how much traffic passes through it. A quick look revealed that it easily handled over 2.1 million hits a day around Christmas last year. And it did this without breaking a sweat so I'm confident that it can handle much more than that. I have yet to experience any of the sort of strange issues that I experienced with the Barracuda and overall I have much higher degree of confidence in the Kemp solution.

The interface definitely doesn't do this machine justice. It could stand to be completely revamped and for some strange reason you can't always put a name on your virtual servers. Well you can name it, but the name doesn't stick. This is more of an annoyance than a real problem and just goes to show that their web interface could use some love. They have a very solid product, but I'd definitely love to see some more flexibility. Like being to add multiple users or allowing the admin user to be named something besides 'bal', which took me forever to get used to. How about something more normal like admin or root or something.

The only real complaint I have about the Load Master is Kemp using a license key. It's a physical box that I'm buying and having to enter in a license key for a physical piece of hardware never sits well with me. And to top it off their documentation isn't at all clear that the box requires a permanent license key or it will shutdown. I failed to install the permanent license key because I thought it was for the SSL acceleration and one day I wake up to phone calls saying all the sites are down. If you are going to enforce a license key (which I think is stupid on a physical product but whatever) then you need to have it fail better. I actually had the license key but the Load Master reverted back to it's pre-configured state and was completely unavailable remotely. This forced me to drive to the data center, through piles of snow, to figure out why the load balancer died. A much more sensible way of handling this would be to not allow you to make any changes next time you log into the admin tool. Or you could just make the documentation clear and explain exactly how important that permanent key is.

The Kemp Load Master 1500 is a very solid performer and other than the extremely irritating way they handle licensing I've been quite happy with it to date. At just under $2,500 is cheaper than the Barracuda with a more responsive interface and much more reliable track record. The Kemp wins hands down and is a great deal for the price. I was really looking forward to the IPS system in the Barracuda, but first and foremost the load balancing functions need to work.

Tags: loadbalancer