If you've got a solution, preferably open source, of course(!), I'd be interested to know, but I'm actually wanting to know the correct terminology.
The device I'm thinking of is an address translator (like NAT) that takes the request for a URL and either answers it from its cache, or from one of the possible server machines.
If there's a write (a POST request), this device would send it to all servers.
So all servers can be in the same state, without any need for synchronisation. If one node fails, the remaining node(s) will be in the same state, so can reply with requests.
So, as a diagram:
Client -> read -> device -> Server A/B (load balancing) or from cache
-> Server A
Client -> write (POST url) -> device -> Server B
-> Server N
All the servers are given the same writes so Server A, B,...N are all in exactly the same state (if they're running).
Any server, or the cache, can reply to a read.
The questions:
- What is this device called?
- Is this easy to set up with Apache/Squid? -- if so, where's an idiot's guide?
- This makes the device itself, the SPOF (single point of failure), how do you set it up so you have two independent devices doing this so that, if one fails, the other will take over seamlessly?