federated graphite in docker - denver docker meetup

50
Containing Graphite (And Herding Cats)

Upload: phil-zimmerman

Post on 15-Jul-2015

603 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Federated Graphite in Docker - Denver Docker Meetup

Containing Graphite(And Herding Cats)

Page 2: Federated Graphite in Docker - Denver Docker Meetup

Trying to Make the World at TWC a Better Place

*Drinker of Good Beer

Phil Zimmerman*

@phil_zimmerman

Page 3: Federated Graphite in Docker - Denver Docker Meetup

Graphite: OverviewLegos and Herding CatsShow Me Some Cool Shit

Meet The Players

Page 4: Federated Graphite in Docker - Denver Docker Meetup

Registrator

Page 5: Federated Graphite in Docker - Denver Docker Meetup
Page 6: Federated Graphite in Docker - Denver Docker Meetup
Page 7: Federated Graphite in Docker - Denver Docker Meetup
Page 8: Federated Graphite in Docker - Denver Docker Meetup

A Self-Serve Interface to Your Cluster

Distributed init For Long-running Services

Page 9: Federated Graphite in Docker - Denver Docker Meetup

You Know The Company Behind Consul(Think Vagrant)

Page 10: Federated Graphite in Docker - Denver Docker Meetup

Key/Value StoreService Discovery (HTTP and DNS)

Failure DetectionMulti Datacenter

Page 11: Federated Graphite in Docker - Denver Docker Meetup

Queries Consul and Updates SpecifiedTemplates on the Filesystem

Page 12: Federated Graphite in Docker - Denver Docker Meetup

Registrator

https://github.com/gliderlabs/registrator

Auto Register/De-register Docker Containers

Page 13: Federated Graphite in Docker - Denver Docker Meetup

Graphite Overview

Page 14: Federated Graphite in Docker - Denver Docker Meetup

GraphiteCarbon-cache

WhisperGraphite Web

Carbon-relay

Page 15: Federated Graphite in Docker - Denver Docker Meetup

Carbon-cacheReceives and Writes Incoming Metrics

Caches and flushes data

2 Receiver ports, 1 Query Port

Page 16: Federated Graphite in Docker - Denver Docker Meetup

Whisper DatabaseTime-series Data

Page 17: Federated Graphite in Docker - Denver Docker Meetup

Graphite WebQueries carbon-cache

Reads whisper dataAND

Page 18: Federated Graphite in Docker - Denver Docker Meetup

Carbon-relayLoad Balances and Proxies Metrics

Can Write To Multiple carbon-caches

For High Volume of Metrics

Page 19: Federated Graphite in Docker - Denver Docker Meetup

Carbon Relay [:2003]

Metrics Metrics Metrics

Carbon Cache [:2003] [:2004] [:7002]

Whisper Data

Carbon Webapp [:80]

postgresql (dashboards)

[:5432]

Typical Single-node Setup

Page 20: Federated Graphite in Docker - Denver Docker Meetup

Does Anyone See Containers??

Page 21: Federated Graphite in Docker - Denver Docker Meetup

Master Webapp [:80]

pgsql[:5432]

Clustered Setup

Carbon Relay [:2003]

Metrics Metrics Metrics

Carbon Relay [:2003]

Carbon Relay [:2003]

Carbon Relay [:2003]

Carbon Cache [:2003] [:2004] [:7002]

Whisper Data

Carbon Cache [:2003] [:2004] [:7002]

Carbon Webapp [:80]

MemcachedMemcachedMemcached [:11211]

Carbon Relay [:2003]

Carbon Cache [:2003] [:2004] [:7002]

Whisper Data

Carbon Cache [:2003] [:2004] [:7002]

Carbon Webapp [:80]

Page 22: Federated Graphite in Docker - Denver Docker Meetup

And You Thought You Were Too Old

To Play With Legos

Page 23: Federated Graphite in Docker - Denver Docker Meetup

How Do We Orchestrate All Of This??

Page 24: Federated Graphite in Docker - Denver Docker Meetup

