Software defined networks (SDN) promise greater flexibility, cost efficiency and easier management of network infrastructure by logically centralizing the control and abstracting network resources, but their wider use is inhibited by various challenges. In this master’s thesis, we explore the problem of ensuring high-availability of SDN controllers. It is a mostly unexplored problem which is also crucial with the implementation of software defined networks in production environments. Firstly, we present the concept of software defined networking. Doing so, we explore where their use has the greatest potential and identify various challenges which make their implementation difficult. We emphasize the problem of ensuring high-availability and the scalability of the network because of the centralized control plane and list as a solution the implementation of a controller in the form of a fault-tolerant distributed system. Following this, we study the limitations in design and the implementation of these systems. We focus on consensus algorithms as a key component in ensuring high availability. Following this, we present strategies with developing distributed controllers and explore which open-source implementations allow for their high availability. We choose the ONOS controller as the potentially most suitable for production use and analyze its architecture. With the chosen controller and the simulator of software defined networks Mininet, we establish a pilot environment. We develop a test framework for simulating scenarios that include various controller node and communication channel failures and analyze system behavior while doing so. Based on the results of the analysis we evaluate the chosen controller implementation based on ensuring high availability and give suggestions for improving the availability of the solution.