Update (28 Aug 2012): I now tend to use haproxyctl nowadays, which utilizes the methods described below.
I've fixed it after a little more research, for anyone else with the same issue:-
You can add a unix socket in your config, then interact with that (here are the possible commands).
To set up:
sudo nano /etc/haproxy/haproxy.cfg
In your 'global' section add in:
stats socket /etc/haproxy/haproxysock level admin
Restart your haproxy daemon (e.g. sudo service haproxy restart
)
Now you need socat (if you don't have it, just apt-get install socat
on Ubuntu).
Now all you need to do is fire off this command to take down a node:
echo "disable server yourbackendname/yourservername" | socat stdio /etc/haproxy/haproxysock
To bring it back up replace disable with enable in the command above.