Linux ethernet bonding
I purchased a IBM BladeCenter for a number of our systems. It is a compact blade system that puts 14 servers in 7U.
My typical server config is a dual P4 3Ghz, 2Gig RAM, 2 x 40 Gb IDE drives and the machines come with a AMI IDE Raid card. The RAID card is very impressive in that it presents the OS with a single SCSI device, much nicer than the Promise cards etc.
Individual servers have dual gigabit Ethernet cards that goes out the back through dual Layer 7 Nortel switches. Obviously I wanted to bond these for high availability and load sharing
Read on for details on how this was done using RedHat Enterprise
First thing to know is that this stuff is in the kernel and there is a good doc in your kernel source tree under Documentation/networking/bonding.txt this has a lot more detail than I am going to provide here.
A virtual network interface gets created, bond0 in my case, this gets done in /etc/modules.conf
alias bond0 bonding
options bond0 miimon=100 mode=balance-rr
The above creates the bond0 interface and sets some options. It will check the MII state of the card every 100 milliseconds for state change notification. It will also use their round robin balancing policy. More on the various options for these and many more in bonding.txt
RedHat's RC scripts support this bonding configuration without much modification though there aren't any GUI tool to configure it. RedHat network config gets stored in /etc/sysconfig/network-scripts/ifcfg-int
You need to create a config file for the bond0 interface, ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.70.101
NETMASK=255.255.255.0
NETWORK=192.168.70.0
BROADCAST=192.168.70.255
GATEWAY=192.168.70.1
And for each network card that belongs to this group you need to modify the existing files to look more or less like this:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
Once you created these for each of your ethernet cards you can reboot or restart your networking using service network restart and you should see something like this:
bond0 Link encap:Ethernet HWaddr 00:0D:60:9D:24:68 inet addr:192.168.70.101 Bcast:192.168.70.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:58071 errors:0 dropped:0 overruns:0 frame:0 TX packets:1465 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4315472 (4.1 Mb) TX bytes:120360 (117.5 Kb) eth0 Link encap:Ethernet HWaddr 00:0D:60:9D:24:68 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:26447 errors:0 dropped:0 overruns:0 frame:0 TX packets:1262 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1992430 (1.9 Mb) TX bytes:95078 (92.8 Kb) Interrupt:16 eth1 Link encap:Ethernet HWaddr 00:0D:60:9D:24:68 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:31624 errors:0 dropped:0 overruns:0 frame:0 TX packets:203 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2323042 (2.2 Mb) TX bytes:25282 (24.6 Kb) Interrupt:17
You can tcpdump the individual interfaces to confirm that traffic goes shared between them, weirdly though on my machine my tcpdump on eth0 and eth1 does not show incoming traffic just outgoing, dumping bond0 works a charm though.
To test it I just turned the power off to one of my switch modules, the networking dies for a couple of seconds but soon resumes without a problem. I am sure I could tweak the times a bit but for now this is all I need.
Schengen Visa Hell
15 European countries belong to the list of Shengen countries, the basic idea is that there are little or no border control between them, one visa fits all.
This is a great idea and really makes European travel very easy. The problem is that the criteria for getting a Shengen visa is up to the individual countries. As anyone who knows anything of the European community can tell you they absolutely love bureaucracy . Entry requirements range from the impossible to simple depending on who you are, where you are going and what country you are from.
For South Africans in the UK it is mostly easy, you get a French Schengen visa, go to France usually using the Eurostar to Paris and get the stamp there. Once you have that you can go anywhere in the 15 countries for the duration of your visa. The problem is of cource the fact that you have to deal with the French visa people. While they are the easiest to get of the lot it is still hell.
I remember standing outside in the freezing cold 3 mornings in a row at 7am waiting for the doors to open at 10am. Only on the 3rd morning did I even make it inside the main building, I was there till 3pm when I finally got leave to remain in the Schengen countries for 6 days! These days it is all by appointment, via a phone call that costs £1.50 per minute and can last a long time, I have never actually held on the phone long enough to get any use out of the line but I hear it can take 10 to 15 minutes.
It is now easier, you can send a agent on your behalf though there are only a handful of agencies who are allowed in. It used to be that the default answer to this was to just use 1st Contact. Their service was great, personal, friendly, they gave advice over the phone and they were affordable. This has all changed now. They do not speak to you over the phone, they won't see you, it takes weeks to get a visa out of them and the whole experience is just really crap, I would rather queue myself than deal with 1st Contact again.
A friend told me about Mobile Visa Services who does a fantastic service. They are clearly geared at busy people. They provide very friendly advice over the phone and know what they are talking about. Once you decide to use them they will come fetch the passport from you and other documents and do the leg work, then bring it back to your office. You do pay a bit extra, £55 for the service they offer and £25 for the French but I can recommend them for anyone who wants to get a Visa without hassle. In this case I gave them my passport on Monday and had it back today, amasing.
SpellBound
Something that always annoys me is the lack of spell checking in the whole browser based app world. I have often wanted to spell check input fields in the browser but couldn't and ended up relying on 3rd party tools to do things like blog posts because they have spell checkers.
No more, I noticed via Geek News Central a link to a nice post by Matthew Bishoff that mentions Spell Bound. It is simple to use, just right click on a input box and choose check spelling and it does the rest. More than 30 language files are available.
Firefox 1.0 and Tabbrowser Extensions
Everyone knows FF 1.0 is release but I have been holding off upgrading all my machines since the excellent Tabbrowser Extensions had some issues. Even though you set it to open links from external apps in new tabs it would just ignore that setting. This was a total show stopper for me, I read my RSS feeds by opening new tabs in the background for whatever I am interested in and going back to read them all once I am done in the aggregator.
They have now fixed this (on the 13th already) so finally I can upgrade everywhere.
More feedster.com sillyness
Somehow, more than any other online service, Feedster really annoys me. For the last few days I noticed some 404 error on their feed of the day feed. I really should have unsubscribed from it when I said I would, but then they fixed it.
So this is what happens, they seem to be returning error codes based on user agent:
Connected to feedster.com.
Escape character is '^]'.
GET /search.php?q=f-botd&limit=15&type=rss HTTP/1.1
Host: feedster.com
User-Agent: NewzCrawler/1.7 (compatible; MSIE 6.00; Newz Crawler 1.7; http://www.newzcrawler.com/ )HTTP/1.1 404 Not Found
compare that 404 error with this:
Connected to feedster.com.
Escape character is '^]'.
GET /search.php?q=f-botd&limit=15&type=rss HTTP/1.1
Host: feedster.com
User-Agent: testHTTP/1.1 200 OK
wtf? One less feed to worry about.
Guy Fawkes
I tried to go see some fireworks last night but they started a bit early to get to on time so tonight there were some more and this time very conveniently close to my house. The organizers claimed it was the biggest free fireworks display in England and I can easily believe that.

It went on for a whole 18 minutes and was absolutely spectacular. They expected 30 000 to 40 000 people would show up, I am sure there were more.
Some photos that I took can be seen here.
More on Search Term Highlighting
I previously mentioned I am enabling highlighting of search terms on some of my pages, the solution I used there was Google specific. Dave Lemen left a comment on that entry about a javascript he wrote but this one supports multiple search engines and not just Google.
His code can be found here and it is rather nifty. It provides a little legend on top of the page showing what is going on and allowing the user to turn the highlighting on and off on the fly.
Simple Photo Browser version 1.1
I made version 1.1 of my Simple Photo Browser available, this release adds exif support if you have exif compiled into your php.
The white and black themes has been updated with exif support and there are some slight changes in the installation procedure. A sample of the exif support can be seen here
Download: http://www.devco.net/code/spb/spb-1.1.tgz

