Server Tinkering

I was born to tinker. I think this must be the opposite of the optimizer. I see a project in anything that I could tweak to make it a little better. This not only applies to computers, which are the easiest thing to tinker with, but food, DIY projects, and more. This particular post is centered a little more around computer tinkering, just as a warning to the technophobes.

My host for the past 2+ years for this server has been Site5. They have been adequate. I had never used a Web Hosting Service before so this was a whole new experience. Moving there from a private server took a lot of tweaking. Server wise, they were pretty good. I think my site got its fair share of the server pie, but it is not a really demanding site. Service wise (meaning the people), I think they only get 4 out of 5 stars. Whenever I had a problem, they did finally resolve it, but it took some work and push-back from me to make it happen. Usually the first contact would try to blow me off. I would patiently explain that they were contractually obligated to fix the problem and then 'level 2' support would fix it. I could deal with this if they had all the features I wanted, but I wanted more. Sure, they have 'unlimited' disk space (as long as you don't use it), and unlimited bandwidth, which with my vast sea of devoted readers, I don't really need. But what I do need is IPv6. And they have no plans for that (at least I am privy to none).

So I jumped ship. The market for dual stack hosting is not yet very big so there really aren't that many service providers yet. I finally found BurstNET®, which seemed to offer IPv6 as well as very low-priced VPS (Virtual Private Server). So low, in fact that I could get a whole VPS for less than I was paying at Site5. That's very cool. Being a tinkerer, I really need w00t. Still, since BurstNET uses OpenVZ technology instead of Xen or KVM, I don't quite have complete control over everything. I don't get to configure my network, for instance. But I do have two static IPv4 IP addresses; doing my part to reduce the remaining pool of IPv4 addresses. And after a quick service request, they granted me two IPv6 addresses. Yes, only two, not an entire subnet. I thought that was odd, but hey, at least it is something. Their service department has been nothing but good. I have made several requests for help:

  • Request for IPv6 connectivity
  • Request for reverse-DNS mapping IPv4 and IPv6 addresses
  • Request to get ip6tables working

All there responses were quick and positive. This was the best service I had ever gotten and for what? Yup, $5/mo. This month I got more than my money's worth in support man-hours. I am hoping that the tinkering I have done over the last week is sufficient to have my VPS in decent shape.

Also as part of my tinkering, I managed to set up my VPS as a master name server for the three DNS zones that I control (mauery.org, mauery.com, and my he.net IPv6 arpa reverse zone). Then, using HE.net's DNS service, I can push to their DNS slave servers. This means that I have five geographically diverse, topologically diverse, redundant nameservers. So even though almost nobody reads my blog, you will never not be able to track it down.

Now on to the next tinkering project....

cool, but overselling?

mmm.. that's quite a good price for what they offer. Looks cool. but I might think that they are probably overselling to provide such a small price? Fabio Varesano

Containers == less overhead

I looked at several varieties of virtualization. The big ones that I have seen (for Linux at least) are KVM, Xen, or containers. KVM offers full virtualization and the widest range of what you can do on the client. Xen (which I have not used) is paravirtualization, and offers most of what KVM does with slightly less overhead. Containers have the most restrictions, but are not virtualization at all -- merely hiding everyone else. When I run a process, it is running as a process on real hardware at full speed. The only overhead is the namespace translations that go on to translate things like PIDs/TIDs from my container to the host's namespace. But with this lack of overhead, there is not as much that I can do -- I can't choose what kernel to run; my network is mostly managed by the host (except for iptables); etc. But, it does do a good job at keeping me separate from everyone else. So it runs a lot like a shared host except that I can't see any of zombie666's mad perl scripts running.

Part of the whole container premise is that you can guarantee resources to each container, which is different than shared hosting. I am not sure if you can over-commit resources or not though. But judging by my calculations (I am running on a machine with Intel Core 2 Quad 2.66 GHz procs, which I assume there are two of, for a total of 8 CPUs), they could put about 20 of this sized containers on this machine without any trouble. If they count hyper-threaded CPUs as CPUs (which in my opinion is cheating since they are not really full CPUs) then they could put about 40 containers on this machine. That would be over-booking IMNSHO.

That said, I have to admit that my little VPS does not have much horsepower. I had to severely throttle Apache in order to keep it from using ALL my memory and hosing the machine. 512 MB RAM does not go as far as it once did. :) And the 1 GHz of CPU power is not a lot either.

One thing I really do like is that because it is a container, it can reboot in a matter of seconds. It was off for about 10 minutes once when its host got rebooted, but every other time it is nearly instantaneous power-on. If BurstNET really wanted to be cool, they could do migrations with checkpoint/restart that are almost instantaneous. That would be nice. Then if they ever needed to power-cycle the host, they migrate off, cycle and migrate back with zero actual down time on my VPS (since the state is saved) and only minimum 'unavailable' time in real time.

Another nice thing is that if I outgrow 512 MB RAM or 1 GHz CPU, I can upgrade plans with the click of a button (and a credit card of course).