We install all of the components and database on a single server with a single Tomcat for our development environments. However, for production the database should be split out into a three-node cluster (see earlier answer) and separate from the application server. Often we also see customers install Kinetic Task on a different server and load-balance this separately depending on integration/automation load.
Also, some maintenance scenarios will required a Tomcat restart, so isolating these either by load balancing or separate Tomcat instances might be recommended (example: adding a new BridgeHub adapter). This can be mitigated in some situations using the Tomcat Manager to deploy/restart a specific app versus the whole Tomcat instance. See preferred architecture diagram.