To create a 'miniature' replication of a full production environment, you have to know what's in the full production environment, and for each component decide if you need exactly the same thing in your test lab, or if it can be virtualized or run on the same box as other tasks, or if you can skip that particular piece altogether.
It's just that simple.
If you've got a production environment of 9 web servers, a load balancer, and a firewall.. the "cheapest" similar environment would be a single server running 9 web server virtual machines, a virtual machine with a load balancer, and another virtual machine with a software firewall. Of course that won't catch gotchya's or bugs with the hardware LB/FW if they're not identical equipment in the test lab.. but functionally it'd be roughly equivalent.
And of course being VM's, they'll be tiny compared to the production environment and thus not capable of being used for performance tests.
The only TRUE 'replication' is identical everything.
Seriously - a good environment for a website and/or webserver involves few to no single points of failure, and a preference to be able to scale ANY part of the environment without having to scale any other part of the environment.
Good news is this has been done a ton of times, and it's down to a science. Your average semi-HA, semi-redundant web site with enough traffic to need/support the cost ends up with:
1 public switch
1+ web servers
1 private switch
1 mysql db master, 1+ mysql db slaves (writes go to master only)
And as they scale and grow, to be fully HA and to handle increasing load, they often end up in something like this:
redundant pair global load balancers
TWO+ LOCATIONS (each location as follows)
redundant pair of public switches
redundant pair of firewalls (or N+1 firewall setup)
redundant pair of load balancers (or N+1 setup)
N+1 web servers
redundant pair of private switches
MySQL cluster setup - maybe still one master/lots of slaves, maybe not
And of course for large sites this often ends up having caching servers, proxy servers, memcached servers, etc at various points of the environment and/or some CDN fun in front of the whole environment.
This is an extremely generic thing I'm describing here; not sure how helpful it'll be.