in your description of requirements, you did do state "high volume traffic or large data replication"....... if thats the case, get a dozen vps, scattered throughout the world, and set up nginx and php/fpm or python on each node, and then do poor man's load balancing (one dns record, such as "www", resolving to all 12 IPs.)
then use pki, rsync, and cron to ensure every hour that all doc roots are identical.
if you set up the rsync crons right, you can do this without the need for a "masteR" doc root, so changes to any one doc root would propagate out to all twleve within the hour.
as for mysql, you would need one locatation to run master, with 11 slaves, or if you want to get fancy, you can run galera cluster with 12 read/write nodes (plus command control box)
also, you didnt mention memcache or redis, but there are ways to do that too..... basically it comes down to how beefy (expensive) each vps node would be (cause you are multiplying by ~12)
Geographical optimization (If user is in UK, they will be served from closest server)
there are several dns service providers that will do this. you have 12 resolutions for a single name, and the provider will return the resolution that is geographically closest.... check out ulradns or easydns.... there was one more i used which was great but slips my memory right now......
Ability to handle reasonable DDOS attacks (non traffic saturation types)
the easiset way to do this is by leveraging iptables on the host level to both keep a blacklist, and throttle incoming connections