Scheduling a Fuller House: Container Management
Sharma Podila, Andrew Spyker - Senior Software Engineers
Scheduling a Fuller House: Container Management Sharma Podila, - - PowerPoint PPT Presentation
Scheduling a Fuller House: Container Management Sharma Podila, Andrew Spyker - Senior Software Engineers About Netflix 81.5M members 2000+ employees (1400 tech) 190+ countries > 100M hours watch per day > NA
Sharma Podila, Andrew Spyker - Senior Software Engineers
2
3
4
5
6
7
8
9
VM VM
10
Atlas
EC2 AWS AutoScaler VMs App Cloud Platform
(metrics, IPC, health) Eureka
VPC
Edda
Existing - VM’s VM VM
Atlas
EC2 Titus Job Control Containers App Cloud Platform
(metrics, IPC, health) Eureka
VPC
Edda
Titus - Containers VM VM Batch Containers
VM VM
11
EC2 AWS AutoScaler VMs App Cloud Platform
(metrics, IPC, health)
VPC Netflix Cloud Infrastructure (VM’s + Containers) VM VM
Atlas
Titus Job Control Containers App Cloud Platform
(metrics, IPC, health) Eureka Edda
VM VM Batch Containers
■ PaaS, Service discovery, IPC ■ Continuous deployment ■ Metrics
12
13
Titus UI Titus UI Docker Registry Docker Registry Rhea container container container docker Titus Agent metrics agent Titus executor logging agent zfs mesos agent docker Rhea Titus API Cassandra Titus Master Job Management & Scheduler S3 Zookeeper Docker Registry EC2 Autocaling API Mesos Master Titus UI Fenzo container Pod & VPC net drivers container container AWS container metadata proxy
Integration
CI/CD Amazon VM’s
14
15
Titus UI Titus UI Docker Registry Docker Registry Rhea container container container docker Titus Agent metrics agent Titus executor logging agent zfs mesos agent docker Rhea Titus API Cassandra Titus Master Job Management & Scheduler S3 Zookeeper Docker Registry EC2 Autocaling API Mesos Master Titus UI Fenzo container Pod & VPC net drivers container container AWS container metadata proxy CI/CD Amazon VM’s
16
M U L T I
E N A N T
17
18
○ Started with “bridge” with port mapping ○ Added “host” with port resource mapping (for performance?) ○ Continue to use “bridge” without port mapping
○ Added “nfvpc” VPC IP/container with libnetwork plugin ○ Removed Host (no value over VPC IP/container) ○ Changed “nfvpc” VPC IP/container ■ Pod based with customer executor (no plugin) ○ Added security groups to “nfvpc”
19
No IP Needed Task 0 SecGrp Y Task 1 Task 2 Task 3 docker0 (*) EC2 VM eth0 eni0
SG=Titus Agent
eth1 eni1
SecGrp=X
eth2 eni2
SG=Y IP 1 IP 2 IP 3
pod root veth<id> app SecGrp X pod root veth<id> app SecGrp X pod root veth<id> app app veth<id> Linux Policy Based Routing EC2 Metadata Proxy
169.254.169.254 IPTables NAT (*)
* * *
169.254.169.254
20
21
○ Until percent util and outliers are considered
○ Currently - hand coded cgroup scraping ○ Considering Intel Snap replacement
○ Created Edda common “server group” view
22
23
Titus UI Titus UI Docker Registry Docker Registry Rhea container container container docker Titus Agent metrics agent Titus executor logging agent zfs mesos agent docker Rhea Titus API Cassandra Titus Master Job Management & Scheduler S3 Zookeeper Docker Registry EC2 Autocaling API Mesos Master Titus UI Fenzo container Pod & VPC net drivers container container AWS container metadata proxy CI/CD Amazon VM’s
24
○ Balance instances across EC2 zones, instances within a zone
○ Two level resource for ENIs
○ Resource affinity ○ Task locality ○ Bin packing (Auto Scaling)
25
Fenzo - Extensible Scheduling Library Features:
○ Multiple instance types
○ Bin packing, etc.
○ Resource affinity, task locality, etc.
https://github.com/Netflix/Fenzo
26
Host 4 Host 3 Host 1
For long running stateful services Host 1 Host 2 Host 2 Host 3 Host 4
27
28
A two level resource per EC2 Instance: N ENIs, each with M IPs
ENI 0 Assigned Security Group: SG1 Used IPs Count: 2 of 7 ENI 1 Assigned Security Group: SG1,SG2 Used IPs Count: 1 of 7 ENI 2 Assigned Security Group: SG3 Used IPs Count: 7 of 7
29
30
Task scheduling concerns
○ Bin packing ○ Global constraints, like SLAs
○ Locality with other tasks ○ Resource affinity
Job manager concerns
○ Replace failed task executions
○ Rate limit requeuing & relaunching ○ Time out tasks in transitionary states
31
○ Latencies for services ○ Throughput for batch ○ Task preemptions
○ Chaos, continuous delivery, performance insight
○ Logging (live log access & S3 log rotation) ○ Liveness and health checking ○ Isolation (disk usage, networking, block I/O) ○ Image registry (metrics, security scanning)
○ Autoscaling heterogeneous pools ○ Host-task fitness criteria
○ Extensibility, polymorphic, SLA and job/container ownership
32
33
34
35
36
37
38
39
Title Time Speaker(s)
The Netflix API Platform for Server-Side Scripting Monday 10:35 Katharina Probst Scheduling A Fuller House: Container Mgmt @ Netflix Tuesday 10:35 Andrew Spyker & Sharma Podila Chaos Kong - Endowing Netflix with Antifragility Tuesday 11:50 Luke Kosewski The Evolution of the JavaScript Wednesday 4:10 Jafar Husain Async Programming in JS: The End of the Loop Friday 9:00 Jafar Husain