phoenix servers with docker and nginx

35
Phoenix Servers with docker by Nils de moor - @ndemoor PHPBenelux March Meetup

Upload: nils-de-moor

Post on 11-May-2015

526 views

Category:

Technology


3 download

DESCRIPTION

In this presentation we define the concept of Phoenix Servers, coined by Martin Fowler, and introduce Docker as a tool to achieve this idea.

TRANSCRIPT

Page 1: Phoenix Servers with Docker and Nginx

Phoenix Serverswith docker

by Nils de moor - @ndemoor

PHPBenelux March Meetup

Page 2: Phoenix Servers with Docker and Nginx

Hello! I’m Nils De MoorCTO & cofounder at WooRank#mongo #ansible #aws #devops #dockerThat’s me!

Page 3: Phoenix Servers with Docker and Nginx

CLEAN SERVER

INSTALLCONFIG MGMT

AGENT(CHEF, PUPPET,

ANSIBLE, bash...)

COMPOSE SCRIPTS

& RUN AGENT

SERVER in

desired STATE

Change versionEdit config fileAdd/remove libraryCreate folder/link/.......

Script, Configure, Run, Repeat...

Page 4: Phoenix Servers with Docker and Nginx

PUSH CODE RUN TESTs BUILD

Push, Test, Build, Repeat...

Page 5: Phoenix Servers with Docker and Nginx

CLEAN SERVER

INSTALLCONFIG MGMT

AGENT(CHEF, PUPPET,

ANSIBLE, bash...)

COMPOSE SCRIPTS

& RUN AGENT

SERVER in

desired STATE

PUSH CODE RUN TESTs BUILD

Deploy!

Page 6: Phoenix Servers with Docker and Nginx

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATESERVER

in desired STATE

Development Test Production

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER in

desired STATE

SERVER

desired STATE

SERVER

desired STATEdesired STATEdesired STATE

Page 7: Phoenix Servers with Docker and Nginx
Page 8: Phoenix Servers with Docker and Nginx

A LIBRARY NEEDS TO BE DELETED

A library needs to be removed... entirely

Page 9: Phoenix Servers with Docker and Nginx

The config server goes down

Page 10: Phoenix Servers with Docker and Nginx

Package managers are unavailable

Page 11: Phoenix Servers with Docker and Nginx

System updates are “available”

Page 12: Phoenix Servers with Docker and Nginx

What if all of this happens...

Page 13: Phoenix Servers with Docker and Nginx

What if all of this happens...

...in production

Page 14: Phoenix Servers with Docker and Nginx

What if all of this happens...

...in production

...while scaling up for a traffic spike

Page 15: Phoenix Servers with Docker and Nginx

TEXT 1

TEXT 2Idempotence broken!

Page 16: Phoenix Servers with Docker and Nginx

“THE RESULT IS A UNIQUE SNOWFLAKE. GOOD FOR A SKI RESORT,

BAD FOR A DATA CENTER.”Martin Fowler

Page 17: Phoenix Servers with Docker and Nginx

“A SERVER SHOULD BE LIKE A PHOENIX, REGULARLY RISING FROM THE ASHES.”

Martin Fowler

Page 18: Phoenix Servers with Docker and Nginx
Page 19: Phoenix Servers with Docker and Nginx
Page 20: Phoenix Servers with Docker and Nginx

IsolationPortabilityCompatibilityAutomationSpeed

“Ship anything... anywhere”

Page 21: Phoenix Servers with Docker and Nginx

• LXC Containers• “Chroot on steroids”

• AUFS• layered view on merged directories• copy-on-write

What and how?

Page 22: Phoenix Servers with Docker and Nginx
Page 23: Phoenix Servers with Docker and Nginx

git clone https://github.com/ndemoor/phpbnl-demo

Page 24: Phoenix Servers with Docker and Nginx

# Dockerfile: memcached

FROM ubuntu

# make sure the package repository is up to dateRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get update

# install memcachedRUN apt-get install -y memcached

# run as user daemon (memcached doesn't allow to run as root)USER daemon

# expose memcached portEXPOSE 11211

# Launch memcached when launching the container# CMD [ "memcached" ]ENTRYPOINT ["memcached"]

Page 25: Phoenix Servers with Docker and Nginx

# Dockerfile: nginx and php

FROM ubuntu

# make sure the package repository is up to dateRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get update

# install php and nginxRUN apt-get install php5-common php5-cli php5-fpm php5-memcache php5-mcrypt nginx

RUN echo "cgi.fix_pathinfo = 0;" >> /etc/php5/fpm/php.iniRUN echo "daemon off;" >> /etc/nginx/nginx.conf

EXPOSE 80

Page 26: Phoenix Servers with Docker and Nginx

0.1

App

Page 27: Phoenix Servers with Docker and Nginx

# Pseudo-Dockerfile: app

FROM mynamespace/nginx-php

MAINTAINER myself

ADD . /var/wwwRUN cd /var/www && install

WORKDIR /var/www

EXPOSE 80

CMD [ "./start.sh" ]

Page 28: Phoenix Servers with Docker and Nginx
Page 29: Phoenix Servers with Docker and Nginx

0.1

0.2

?

App

App

Page 30: Phoenix Servers with Docker and Nginx

0.1

0.2

App

App

Page 31: Phoenix Servers with Docker and Nginx

0.1

0.2

App

App

Page 32: Phoenix Servers with Docker and Nginx

• Deis - deployment and orchestration• Dokku - deployment• Fig - deployment• Flynn - deployment and orchestration • Shipyard - monitoring

Community

Page 33: Phoenix Servers with Docker and Nginx

Thank

YOU!

Page 34: Phoenix Servers with Docker and Nginx

Thank

YOU!

Psst... we’re hiring

Page 35: Phoenix Servers with Docker and Nginx

http://docs.docker.io

http://morethanadventure.com/wp-content/uploads/2013/12/What_if.jpg

http://1.bp.blogspot.com/-YPJ77li2P3o/T1O5y29ZO-I/AAAAAAAAFOo/tqRMI68FBns/s1600/Prof+Macksey%5B2%5D.jpg

http://www.pingzine.com/wp-content/uploads/2012/05/serverdown.jpg

http://www.abels.co.uk/wp-content/themes/abels/images/uploads/Storage/various%20005%20(2).jpg

http://www.murphyslawnyc.com/wp-content/themes/000edupress/images/logo.png

http://clipartist.info/clipart/xmas/snow/snowflake_stylized_XXL.png

http://www.dimensionsinfo.com/wp-content/uploads/2010/03/Freight-Container-sizes.jpg

http://www.swarthmore.edu/Images/administration/thephoenix/phoenix_logo_2color.gif

http://labourlist.org/wp-content/uploads/2011/11/broken-chain.jpg

Photo Credit