Sonntag, 21. August 2016

Centralized Service Configuration For Holmes-Totem

The second, much smaller part of my GSOC-Project consisted in the creation of a system to allow an admin to store the configurations for the analysis-services of Holmes-Totem [1] in a central location and make the system automatically load it from there upon upstart.
When starting the project, the plan originally was to create a central key-value store with libkv [2] and etcd [3], Consul [4] or Apache Zookeeper [5].  However, when it came to implementation, this turned out to be unnecessary.
One reason for this was, that the configuration files of the services should usually not change too often, since they only contain information about where to find certain other components and what ports to listen on, etc.
Instead, Holmes-Storage [6] was extended to allow for storing configuration-files (uploaded over HTTP) into its database and query them (also over HTTP).
This way, the only thing left to do was modifying the Dockerfiles, which are responsible for starting the individual services, to accept an argument specifying the location of the file service.conf. The docker-compose-file therefore takes a look at environment variables pointing to the running instance of Holmes-Storage and sets these arguments correctly for each service. By doing this, whenever the containers are built, the configuration-files are pulled from the server.

[1] Holmes-Totem
[2] libkv
[3] etcd
[4] Consul
[5] Apache Zookeeper
[6] Holmes-Storage

Keine Kommentare:

Kommentar veröffentlichen