Without Service Discovery

Page 25: Federated Graphite in Docker - Denver Docker Meetup

Containers

Service AnnouncementService Discovery

Configuration

Page 26: Federated Graphite in Docker - Denver Docker Meetup

What We NeedWhen Containers Start/Stop, They Register/

De-register Their ServicesWhen Dependent Service Endpoints Change,

Config Files Auto-Update and Trigger Service Restart

Page 27: Federated Graphite in Docker - Denver Docker Meetup

Registrator

Page 28: Federated Graphite in Docker - Denver Docker Meetup

The Service ContainersCarbon-cache: Dockerfile

Page 29: Federated Graphite in Docker - Denver Docker Meetup

The Service ContainersCarbon-relay: Dockerfile

Page 30: Federated Graphite in Docker - Denver Docker Meetup

The Service ContainersCarbon-webapp: Dockerfile

Page 31: Federated Graphite in Docker - Denver Docker Meetup

The Service Containerspostgresql: Dockerfile

Page 32: Federated Graphite in Docker - Denver Docker Meetup

The Service Containersmemcached

Page 33: Federated Graphite in Docker - Denver Docker Meetup

The Data Volume ContainersWhisperCreate a carbon-cache container without

running the cmd (use entrypoint)

Page 34: Federated Graphite in Docker - Denver Docker Meetup

The Data Volume Containersgraphite-dbCreate a postgresql container without

running the cmd (use entrypoint)

Page 35: Federated Graphite in Docker - Denver Docker Meetup

The Data Volume Containersconsul-templateCreate a consul-template container

without running the cmd (use entrypoint)

Page 36: Federated Graphite in Docker - Denver Docker Meetup

Service Announcement/Registration

RegistratorRuns in a container Pass consul url as argument for docker run

Page 37: Federated Graphite in Docker - Denver Docker Meetup

Service Announcement/Registration

docker run -d -P -e SERVICE_5432_NAME=graphite-db

--volumes-from dashboard-data twcable/postgresql93:0.2

Start & Register postgresql

Page 38: Federated Graphite in Docker - Denver Docker Meetup

Service Discoverygraphite-master-webapplocal_settings.ctmpl (consul-template)

Page 39: Federated Graphite in Docker - Denver Docker Meetup

Service Discoverygraphite-master-webapptmpl.json - config for consul-template

Page 40: Federated Graphite in Docker - Denver Docker Meetup

Services Registered In

Consul

Page 41: Federated Graphite in Docker - Denver Docker Meetup

Great, Now How Do You Launch All of These

Containers??

Page 42: Federated Graphite in Docker - Denver Docker Meetup

Registrator

Page 43: Federated Graphite in Docker - Denver Docker Meetup

Mesos Master !

Mesos Marathon

Zookeeper

Mesos Master !

Mesos Marathon

Zookeeper

Mesos Master !

Mesos Marathon

Zookeeper

Mesos Slave !

Mesos Docker Consul

Mesos Slave !

Mesos Docker Consul

Mesos Cluster

Page 44: Federated Graphite in Docker - Denver Docker Meetup

Marathon JSON Deploy Definition

Page 45: Federated Graphite in Docker - Denver Docker Meetup
Page 46: Federated Graphite in Docker - Denver Docker Meetup

Post JSON To Running Marathon Instance

Page 47: Federated Graphite in Docker - Denver Docker Meetup
Page 48: Federated Graphite in Docker - Denver Docker Meetup
Page 49: Federated Graphite in Docker - Denver Docker Meetup

Show Me Something Cool

Page 50: Federated Graphite in Docker - Denver Docker Meetup

Helpful Linkshttp://mesos.apache.org/https://mesosphere.github.io/marathon/https://consul.io/https://github.com/hashicorp/consul-templatehttps://github.com/gliderlabs/registrator

https://grey-boundary.io/the-architecture-of-clustering-graphite/

http://philzim.com/2014/11/12/service-discovery-orchestration-with-mesos-and-consul/