This depends entirely on your requirements.
* Running multiple services on one server keeps hardware cost down. On the other hand, if you someway lose the server - permanently or temporarily - then all services are lost during downtime.
It is also more difficult to keep the server secured with lots of services running.
A small mistake can render all services unreachable,
* Running one service per server is more expensive, you need more/better hardware - even if your servers are virtualized.
One main service per server is the most secure way, for example it is required for PCI-DSS certification.
If you need to replace a server or service, it is a lot easier to configure a new server with only one service.
So it depends on you & your environment.
A few things to keep in mind:
- Separate services that need to be publicly available from those that don't.
Some services are more sensible than other, these you want to keep on a separate server and separate subnet. For example, if you run a webserver you might want to keep the database server on a separate server and subnet than the webserver. Then configure firewall to limit access to database.
- Don't put several heavy services on the same server.
A database needs really fast disks and better CPU than a webserver (assuming, of course, there's a lot of traffic to your services). So if you're unlucky, when database is working under heavy load other services on that server might become unreachable.
- DNS, DHCP & NTP are "light" services that are commonly put on same server - the most common in small organisations is to use the firewall for these.