Production-Ready Docker Stack
Xenit Solutions NV
Roxana Angheluta, Wim Evens, Willem
Van den Eynde, Wim Fabri, Toon Geens,
Jasper Hilven, Michiel Huygen, Thijs
Lemmens, Laurent Van der Linden, Wim
Obbels, Nathan Van Poppel, Lieven De
Puyselleir, Younes Regaieg, Lars
Vierbergen, ...
Learn. Connect. Collaborate.
Alfresco deployments
Flavor: community /
enterprise
Single / bundled Clustered Hosted
Single deployment
method
Automation Traceability Versioning
Upgrades Easy configuration
changes
Data separation Security
Monitoring Alerting Reporting
Learn. Connect. Collaborate.
Agenda
• Architecture
• Docker images
• Ansible deployments
• Powerful monitoring stack
Learn. Connect. Collaborate.
Architecture
• No docker orchestration tool, docker-compose up / down to start / stop
services
• Consul (Hashicorp) + registrator (GliderLabs) for service discovery
• Consul template (Hashicorp) for rendering load balancing configuration and
restarting load balancer
Learn. Connect. Collaborate.
Architecture
Learn. Connect. Collaborate.
Architecture
(clients)
Learn. Connect. Collaborate.
Architecture
(hosting)
Learn. Connect. Collaborate.
Docker images
Learn. Connect. Collaborate.
Docker images
Learn. Connect. Collaborate.
Docker images
Principles
● One process per container
● Init script to customize
● Small size (many images based on
AlpineLinux)
● Data separation
Images Flavour
Alfresco Enterprise
Community
Bundled
Solr Tomcat-based
Jetty-based
Jod converter
Infra-specific Consul, consul-template, registrator,
(ha)proxy
Monitoring-specific Kibana, logstash, curator,
elasticsearch, logspout
Cabot_worker, cabot_beat,
cabot_app, cabot_redis, cabot_db,
cabot2alerta
Carbon, graphite_api, grafana, statsd
Inflow Webapp, db
Databases Postgres, mysql
Learn. Connect. Collaborate.
Ansible deployments
ansible-role-alfresco
ansible-role-solr
ansible-role-consul
ansible-role-central-monitorin
g
ansible-role-logging
ansible-role-docker
ansible-role-infra
ansible-role-metrics-collector
ansible-role-postgres
ansible-role-move2alf
ansible-role-provision-vm
ansible-role-alfresco-bundle
Learn. Connect. Collaborate.
Ansible deployments
Traceability and versioning
• Each role deployed = tag
• Client environment deployment
– Collection of ansible roles tags
– Variables overwriting default values from the roles used
Learn. Connect. Collaborate.
Ansible deployments
Cross-roles concerns
• Security
– Tls authentication for docker and consul
– Secrets protection
• Vault (Hashicorp)
Learn. Connect. Collaborate.
Monitoring
Architecture
Learn. Connect. Collaborate.
Monitoring
Aggregated alerting dashboard
Learn. Connect. Collaborate.
Monitoring
Reporting
Automatic SLA reporting
● Markdown template => pdf
● Cabot availability checks
● JIRA tickets
● Grafana panels
● Kibana panels
Learn. Connect. Collaborate.
Demo
● Installed 4 servers: 2 with alfresco and 2 with solr
○ Demo building process of an Alfresco image
○ Demo ansible deployment of the new image
○ Demo consul template
○ Demo alerta
Learn. Connect. Collaborate.
Future work
● Improve the architecture
● More checks to alert on (investigate also grafana4 alerting)
● Kibana
● Pro-activity: janitors, agents to restart services
Thank you!

Production Ready Docker Stack for Alfresco Deployments