Hi let us understand more about orchestration and master worker architecture.
As we discussed earlier I can have docker engine installed on top of any
operating system and I can have n number of containers. When there is a need to
start huge number of containers for various applications one single machine
may not be sufficient enough. So I may need to start n number of machines whenever
I have n number of machines managing those machines it's going to be a problem
that's where the master worker architecture comes into picture. I'm going to have
a master and I will be having n number of worker machines
and all the worker machines will be reporting to the master. The
reporting could be in terms of a small heartbeat signal
it'll keep on sending it to the master saying I am active and alive and the master will be
having a controller or a daemon continuously running to listen
to this particular heartbeat signal and keep managing all this
nodes and each and every node internally it will be having the
operating system or the docker engine all that will be installed and
configured properly. So I am going to have the docker engine
and each and every worker machine will be having
the operating system and its own infrastructure and
master also needs to have a control on this worker machines saying
to assign the work or to get the status on what is the availability of
the resources and what feature work to be allocated the current
status of the work that is allocated, to get the status it's going to
have some sort of a daemon that is running that will keep reporting
to the master a different controller will be listening to it.
So I may have a controller and here is going to be a listener
and the same architecture will be available in most of the master
worker architecture where I will be having n number
of controllers to do different jobs and each worker machines will be having a listener
and this is where the high availability comes into picture. In
case if I wanted more resources what I can do? I can start similar
such machines and make it to report to the master
So within no time the capacity will get increased and the master will start
managing more and more resources and this type of running n number of machines
together and doing the coordination we call that as an orchestration and each worker
machines will be managing n number of containers within it and I need to facilitate
these containers to communicate within each other and that's where I'm going to
have a virtual networking have sophisticated networking capability where each and every
container will be in a position to communicate. There
are n number of network implementations available to facilitate
this and in this particular architecture whenever there is a failure of a
worker say for example this particular machine failed for
some reason the other machines will be in a position to take up
those load and make the applications available. But in case if the
master fails all the worker machines will start failing. That's
why we will be having a high availability for the master. So there
will be n number of masters most of the scenarios we
will be having a odd number of masters working together and
only one will be active at any point of time and others will be
passive master and to manage all these masters who should
be the master and who should be active and who should be passive
that could be another controller which can take up this particular
activity. Orchestration can facilitate us to provide very important
features like high availability and scalability of the containers
we will be having a separate discussion on what is high
availability and scalability and how orchestration going to facilitate that.