What strategies do you use to ensure high availability and fault tolerance in a distributed microservices environment?