So I might be a bit odd but for the rails site which I did run for awhile the db layer was sqlite replicated on each machine. Since it only did reads this turned out to work better than MySQL.
Everything was on EC2 instances (except for the dev instance on my laptop).
The correct combination of technologies depend largely on your application, what are you building?