First you should connect them with some fast network.
- You may run some caching reverse proxy like
nginx
.
- You may move MySQL to the second host. You can also try to to make distributed.
Requests to the static data should be served by simpler things like nginx/lighthttpd/... on one machine or on two machines (in round-robin fashion).
Read-only complex requests should be properly cached. Cache may run on other host.
Complex write requests may be done some centralized manner (only on one machine; with roles separation (web server/database)). Alternatively, you may consider doing scalable system with multiple nodes that can handle all requests, but it is going to be more complicated and should be considered if there will be further massive growth.
If the system is mostly read-only (like a collection of movies available for download), you may set up 2 hosts responsible for parts of content. Alternatively, if the data protection against crash is more important, you may do two identical hosts with the same data and round-robin requests to them on router.