mesosnetworking · mesos,slave executor,namespace root,namespace eth0 eth0 cali34 192.168.0.45...

24
Christos Kozyrakis, Spike Curtis Kapil Arya,ConnorDoyle, Niklas Nielsen,Tarak Parekh,Alex Pollitt Mesos Networking

Upload: others

Post on 04-Jul-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Christos(Kozyrakis,(Spike(CurtisKapilArya,(Connor(Doyle,(NiklasNielsen,(TarakParekh,(Alex(Pollitt

Mesos Networking

Page 2: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

The/State/of/MesosNetworking

Containers(share(the(slave’s(IP(address

Containers(can(use(any(port(on(the(slave

Service(discovery(using(perAslave(proxieslocalhost:8888(on(any(slave(redirects(to(a(specific(service

Page 3: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

This/was/OK/Initially

For(clusters(where(

– a(single(framework(manages(all(services

– there(are(only(a(few,(longArunning(services

– there(is(a(single(version(of(each(service

Page 4: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

But/it’s/Problematic/Now

For(clusters(where

– services(are(launched(by(tens(of(frameworks

– there(are(thousands(of(services(with(high(churn(

– multiple(version(of(each(service(prod/test/dev,(US/AMEA/Asia,(…(

Page 5: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Problem/#1:/Port/Conflicts

If(two(apps(want(to(use(same(port(on(a(slave,(one(fails(to(start

Alternative:(port(isolator(enforces(nonAoverlapping(port(ranges

! service(discovery(problem(for(the(app(that(does(not(get(standard(port

Alternative:(bridged(networking

! service(discovery(problem(for(the(app(behind(the(bridge

Page 6: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Problem/#2:/Service/Discovery

How(do(multiple(frameworks(manage(proxy(settings?

How(do(clients(know(which(version(of(a(service(is(at(each(port?

Do(we(update(the(proxies(in(10K(slaves(every(time(a(service(starts?

Page 7: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Problem/#3:/No/Isolation

How(do(we(stop(a(test(app(from(connecting(with(a(prod(app?(

How(we(isolate(different(users,(services,(or(divisions?(

How(do(we(stop(DoS attacks(within(the(cluster?

Page 8: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

This%makes%no%sense…

Page 9: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Mesos Networking/Redux

PerAcontainer(IP(addressesRoutable(within(and,(if(needed,(outside(the(cluster

No(port(conflicts(

DNSAbased(service(discoveryDiscovery(using(hostnames((A(&(SRV(records,(HTTP(interface)

Network(isolationBased(on(coarseAgrain(or(fineAgrain(security(policies

Page 10: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Implementation

One(feature(set,(many(pluggable(implementationsDifferent(network(virtualization(technologies((L2(or(L3)

Different(IP(address(management(schemesDifferent(DNS(servers

First(implementation(based(on(Project(CalicoL3Abased(network(virtualization(&(isolation

Simple,(scalable,(openAsource

Page 11: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)
Page 12: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

IP

Service

Router

Router

Router

BGP BGP

IP

Service

IP

Service

IP

Service

IP

Service

IP

Service

IP

Service

IP

Service

Build/the/DC/network/like/the/Internet

Page 13: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

IP

Service

Router

Router

Router

BGP BGP

IP

Service

IP

Service

IP

Service

IP

Service

IP

Service

IP

Service

IP

Service

Mesos Slave

Build/the/DC/network/like/the/Internet

Mesos Slave

Page 14: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Mesos, Slave

Executor,Namespace

Root,Namespace

eth0

eth0 cali34

192.168.0.45

10.0.0.1

Executor,Namespace

eth0 cali8910.0.0.2

Linux/Kernel/Routing

(you(already(have(this!)default(via(192.168.0.1(dev eth0(192.168.0.0/24( dev eth0((src 10.0.2.15((10.0.0.1/32(dev cali34(scope(global10.0.0.2/32(dev cali89(scope(global10.0.1.40/32(via(192.168.0.29(dev eth010.0.2.53/32(via(192.168.0.131(dev eth0

vethpair((kernel(version(2.6.24+)

Containers(on(other(slaves

IP

Calico/Data/Plane

Page 15: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Mesos, Slave

Executor,Namespace

Root,Namespace

eth0

eth0 cali34

192.168.0.45

10.0.0.1

Executor,Namespace

eth0 cali8910.0.0.2

IP

Linux/Kernel/Filtering/ (iptables)

(you(already(have(this!)

Per$container+distributed+firewall

Calico/Data/Plane

Page 16: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Mesos, Slave

Executor,Namespace

Root,Namespace

eth0

eth0 cali34

192.168.0.45

10.0.0.1

Executor,Namespace

eth0 cali8910.0.0.2

IP

Felix

RouteReflectorBGP

Client

Calico/Control/Plane

Page 17: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Mesos –Calico/Integration

Networking(isolator(

Calico(IP(address(management(– IPAM((plugAin)

Calico(network(virtualizer (plugAin)(

Master(cleanup(module(

Page 18: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Update'task'state

Networking/Workflow

PlugQin/(Calico)SlaveMasterFramework

IPAM

Network

virtualizer

Get,IP

Isolator

module

Isolate,(IP,,policy)

Cleanup

module

Launch,task,(policy) Launch,task,(policy)

Task,update, (IP)

Task,update, (IP)

Mesos module

Network(plugAin

Page 19: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

MesosQDNS

MesosMaster

Slave Slave Slave Slave Slave…

MesosDNS

� Watch(ZK(formaster(changes

� Pull(task(stateGenerate( DNS(records

� DNS(&(HTTPbased(discovery

nginx_prod.marathon.mesos ! 10.13.17.95

_nginx_prod._tcp.marathon.mesos !10.13.17.95:8181

Page 20: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Networking/Demo

Mesos cluster(with(2(slaves

Launching(4(probe(tasks

Each(probe(listens(to(port(9000(

Each(probe(tries(to(reach(all(other(probes

We(want(all(4(to(launch(successfully((no(port(conflicts)

We(want(to(isolate(them(into(two(groups(of(2(probes

Page 21: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Networking/Demo

Page 22: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Roadmap

Code(release((open(source)

Integration(with(Mesosphere(DCOS

Interfaces(for(coarseAgrain(and(fineAgrain(isolation(policies

Other(plugAin(implementations

Flexible(task(naming(in(MesosADNS

Network(QoS

Page 23: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

Summary

Mesos networking(features

PerAcontainer(IP(addresses

DNSAbased(service(discoveryNetwork(isolation

1st implementation(using(Project(Calico(

Try(it(and(contribute!

Page 24: MesosNetworking · Mesos,Slave Executor,Namespace Root,Namespace eth0 eth0 cali34 192.168.0.45 10.0.0.1 Executor,Namespace eth0 cali89 10.0.0.2 Linux/Kernel/Routing (you(already(have(this!)

References

https://mesosphere.com/

http://www.projectcalico.org/

https://github.com/mesosphere/netAmodules

https://github.com/mesosphere/mesosAdns