Service function chaining (SFC), consisting of a sequence of virtual network functions (VNFs), provides effective and flexible network service management in a cloud computing environment. Due to the vulnerabilities of software-implemented VNFs, existing research has introduced VNF backup servers to achieve the fault-tolerance of VNFs and improve the availability of SFCs. However, they either do not consider the failures of backup servers or do not aim to maximize the availability of the entire SFC. In this paper, we study how to maximize the availability of an SFC, considering that both VNFs and backup servers can fail. We refer to the problem as SAM: service function chaining availability maximization problem. Given an SFC and a set of backup servers placed inside a cloud data center network, the failure probabilities of the VNFs and the backup servers, the goal of SAM is to assign backup servers to VNFs to maximize the availability of the SFC while satisfying the backup capacity constraint of the servers. We design a suite of optimal and efficient algorithms to solve SAM. Via extensive simulations with different network parameters, we show that our work outperforms the existing research by up to 21.7% in SFC availability, demonstrating the effectiveness of our algorithms in achieving high fault tolerance of SFC in cloud data centers.