Software-Defined Network (SDNs) is a decoupled architecture that enables administrators to build a customizable and manageable network. Although the decoupled control plane provides flexible management and facilitates the task of operating the network, it is the vulnerable point of failure in SDN. To achieve a reliable control plane, multiple controller are often needed so that each switch must be assigned to more than one controller. In this paper, a Reliable Controller Placement Problem Model (RCPPM) is proposed to solve such a problem, so as to maximize the reliability of software defined networks. Unlike previous works that only consider latencies parameters, the new model takes into account the load of control traffic and reliability metrics as well. Furthermore, a near-optimal algorithm is proposed to solve the NP-hard RCPPM in a heuristic manner. Finally, through extensive simulation, a comprehensive analysis of the RCPPM is presented for various topologies extracted from Internet Topology Zoo. Our performance evaluations show the efficiency of the proposed framework.