Migrating an Application into the Cloud with Docker and CoreOS

Similar documents
Orchestrating Docker containers at scale

Investigating Containers for Future Services and User Application Support

OpenShift 3 Technical Architecture. Clayton Coleman, Dan McPherson Lead Engineers

Installation and setup guide of 1.1 demonstrator

agenda PAE Docker Docker PAE

DEVOPS COURSE CONTENT

CS-580K/480K Advanced Topics in Cloud Computing. Container III

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

Infoblox Kubernetes1.0.0 IPAM Plugin

Container Orchestration on Amazon Web Services. Arun

Self-managing cloud-native applications: design, implementation, and experience

Think Small to Scale Big

UP! TO DOCKER PAAS. Ming

Ingest. David Pilato, Developer Evangelist Paris, 31 Janvier 2017

Ingest. Aaron Mildenstein, Consulting Architect Tokyo Dec 14, 2017

Travis Cardwell Technical Meeting

Singularity CRI User Documentation

Fixing the "It works on my machine!" Problem with Docker

DEVOPS TRAINING COURSE CONTENT

Important DevOps Technologies (3+2+3days) for Deployment

Containers OpenStack. Murano brings Docker & Kubernetes to OpenStack. Serg Melikyan. software.mirantis.com. January 27, 2015

Who is Docker and how he can help us? Heino Talvik

ACCELERATE APPLICATION DELIVERY WITH OPENSHIFT. Siamak Sadeghianfar Sr Technical Marketing Manager, April 2016

Running Splunk Enterprise within Docker

Infrastructure at your Service. Oracle over Docker. Oracle over Docker

So, I have all these containers! Now what?

An Introduction to Kubernetes

Cloud providers, tools and best practices in running Magento on Kubernetes. Adrian Balcan MindMagnet Software

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

Deployment Patterns using Docker and Chef

AGILE DEVELOPMENT AND PAAS USING THE MESOSPHERE DCOS

Building/Running Distributed Systems with Apache Mesos

Package your Java Application using Docker and Kubernetes. Arun

Microservices and Container Development

Using DC/OS for Continuous Delivery

INDIGO PAAS TUTORIAL. ! Marica Antonacci RIA INFN-Bari

ovirt and Docker Integration

Kuber-what?! Learn about Kubernetes

SCALING DRUPAL TO THE CLOUD WITH DOCKER AND AWS

VMware Fusion Tech Preview 2017: API/CLI Getting Started Guide

The four forces of Cloud Native

CNA Cloud-native applications

DevOps Technologies. for Deployment

Networking & Security for Mesos

CLOUD-NATIVE APPLICATION DEVELOPMENT/ARCHITECTURE

A REFERENCE ARCHITECTURE FOR DEPLOYING WSO2 MIDDLEWARE ON KUBERNETES

Container-based virtualization: Docker

Kubernetes introduction. Container orchestration

@briandorsey #kubernetes #GOTOber

OpenStack Magnum Pike and the CERN cloud. Spyros

AGILE RELIABILITY WITH RED HAT IN THE CLOUDS YOUR SOFTWARE LIFECYCLE SPEEDUP RECIPE. Lutz Lange - Senior Solution Architect Red Hat

Launching StarlingX. The Journey to Drive Compute to the Edge Pilot Project Supported by the OpenStack

Container Networking and Openstack. Fernando Sanchez Fawad Khaliq March, 2016

Operating and managing an Atomic container-based infrastructure

Go Faster: Containers, Platforms and the Path to Better Software Development (Including Live Demo)

Docker All The Things

HPC over Cloud. July 16 th, SCENT HPC Summer GIST. SCENT (Super Computing CENTer) GIST (Gwangju Institute of Science & Technology)

Developing Microsoft Azure Solutions

P a g e 1. Teknologisk Institut. Online kursus k SysAdmin & DevOps Collection

RUNNING VIRTUAL MACHINES ON KUBERNETES. Roman Mohr & Fabian Deutsch, Red Hat, KVM Forum, 2017

