Resolver (SLB) High Availability
Resolver or SLB consists of a DNS Server, an NGINX balancer, a MySQL secondary database and a health-checker.
To increase high availability of the system, the platform uses several Resolvers for receiving requests simultaneously. As a result, there can be several entry points for users' environments used at the same time. In this way, the load can be effectively distributed. The instances of the Resolver should be located on different hosts in order to remain the users applications up and running even if one of the infra nodes fails.
The data source for all Resolvers is the Database Server (MySQL). They do not use the numerous data files located directly on the file system. Their synchronization is performed using primary-secondary database replication. Storing all the data in a single place makes Resolver instances fully interchangeable in case of any errors in one of them. The Database Server guarantees data integrity and provides easy and faultless synchronization.
This redesign also helped to remove spare components inside the infrastructure that makes the process more efficient.
Any configuration changes can be applied on the fly without reloading the DNS server and the NGINX balancer.
The JelCore does not need any more to perform extra connections to the Resolver container over SSH for managing DNS zones.
It is not necessary to backup configs on the Resolver node. If something happens to the container, resolver can be recreated by Puppet from scratch.