
This image represents an entry level amount of redundancy that can be achieved network wide.
Switch 1 and Switch 2 represent a collapsed Core/Distribution network and Switch 3, 4, and 5 represent an access network.
Switches 1 and 2 should usually be aggregated by combining them into some kind of stack when possible, however you can configure them as 2 separate non stacked switches if need be. The two switches should be connected by multiple aggregated 802.3ad (LACP) connections consisting of at least 2 cables
Switch 3, 4 and 5 should also be aggregated into a stack when possible. Each switch should have a connection to each other switch, preferably at least 2 cables setup to use 802.3ad (LACP).
Each switch in the Core network should be connected to each switch in the access network using at least 2 cables again when possible use 802.3ad (LACP).
Each server/host should have 2+ network ports capable of LACP or NIC Teaming. These should distributed to different switches and cluster members should be distributed so that at least one port of one member of the cluster exists on each switch.
Then you just build your access network again and again and connect it back to your core. You would never connect 2 access networks however because it is the job of the core to handle that part of the switching.
This is a rough outline of what I see most and have adopted myself in the past. It would allow multiple simultaneous failures without network outage.