Containers 101. with Podman on Fedora 29. Alessandro Arrichiello. Solution Architect, Red Hat

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

BUILDING A GPU-FOCUSED CI SOLUTION

OpenStack Magnum Hands-on. By Saulius Alisauskas and Bryan Havenstein

Continuous Integration and Deployment (CI/CD)

Docker: use cases. (by someone who doesn t know anything about Docker)

Cloud Computing Introduction to Cloud Foundry

Percona Live Europe Amsterdam, Netherlands October 3 5, 2016

Basics of Git GitHub

Lightweight Containerization at Facebook

Lesson 7: Recipe Display Application Setup Workspace

One year of Deploying Applications for Docker, CoreOS, Kubernetes and Co.

DevOps Online Training

More Containers, More Problems

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction

Drupal Command Line Instructions Windows 7 List All Files >>>CLICK HERE<<<

Mesos Go Stateful. An Abstraction for frameworks running stateful workload. Dhilip & Amit - PaaS Team, Huawei

Taming your heterogeneous cloud with Red Hat OpenShift Container Platform.

IBM Planning Analytics Workspace Local Distributed Soufiane Azizi. IBM Planning Analytics

/ Cloud Computing. Recitation 5 February 14th, 2017

Managing Openstack in a cloud-native way

SAINT LOUIS JAVA USER GROUP MAY 2014

Docker and Oracle Everything You Wanted To Know

GoDocker. A batch scheduling system with Docker containers

Getting Started With Amazon EC2 Container Service

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

From Bare Metal to Cloud. Andy ICCLab, ZHAW Piotr Kasprzak, GWDG

HOW TO STAND OUT IN DEVOPS

100% Containers Powered Carpooling

How Container Runtimes matter in Kubernetes?

Zadara Enterprise Storage in

One year of Deploying Applications for Docker, CoreOS, Kubernetes and Co

Zenoss Core Upgrade Guide

Cloud I - Introduction

Arup Nanda VP, Data Services Priceline.com

Continuous Integration using Docker & Jenkins

DevOps Course Content

Microservice Powered Orchestration

S Implementing DevOps and Hybrid Cloud

AZURE CONTAINER INSTANCES

Transcription:

Migrating an Application into the Cloud with Docker and CoreOS Zurich University of Applied Sciences Presenter: e-mail: Martin Blöchlinger bloe@zhaw.ch

Content Introduction Why docker, CoreOS? CoreOS & Components fleet etcd Service Discovery (confd) Current Implementation Demo Questions & Discussion

Introduction InIT Cloud Computing Lab Initiative: Cloud Native Applications Current Project: Transform Business Application to Cloud Open-Source Application not designed for Cloud Application Goal: Resiliency, Scalability

Zurmo Architecture Core: PHP Application Components: Webserver Database Cache

Target Architecture

Why docker? lightweight easy setup of environment testing applications on the fly fast startup fine grained scheduling reusable in cloud -> CoreOS

CoreOS Linux Operating System Intended to be used with docker No package manager Preinstalled Tools fleet Run docker containers etcd Configuration Management docker

fleet distributed init system based on systemd (init system) declare services in fleet unit files declare dependencies of services declare environment of process control lifecycle of long running processes start process/container stop process/container manage process/container

fleet - example unit file Dependencies [Unit] Description=Apache web server service Before=zurmo_apache_discovery@.service After=etcd.service After=docker.service Requires=zurmo_config.service Wants=zurmo_apache_discovery@.service [Service] TimeoutStartSec=0 Restart=always Process lifecycle management EnvironmentFile=/etc/environment # ExecStartPost -> what to do after starting the process ExecStartPre=-/usr/bin/docker kill zurmo_apache # ExecReload -> what to do on reload ExecStartPre=-/usr/bin/docker rm zurmo_apache # ExecStopPost -> what to do after stopping the process ExecStartPre=/usr/bin/docker pull user_name/zurmo_apache ExecStart=/usr/bin/docker run --name zurmo_apache -p 80:80 --volumes-from zurmo_config user_name/zurmo_apache ExecStop=/usr/bin/docker stop zurmo_apache [X-Fleet] X-Conflicts=zurmo_apache*.service MachineMetadata=public=true Scheduling constraints

