Wow, you're making life hard for yourself there - all that on one machine?
Anyway, the problem you'll run into is that while all of that is clusterable it's done by lots of other bits of code that will only add to the complexity/fragility of your existing, already non-optimal, setup.
One thing you could think about doing is setting up a pair of virtualisation hosts using either VMWare's ESXi, MS's Hyper-V or KVM. Then build VMs for each of those functions, let the two servers spread the VMs between them both and then setup either a high-availability type system such as VMWare's HA or Hyper-V's clustering capability - or go the whole hog and run them in fault-tolerent mode (if Hyper-V or KVM have those features, ESXi does).
This would be a very flexible and modern way of doing what you need, plus spreading the complexity and supportability of your setup out into a more modular approach.
Of course none of this is free and you need to understand how much instant failover is worth to you compared to pretty quick failover but ultimately that's the direction I'd personally be looking at.