An increasing number of large-scale distributed systems are being built by incorporating Cloud, Fog, and Edge computing. There is an important need of understanding how to ensure the resilience of systems built using Cloud, Fog, and Edge computing. This survey reports the state-of-the-art of architectural approaches that have been reported for ensuring the resilience of Cloud-, Fog-and Edge-based systems. This work reports a flexible taxonomy for reviewing architectural resilience approaches for distributed systems. In addition, this work also presents a capability-based cyber-foraging framework intended to improve the overall system resilience in the context of a physical node's capabilities. This survey also highlights the trust-related issues and solutions in the context of system resilience and reliability. This survey will help improve the understanding of the current state of system resilience solutions and raise awareness about the issues related to physical capabilities and trust management in the context of distributed systems resilience.