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!
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
New Staging Environment in LiteSpeed
Posted by Sam
In version 3.3.4 of LiteSpeed they have finally added a staging environment for Ruby on Rails. This is a big deal for me because every site I create gets a staging environment. In a previous post I blogged about setting up custom environments for Rails in LiteSpeed, but with the new staging environment the code changes in that blog are no longer required. I'm very happy about this and it's nice to see my only real complaint with LiteSpeed fixed. Although now that they've added the staging option maybe they can expose a web service to add new web sites. It would be great for scripting the setup of new sites!
Tags: litespeed rubyonrails
Limiting Bandwidth for Solaris Zones
Posted by Sam
I love Solaris. I mean I really love it. Using zones and ZFS is like a breath of fresh air. If I had one complaint it's that Solaris is sometimes over-documented. I know that seems strange at first, but case in point is trying to setup IPQoS to simply limit the bandwidth on a particular zone. This week I decided that I need to take some time and figure out how to limit a zone to only using 1mb of bandwidth. So I started by looking around on the web and there was nothing. It was a ghost town. Some people were talking about, but nobody had a simple example of how to implement it. In the Linux world there would be a million how-tos. More than half of which are out of date and of questionable quality, but they are out there none the less.
Since I couldn't get any love from the internet at large I decided to look at the documentation that Sun provides. Sun's documentation is great, but often times it's overkill. Or they expect that you've been to some training class and already have a pretty decent understanding of what you are doing. The documentation for IPQoS was no different. It came in at 72 pages when printed and was not at all helpful. Ugh! Finally, I put together a solution and I thought I would share it here. Hopefully it will help others as well.
In Solaris 10 update 4 there are three example files for QoS in the /etc/inet directory so I created a new file there. Here are the contents of the file.
fmt_version 1.0
The important parts of the file are committed_rate, committed_burst and peak_burst. Basically this tells IPQoS that it should start dropping packets whenever the bandwidth exceeds 1 megabit (1,048,576 bits). In the example above I have a class named web1 and a filter that's also named web1 that points to the class web1. These can be named anything you like, but make sure that filter > class has the same name as class > name.
action {
module ipgpc
name ipgpc.classify
params {
global_stats TRUE
}
class {
name web1
next_action cap
enable_stats FALSE
}
filter {
name web1
daddr 10.1.1.5
class web1
}
}
action {
module tokenmt
name cap
params {
committed_rate 1048576
committed_burst 1048576
peak_burst 1048576
red_action_name drop
green_action_name continue
yellow_action_name continue
global_stats TRUE
}
}
After you create the file above you can active it by using ipqosconf like so:
bash-3.00# ipqosconf -a ipqos.conf
Be sure to substitute the name of the file above for ipqos.conf. Assuming you don't have any errors you should be good to go!