fleet - start/stop services fleetctl: command line tool make the service known to fleet > fleetctl submit <unit_file> schedule the service on a machine > fleetctl load <service_name> start / stop service > fleetctl start <service_name> > fleetctl stop <service_name>

fleet - using templates In fleet (save as zurmo_apache@.service) [...] ExecStartPre=-/usr/bin/docker kill zurmo_apache_%i ExecStartPre=/usr/bin/docker pull user_name/zurmo_apache_%i ExecStart=/usr/bin/docker run --name zurmo_apache_%i user_name/zurmo_apache_%i [...] Start instance based on template > fleetctl start <template_name@instance_name.service> > fleetctl start zurmo_apache@0.service

etcd distributed key value store designed for: shared configuration & service discovery implements Raft consensus algorithm handles machine failures, master election etc. actions: read, write, listen data structure /folder /folder/key REST-API easy to use client: etcdctl

etcd - example read/write a value > etcdctl get /folder/key > etcdctl set /folder/key read/create directory > etcdctl mkdir /folder > etcdctl ls /folder listen to changes > etcdctl watch /folder/key > etcdctl exec-watch /folder/key -- /bin/bash -c touch /tmp/test

etcd - service discovery

etcd - service discovery /services/cache /services/cache/f7d43e22-2e11-4d29-a5a4-c55741bcae99 /services/cache/f7d43e22-2e11-4d29-a5a4-c55741bcae99/host /services/cache/f7d43e22-2e11-4d29-a5a4-c55741bcae99/port /services/cache/f7d43e22-2e11-4d29-a5a4-c55741bcae99/ip /services/loadbalancer /services/loadbalancer/9259e4d8-f3a0-4947-9d9f-48b98d731cda /services/loadbalancer/9259e4d8-f3a0-4947-9d9f-48b98d731cda/port /services/loadbalancer/9259e4d8-f3a0-4947-9d9f-48b98d731cda/host /services/loadbalancer/9259e4d8-f3a0-4947-9d9f-48b98d731cda/ip /services/webserver /services/webserver/87e60800-9b3f-43f9-875a-0954ac04059a /services/webserver/87e60800-9b3f-43f9-875a-0954ac04059a/host /services/webserver/87e60800-9b3f-43f9-875a-0954ac04059a/port /services/webserver/87e60800-9b3f-43f9-875a-0954ac04059a/ip [...]

confd - configuration reloading tool to rewrite configuration files if etcd key changes not part of CoreOS (used in containers)

Current Implementation Containers & fleet files for: HAProxy Apache Zurmo Application Zurmo Configuration Memcached MySQL Sidekicks Service Discovery

Deployment

Demo Zurmo in Action Service Discovery Stopping Service Resilience Container failure VM failure

Conclusion / Next Steps Status Running cluster with core of application (OpenStack, Vagrant) Resiliency implemented with CoreOS, fleet, etcd, docker and confd Now implementing logging Problems faced Time to build/download docker images Managing multiple git branches Complexity compared to size of application Future challenges Stateful containers (e.g database) Scaling (tools like kubernetes)

Links ICCLab: http://blog.zhaw.ch/icclab/ Cloud-Native Applications Initiative: http://blog.zhaw.ch/icclab/category/research-approach/themes/cloud-native-applications/ ZHAW InIT http://init.zhaw.ch/en/engineering/institutes-centres/institute-of-applied-information-technology.html Docker Hub - Docker Images https://hub.docker.com/u/icclabcna/ GitHub Repository https://github.com/icclab/cna-seed-project

Links II Operating System: CoreOS CoreOS components: etcd, fleet Tools: confd Software in Containers: MySQL, Memcached, Apache HTTP Server, HAProxy Web-Services: docker hub, github Cloud-Software: OpenStack CRM-Software: Zurmo

Questions