1
Sagi Brody, CTO
@WebairSagi
sagi@webair.com
sagi@webair.com
sagi@webair.com
Why Managed Service Providers Should Embrace
Container Technology
2
What’s a Managed Service Provider Anyways?
• Outsourced DevOps
• Not many folks doing it
• Difficult to scale
3
Why do folks use MSPs/CSPs?
• Small IT teams who’d rather focus on AppDev
• Common in non-tech industries who prefer to outsource
• Cost
• Liability & Responsibility
• Unicorns are hard to find
• MSP != IaaS
• Not just for web
• Ride the wave of new technologies
4
What’s it look like?
LAMP at scale, redis,
memcache, nginx..
LAMP at scale, redis,
memcache, nginx..
Linux, FreeBSD, Agents/AutomationLinux, FreeBSD, Agents/Automation
HAProxy + keepalived, nginx, csyncHAProxy + keepalived, nginx, csync
MikroTik, PaloAlto, JuniperMikroTik, PaloAlto, Juniper
FlowSpec, SDN hooksFlowSpec, SDN hooks
L7 mitigation + automated /24 swingsL7 mitigation + automated /24 swings
Redirects to CDN in App or via HTTP rewriteRedirects to CDN in App or via HTTP rewrite
Applicatio
n
Serve
r
Load
Balancers
Firewal
l
Networ
k
DDo
S
CDN/Proxie
s
BareMetal, VM (Hybrid SAN, Flash,Xen/Vmware), or IaaS
Infrastructur
e
5
Full Stack Management - how?
• Need standardized platform, yet customizable as required
• Client/Staff web portals to automate common tasks
• Templated OS deployments w/ management scripts/monitoring
• OSS/BSS + SPOT
• FreeBSD - C daemon w/ SSL transport + custom API
• Linux - Ansible - Py scripts
• SPOT injects into 3rd party services
• Custom layered monitoring
• Docs/Diagrams
• Social Monitoring
• TaaS
LinuxLinux
ServiceService
SSL
SSH
App routerApp router
CLI
Scripts
CLI
Scripts
PortalPortal
AppsApps
OSSOSS
MonitoringMonitoring
FbsdFbsd
6
Full Stack Management - how?
usage: manageserver mysql [-h] [-v] [-a <newdbname> <newuser> <newpassword>]
[-d <newdbname>] [--remove-db <dbname>] [-l]
[-u <dbname> <newuser> <newpassword>]
[--remove-user <username>] [--list-user]
[-e <dest-file> [<dbname> ...]] [--list-backup]
[-b {on,off,status,run,restore}] [-c]
[-f <filepath>] [-r <root password>]
optional arguments:
-h, --help show this help message and exit
-v, --verbose set verbosity level
-a <newdbname> <newuser> <newpassword>, --add <newdbname> <newuser> <newpassword>
Add a MySQL db and a user with all privileges on that
db
-d <newdbname>, --add-db <newdbname>
Add a MySQL db
--remove-db <dbname> Delete MySQL db
-l, --list-db List all MySQL databases
-u <dbname> <newuser> <newpassword>, --add-user <dbname> <newuser> <newpassword>
Add a new MySQL user with all privileges on an
existing db
--remove-user <username>
Delete MySQL user from all hosts
--list-user List all MySQL users
-e <dest-file> [<dbname> ...], --export <dest-file> [<dbname> ...]
Dump DB to file. use .gz/.bz2 in file name to
compress. blank dbname to dump all DBs.
--list-backup List all MySQL backups
-b {on,off,status,run,restore}, --backup {on,off,status,run,restore}
Check status/run/restore and turn on/off Mysql Backups
cron job
-c, --cleanup Optional argument used with '--backup run' to remove
backups older than 5 days
-f <filepath>, --file <filepath>
Argument used with '--backup restore' to pass the
.tar.gz backup file path
-r <root password>, --root <root password>
Optional argument used with Mysql related commands to
pass the root password
7
MSP Pain Points
• Guilty until proven innocent
• Not always involved or notified of code updates and
changes
• Not aware of 3rd party integrations
• Legacy apps (“bring us your tired your poor..”)
• Backup/Restore
• Application security
• Not involved in design
• Multi-tenancy systems (vendor nightmare)
• Per client customization
• Keeping OS/Software current
Containers to the rescue?
8
Containerizing Multi-Tenant Shared Infrastructure
Usage: lbmanager <LB_ID> OPTIONS
<LB_ID> A friendly name for identification.
OPTIONS Consists of one or more of the following switchs.
Each switch could be repeated as many times as needed.
-v <IP> Add the IP to the VIPs (Will not serve untill at least 1 VIP exist)
-V <IP> Remove the IP from the VIPs (Will stop serving if there isn't any VIP)
-r <IP> Add the IP to the RIPs
-R <IP> Remove the IP from the RIPs
-p <PORT> Add the PORT to the listening ports (Will not serve until at least 1 port exist)
-P <PORT> Remove the PORT from the listening ports (Will stop serving if there isn't any port)
-u <USER> User name for the stats section (Default:lbstats)
-s <PASS> Password for the stats section ( Default: md5(<LB_ID>-<shared_secret>) )
-1 Make the LB_ID active on 1st LB and standby on 2nd LB (Default)
-2 Make the LB_ID active on 2nd LB and standby on 1st LB
-c Add comment to a LB_ID (Enclose in "")
-e Enable LB_ID. HAProxy will start to serving LB_ID
-d Disable LB_ID. HAProxy will stop to serving LB_ID
-o Enable SSL offloading with the certificates in the /etc/haproxy/lb_sets/LB_ID/certs/ directory
-X Destroy & Backup the LB_ID
-L Locks the LB_ID against further modifications.DON'T USE WITH OTHER OPTIONS, they will be ignored
-O Disable SSL offloading
-U Reset client stats username to default one (Default:lbstats)
-S Reset client stats password to default hash with shared secret ( md5(<LB_ID>-<shared_secret>) )
-b <METHOD> Balancing method on the backend servers, is one of:
leastconn Sends requests to the server with least connections (Default)
roundrobin
static-rr
first
source
rdp-cookie
NOTE: When satisfied with all the changes run "lbmanager reload" to make the changes live.
LB Service: Ansible, CentOS, HAProxy, keepalived, csync, git, automation
interface
9
Containerizing Multi-Tenant Shared Infrastructure
LB Service: Ansible, CentOS, HAProxy, keepalived, csync, git, automation
interface
Issues:
• Multiple customer configs merged into master file
• Resources shared across customers
• Limit of customization per customer forces standalones
• Standalones can add up quickly, also need HA
• Manual configuration rollbacks
• Version control of deployed app
Containerize:
• Container per customer deployment
• Customization w/o standing up additional resources
• Finer resource monitoring per customer == potential for new
chargeback methods
• Create ELB like service using stateless containers + autoscale
scheduler (Exhibitor+Zookeeper)
10
Containerizing Multi-Tenant Shared Infrastructure
Shared Hosting Environments
# ls -al
total 10
drwx--x--x 4 clifico-www clifico 512 Aug 8 2008 .
drwx--x--x 88 root wheel 3584 Jul 30 13:09 ..
lrwxr-xr-x 1 root wheel 15 Aug 8 2008 bin -> /www/apache/bin
drwxr-xr-x 3 root wheel 512 Aug 19 00:07 conf
lrwxr-xr-x 1 root wheel 17 Aug 8 2008 icons -> /www/apache/icons
lrwxr-xr-x 1 root wheel 19 Aug 8 2008 libexec -> /www/apache/libexec
drwxr-xr-x 2 clifico-www clifico 512 Aug 19 00:05 logs
lrwxr-xr-x 1 root wheel 19 Aug 8 2008 modules -> /www/apache/modules
zsmgcontrol-www 47227 0.0 0.0 54096 0 ?? IW - 0:00.00 /www/vapache/smgcontrol/bin/httpd -f /www/vapache/smgcontrol/conf/httpd.conf -DPHP5
revsinn 49687 0.0 0.8 82332 34604 ?? I 2:13AM 0:01.13 /www/vapache/revsinn/bin/httpd -f /www/vapache/revsinn/conf/httpd.conf -DPHP5
laphta-www 51439 0.0 0.2 55944 6352 ?? I 2:14AM 0:02.20 /www/vapache/laphta/bin/httpd -f /www/vapache/laphta/conf/httpd.conf -DPHP5
laphta-www 53163 0.0 0.8 79604 33180 ?? I 2:15AM 0:02.53 /www/vapache/laphta/bin/httpd -f /www/vapache/laphta/conf/httpd.conf -DPHP5
msdivamarie 54375 0.0 0.7 75108 29032 ?? I 2:15AM 0:02.63 /www/vapache/msdivamarie/bin/httpd -f /www/vapache/msdivamarie/conf/httpd.conf -DPHP5
woodswe-www 55193 0.0 0.0 75588 0 ?? IW - 0:00.00 /www/vapache/woodswe/bin/httpd -f /www/vapache/woodswe/conf/httpd.conf -DPHP5
frenchelite-www 55280 0.0 1.1 90392 44660 ?? I 2:16AM 0:00.73 /www/vapache/frenchelite/bin/httpd -f /www/vapache/frenchelite/conf/httpd.conf -DPHP5
woodswe-www 55289 0.0 0.0 75588 0 ?? IW - 0:00.00 /www/vapache/woodswe/bin/httpd -f /www/vapache/woodswe/conf/httpd.conf -DPHP5
woodswe-www 55290 0.0 0.0 75588 0 ?? IW - 0:00.00 /www/vapache/woodswe/bin/httpd -f /www/vapache/woodswe/conf/httpd.conf -DPHP5
apachectl..
if [ "x$user" = "x-" ]; then
user=$(/usr/bin/find /www/vapache -maxdepth 1 -mindepth 1 -type d
| xargs -n 1 basename)
split=`expr $(echo $user | wc -w) / 4`
fi
for i in $user ; do
apacheinit $i
if [ $? -eq 1 ]; then
echo "WARNING: No such user $i"
continue
fi
• Custom apachectl + supporting scripts
• Separate apache instance per user
• ‘jail like’ separation via perms + ps mod
• Scripts to standup/destroy new customer
environments
11
Containerizing Multi-Tenant Shared Infrastructure
Shared Hosting Environments:
Issues:
• No per user resource limits, only application
• No dependency separation
• 0day local root exploits
• Difficult to move users
Containerize:
• Don’t deploy user accounts, deploy applications
• Cloudapps == deploy small Xen instance + application specific template
• Already being done well in containers, tons of OSS in dockerhub
• Easier to manage hosts
• Potential for better security than user land
12
OS & Software Updates
• Common issue among MSPs
• We upgrade based on Stability, Security, Feature requests, and
opportunistically
• Feature requests most common (latest ffmpeg..)
• Manual updates for older OS versions
• Who knows if something broke post update?
• Safer for us to standup new VMs and move workloads, but time
consuming
New functionality:
• CoreOS FastPatch
• Atomic rpm-ostree
• RancherOS - per service container rollbacks
• Why upgrade the OS if you can redeploy workload onto
already upgraded host
13
Platform Customization
Issues:
• Standardized platforms handle 80-90% of common use cases..
• More Flexibility needed - as close to internal DevOps teams as possible (our
heroes)
• Automation exists today, but still deploying VMs to solve problems
• VMs deployed ‘at will’ based on templates or snapshots
• Difficult to keep up w/ various tweaks & changes
• Many multi-purpose VMs exist (web/db/cdn-origin/memcache)
Containerize:
• docker-compose customer’s environment
• Less time to update update compose file then alternative work
• Auto-scale
• Already using abstracted LB & shared storage for configs and data
• Unionfs no longer the only storage option
• RDS type services already exist on perm
14
SaaS Platform Segmentation & Scale
• SaaS platforms with X customers, each with their own VH
directive, subdir, or subdomain
• Each customer gets their own container
• App can identify customer baed on URL string or HOST
• Allows per customer changes without affecting others
• Fork and customize codebase per customer
• Easier to align multiple platform flavors per
customer/container
• Adding container monitoring (sysdig, prometheus) allows
instant resource utilization per platform customer - quickly
find noisy neighbors and ability to up charge for resources
• Single customer load spikes may not affect other
customers
• Shard customer across zones/regions
15
Site Segmentation
• Typical to see single servers or clusters with 50-5,000 micro sites
on same Apache/nginx daemons
• Hard to track intermittent slowness or downtime
• Poor security - 1 Hacked site has potential to effect entire
cluster/server
• Containerize each site:
• Decoupling app from code makes break/fix easier for MSP to fix
or redeploy
• Per site resource utilization
• Secure
16
Pipeline
• Rollbacks very difficult today on customer + MSP
• Most development happens offsite
• MSP should help in CI/CD pipeline building process and provide
dev resources
• Build new pipelines on-demand to help customers w/ various
workflows
• Free up existing enterprise test resources so multiple devs can
test concurrently and w/o interference
Pipeline:
17
VPCC & PPCC
• Virtual Private Container Clouds & Physical Private Container
Clouds
• Hybrid - containers, private clouds, bare metal, xconnects
• Proven & trusted enterprise feature sets: high availability,
distributed resource schedulers, multi-tenant segmentation, DraaS,
redundant networking, enterprise support
• Private repositories
• Isolated for compliance (PCI, HIPAA)
• Existing stable and easy to use workload portability platforms and
hyper-converged infrastructure
• Overlay networks for interconnects
• Not CaaS
18
VPCC & PPCC
CoreOS, Fleet, etcd, cloud-init, weave,
cAdvisor
19
Ecosystem software
• Tectonic (by CoreOS) - Enterprise support - Kubernetes, etcd,
flannel, docker/rkt, coreOS, beautiful GUI, A/B updates
• Atomic (RedHat) - Enterprise support, subscription-manager, A/B
updates, use any fedora based distro, Selinux
• DockerSwarm
• RancherOS - Lightweight, containerizes all system processes, A/B
updates, simple rollback
• Triton - Abstracted single docker host across clustered
compute/network environment
• Vmware Photon,Snappy Ubuntu Core, Mesosphere DCOS
• Match Ecosystem to use case, workloads and skills
20
Internal
• Convert to micro-services based architecture for internal use
cases (like us..)
• Development of services spread across teams and infrastructures
• Better customer provisioning and segmentation on shared resource
platforms such as load balancers, mail servers, elasticsearch
• Standup training environments
• “Drink your own Kool-Aid”
• Ability to help customers containerize Apps as a value add
21
Where we started…
• Started w/ BareMetal (wasteful)
• 2007 -VMs in production (20-50 per
host)
• Hit Storage Bottleneck
• Storage Innovation
• Hit Network bottleneck
• Network Innovation
• Containers -> Full circle
• Cycle will continue….
22
THANK YOU!
Sagi Brody, CTO
@WebairSagi
sagi@webair.com

More Related Content

PDF
Multi-Layer DDoS Mitigation Strategies
PDF
How To Set Up SQL Load Balancing with HAProxy - Slides
PDF
Load Balancing MySQL with HAProxy - Slides
PDF
RIPE 71 and IETF 94 reports webinar
PDF
Building your own CDN using Amazon EC2
PDF
Kea DHCP – the new open source DHCP server from ISC
PPTX
Usenix LISA 2012 - Choosing a Proxy
PDF
Route Origin Validation - A MANRS Approach
Multi-Layer DDoS Mitigation Strategies
How To Set Up SQL Load Balancing with HAProxy - Slides
Load Balancing MySQL with HAProxy - Slides
RIPE 71 and IETF 94 reports webinar
Building your own CDN using Amazon EC2
Kea DHCP – the new open source DHCP server from ISC
Usenix LISA 2012 - Choosing a Proxy
Route Origin Validation - A MANRS Approach

What's hot (20)

PPTX
Multi-Layer DDoS Mitigation Strategies
ODP
HAProxy scale out using open source
PDF
Windows Server 2016 Webinar
PDF
Yeti DNS - Experimenting at the root
PPTX
Delivering High Performance Websites with NGINX
PPTX
Introduction to Haproxy
PPTX
Using HAProxy to Scale MySQL
PDF
HA Deployment Architecture with HAProxy and Keepalived
PPTX
High Availability Content Caching with NGINX
PPTX
NGINX: High Performance Load Balancing
PDF
How to monitor NGINX
PDF
Varnish SSL / TLS
PPTX
5 things you didn't know nginx could do
PPTX
Choosing A Proxy Server - Apachecon 2014
PDF
DNSTap Webinar
PDF
DDoS Attacks - Scenery, Evolution and Mitigation
PDF
BIND 9 logging best practices
PPTX
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
PPTX
Installation Openstack Swift
PDF
Alfresco Security Best Practices 2012
Multi-Layer DDoS Mitigation Strategies
HAProxy scale out using open source
Windows Server 2016 Webinar
Yeti DNS - Experimenting at the root
Delivering High Performance Websites with NGINX
Introduction to Haproxy
Using HAProxy to Scale MySQL
HA Deployment Architecture with HAProxy and Keepalived
High Availability Content Caching with NGINX
NGINX: High Performance Load Balancing
How to monitor NGINX
Varnish SSL / TLS
5 things you didn't know nginx could do
Choosing A Proxy Server - Apachecon 2014
DNSTap Webinar
DDoS Attacks - Scenery, Evolution and Mitigation
BIND 9 logging best practices
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
Installation Openstack Swift
Alfresco Security Best Practices 2012
Ad

Viewers also liked (19)

PDF
TroubleShooting as a Service
PDF
Managing Remote Operation Teams
PDF
Ecs300usercenter
PPTX
Under Lake Norman: Crowdsourcing at th Davidson College Archives
PPTX
ปัญหาด้านสิ่งแวดล้อมในอาเซียน
PDF
Realistic Background That Is Legal Goods Simplified
PDF
Novatti International Remittance brochure
PPTX
Website development by goigi
PDF
TEDxNiamiha - партнерство
DOCX
Module For Mathematics
PPTX
Art bank presentation-cards
PDF
An axisymmetric bending analysis of functionally
PDF
Clarena - view of the company
PPTX
Mobile application development by goigi
PDF
Forest type mapping of bidar forest division, karnataka
PDF
Allscripts Work
PDF
Sambhav Gems Ltd - Company Profile
PPTX
Word Weavers 10th Anniversary
PDF
DEEPU KUMAR CV
TroubleShooting as a Service
Managing Remote Operation Teams
Ecs300usercenter
Under Lake Norman: Crowdsourcing at th Davidson College Archives
ปัญหาด้านสิ่งแวดล้อมในอาเซียน
Realistic Background That Is Legal Goods Simplified
Novatti International Remittance brochure
Website development by goigi
TEDxNiamiha - партнерство
Module For Mathematics
Art bank presentation-cards
An axisymmetric bending analysis of functionally
Clarena - view of the company
Mobile application development by goigi
Forest type mapping of bidar forest division, karnataka
Allscripts Work
Sambhav Gems Ltd - Company Profile
Word Weavers 10th Anniversary
DEEPU KUMAR CV
Ad

Similar to Why Managed Service Providers Should Embrace Container Technology (20)

PDF
Islands: Puppet at Bulletproof Networks
PDF
PaaSTA: Autoscaling at Yelp
PDF
Linux Desktop Automation
PDF
Bare Metal to OpenStack with Razor and Chef
PDF
Docker and friends at Linux Days 2014 in Prague
PDF
Dockers zero to hero
PDF
Integrating Apple Macs Using Novell Technologies
PPT
Linux containers and docker
PPTX
Best And Worst Practices Deploying IBM Connections
PDF
#WeSpeakLinux Session
PPTX
Docker - Demo on PHP Application deployment
PDF
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
KEY
Apache Wizardry - Ohio Linux 2011
PDF
PostgreSQL : Introduction
PDF
24HOP Introduction to Linux for SQL Server DBAs
ODP
PDF
Containers with systemd-nspawn
PDF
PaaSTA: Running applications at Yelp
PDF
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
PDF
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Islands: Puppet at Bulletproof Networks
PaaSTA: Autoscaling at Yelp
Linux Desktop Automation
Bare Metal to OpenStack with Razor and Chef
Docker and friends at Linux Days 2014 in Prague
Dockers zero to hero
Integrating Apple Macs Using Novell Technologies
Linux containers and docker
Best And Worst Practices Deploying IBM Connections
#WeSpeakLinux Session
Docker - Demo on PHP Application deployment
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
Apache Wizardry - Ohio Linux 2011
PostgreSQL : Introduction
24HOP Introduction to Linux for SQL Server DBAs
Containers with systemd-nspawn
PaaSTA: Running applications at Yelp
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...

More from Sagi Brody (7)

PPTX
Ransomware-Recovery-as-a-Service
PPTX
Combating Cyberattacks through Network Agility and Automation
PDF
Ransomware: The Defendable Epidemic
PDF
Automated Ransomware Recovery for Full Cyber Protection
PDF
Enabling Limitless Connectivity, Opportunity and Growth with Interconnection ...
PDF
Pulling Back the Cloud Curtain
PPT
Troubleshooting: A High-Value Asset For The Service-Provider Discipline
Ransomware-Recovery-as-a-Service
Combating Cyberattacks through Network Agility and Automation
Ransomware: The Defendable Epidemic
Automated Ransomware Recovery for Full Cyber Protection
Enabling Limitless Connectivity, Opportunity and Growth with Interconnection ...
Pulling Back the Cloud Curtain
Troubleshooting: A High-Value Asset For The Service-Provider Discipline

Recently uploaded (20)

DOCX
Powerful Ways AIRCONNECT INFOSYSTEMS Pvt Ltd Enhances IT Infrastructure in In...
PPTX
IT-Human Computer Interaction Report.pptx
PPTX
Artificial_Intelligence_Basics use in our daily life
PDF
Buy Cash App Verified Accounts Instantly – Secure Crypto Deal.pdf
PDF
Alethe Consulting Corporate Profile and Solution Aproach
PDF
Top 8 Trusted Sources to Buy Verified Cash App Accounts.pdf
PPTX
Introduction to networking local area networking
PPTX
curriculumandpedagogyinearlychildhoodcurriculum-171021103104 - Copy.pptx
PPTX
Basic understanding of cloud computing one need
PPTX
Basic_of_Computer_System.pptx class-8 com
PPTX
Viva Digitally Software-Defined Wide Area Network.pptx
PDF
Lean-Manufacturing-Tools-Techniques-and-How-To-Use-Them.pdf
PPT
12 Things That Make People Trust a Website Instantly
PDF
Computer Networking, Internet, Casting in Network
PDF
Alethe Consulting Corporate Profile and Solution Aproach
PPTX
Digital Project Mastery using Autodesk Docs Workshops
PDF
ilide.info-huawei-odn-solution-introduction-pdf-pr_a17152ead66ea2617ffbd01e8c...
PDF
How Technology Shapes Our Information Age
PDF
healthwealthtech4all-blogspot-com-2025-08-top-5-tech-innovations-that-will-ht...
PDF
JuanConnect E-Wallet Guide for new users.pdf
Powerful Ways AIRCONNECT INFOSYSTEMS Pvt Ltd Enhances IT Infrastructure in In...
IT-Human Computer Interaction Report.pptx
Artificial_Intelligence_Basics use in our daily life
Buy Cash App Verified Accounts Instantly – Secure Crypto Deal.pdf
Alethe Consulting Corporate Profile and Solution Aproach
Top 8 Trusted Sources to Buy Verified Cash App Accounts.pdf
Introduction to networking local area networking
curriculumandpedagogyinearlychildhoodcurriculum-171021103104 - Copy.pptx
Basic understanding of cloud computing one need
Basic_of_Computer_System.pptx class-8 com
Viva Digitally Software-Defined Wide Area Network.pptx
Lean-Manufacturing-Tools-Techniques-and-How-To-Use-Them.pdf
12 Things That Make People Trust a Website Instantly
Computer Networking, Internet, Casting in Network
Alethe Consulting Corporate Profile and Solution Aproach
Digital Project Mastery using Autodesk Docs Workshops
ilide.info-huawei-odn-solution-introduction-pdf-pr_a17152ead66ea2617ffbd01e8c...
How Technology Shapes Our Information Age
healthwealthtech4all-blogspot-com-2025-08-top-5-tech-innovations-that-will-ht...
JuanConnect E-Wallet Guide for new users.pdf

Why Managed Service Providers Should Embrace Container Technology

  • 1. 1 Sagi Brody, CTO @WebairSagi [email protected] [email protected] [email protected] Why Managed Service Providers Should Embrace Container Technology
  • 2. 2 What’s a Managed Service Provider Anyways? • Outsourced DevOps • Not many folks doing it • Difficult to scale
  • 3. 3 Why do folks use MSPs/CSPs? • Small IT teams who’d rather focus on AppDev • Common in non-tech industries who prefer to outsource • Cost • Liability & Responsibility • Unicorns are hard to find • MSP != IaaS • Not just for web • Ride the wave of new technologies
  • 4. 4 What’s it look like? LAMP at scale, redis, memcache, nginx.. LAMP at scale, redis, memcache, nginx.. Linux, FreeBSD, Agents/AutomationLinux, FreeBSD, Agents/Automation HAProxy + keepalived, nginx, csyncHAProxy + keepalived, nginx, csync MikroTik, PaloAlto, JuniperMikroTik, PaloAlto, Juniper FlowSpec, SDN hooksFlowSpec, SDN hooks L7 mitigation + automated /24 swingsL7 mitigation + automated /24 swings Redirects to CDN in App or via HTTP rewriteRedirects to CDN in App or via HTTP rewrite Applicatio n Serve r Load Balancers Firewal l Networ k DDo S CDN/Proxie s BareMetal, VM (Hybrid SAN, Flash,Xen/Vmware), or IaaS Infrastructur e
  • 5. 5 Full Stack Management - how? • Need standardized platform, yet customizable as required • Client/Staff web portals to automate common tasks • Templated OS deployments w/ management scripts/monitoring • OSS/BSS + SPOT • FreeBSD - C daemon w/ SSL transport + custom API • Linux - Ansible - Py scripts • SPOT injects into 3rd party services • Custom layered monitoring • Docs/Diagrams • Social Monitoring • TaaS LinuxLinux ServiceService SSL SSH App routerApp router CLI Scripts CLI Scripts PortalPortal AppsApps OSSOSS MonitoringMonitoring FbsdFbsd
  • 6. 6 Full Stack Management - how? usage: manageserver mysql [-h] [-v] [-a <newdbname> <newuser> <newpassword>] [-d <newdbname>] [--remove-db <dbname>] [-l] [-u <dbname> <newuser> <newpassword>] [--remove-user <username>] [--list-user] [-e <dest-file> [<dbname> ...]] [--list-backup] [-b {on,off,status,run,restore}] [-c] [-f <filepath>] [-r <root password>] optional arguments: -h, --help show this help message and exit -v, --verbose set verbosity level -a <newdbname> <newuser> <newpassword>, --add <newdbname> <newuser> <newpassword> Add a MySQL db and a user with all privileges on that db -d <newdbname>, --add-db <newdbname> Add a MySQL db --remove-db <dbname> Delete MySQL db -l, --list-db List all MySQL databases -u <dbname> <newuser> <newpassword>, --add-user <dbname> <newuser> <newpassword> Add a new MySQL user with all privileges on an existing db --remove-user <username> Delete MySQL user from all hosts --list-user List all MySQL users -e <dest-file> [<dbname> ...], --export <dest-file> [<dbname> ...] Dump DB to file. use .gz/.bz2 in file name to compress. blank dbname to dump all DBs. --list-backup List all MySQL backups -b {on,off,status,run,restore}, --backup {on,off,status,run,restore} Check status/run/restore and turn on/off Mysql Backups cron job -c, --cleanup Optional argument used with '--backup run' to remove backups older than 5 days -f <filepath>, --file <filepath> Argument used with '--backup restore' to pass the .tar.gz backup file path -r <root password>, --root <root password> Optional argument used with Mysql related commands to pass the root password
  • 7. 7 MSP Pain Points • Guilty until proven innocent • Not always involved or notified of code updates and changes • Not aware of 3rd party integrations • Legacy apps (“bring us your tired your poor..”) • Backup/Restore • Application security • Not involved in design • Multi-tenancy systems (vendor nightmare) • Per client customization • Keeping OS/Software current Containers to the rescue?
  • 8. 8 Containerizing Multi-Tenant Shared Infrastructure Usage: lbmanager <LB_ID> OPTIONS <LB_ID> A friendly name for identification. OPTIONS Consists of one or more of the following switchs. Each switch could be repeated as many times as needed. -v <IP> Add the IP to the VIPs (Will not serve untill at least 1 VIP exist) -V <IP> Remove the IP from the VIPs (Will stop serving if there isn't any VIP) -r <IP> Add the IP to the RIPs -R <IP> Remove the IP from the RIPs -p <PORT> Add the PORT to the listening ports (Will not serve until at least 1 port exist) -P <PORT> Remove the PORT from the listening ports (Will stop serving if there isn't any port) -u <USER> User name for the stats section (Default:lbstats) -s <PASS> Password for the stats section ( Default: md5(<LB_ID>-<shared_secret>) ) -1 Make the LB_ID active on 1st LB and standby on 2nd LB (Default) -2 Make the LB_ID active on 2nd LB and standby on 1st LB -c Add comment to a LB_ID (Enclose in "") -e Enable LB_ID. HAProxy will start to serving LB_ID -d Disable LB_ID. HAProxy will stop to serving LB_ID -o Enable SSL offloading with the certificates in the /etc/haproxy/lb_sets/LB_ID/certs/ directory -X Destroy & Backup the LB_ID -L Locks the LB_ID against further modifications.DON'T USE WITH OTHER OPTIONS, they will be ignored -O Disable SSL offloading -U Reset client stats username to default one (Default:lbstats) -S Reset client stats password to default hash with shared secret ( md5(<LB_ID>-<shared_secret>) ) -b <METHOD> Balancing method on the backend servers, is one of: leastconn Sends requests to the server with least connections (Default) roundrobin static-rr first source rdp-cookie NOTE: When satisfied with all the changes run "lbmanager reload" to make the changes live. LB Service: Ansible, CentOS, HAProxy, keepalived, csync, git, automation interface
  • 9. 9 Containerizing Multi-Tenant Shared Infrastructure LB Service: Ansible, CentOS, HAProxy, keepalived, csync, git, automation interface Issues: • Multiple customer configs merged into master file • Resources shared across customers • Limit of customization per customer forces standalones • Standalones can add up quickly, also need HA • Manual configuration rollbacks • Version control of deployed app Containerize: • Container per customer deployment • Customization w/o standing up additional resources • Finer resource monitoring per customer == potential for new chargeback methods • Create ELB like service using stateless containers + autoscale scheduler (Exhibitor+Zookeeper)
  • 10. 10 Containerizing Multi-Tenant Shared Infrastructure Shared Hosting Environments # ls -al total 10 drwx--x--x 4 clifico-www clifico 512 Aug 8 2008 . drwx--x--x 88 root wheel 3584 Jul 30 13:09 .. lrwxr-xr-x 1 root wheel 15 Aug 8 2008 bin -> /www/apache/bin drwxr-xr-x 3 root wheel 512 Aug 19 00:07 conf lrwxr-xr-x 1 root wheel 17 Aug 8 2008 icons -> /www/apache/icons lrwxr-xr-x 1 root wheel 19 Aug 8 2008 libexec -> /www/apache/libexec drwxr-xr-x 2 clifico-www clifico 512 Aug 19 00:05 logs lrwxr-xr-x 1 root wheel 19 Aug 8 2008 modules -> /www/apache/modules zsmgcontrol-www 47227 0.0 0.0 54096 0 ?? IW - 0:00.00 /www/vapache/smgcontrol/bin/httpd -f /www/vapache/smgcontrol/conf/httpd.conf -DPHP5 revsinn 49687 0.0 0.8 82332 34604 ?? I 2:13AM 0:01.13 /www/vapache/revsinn/bin/httpd -f /www/vapache/revsinn/conf/httpd.conf -DPHP5 laphta-www 51439 0.0 0.2 55944 6352 ?? I 2:14AM 0:02.20 /www/vapache/laphta/bin/httpd -f /www/vapache/laphta/conf/httpd.conf -DPHP5 laphta-www 53163 0.0 0.8 79604 33180 ?? I 2:15AM 0:02.53 /www/vapache/laphta/bin/httpd -f /www/vapache/laphta/conf/httpd.conf -DPHP5 msdivamarie 54375 0.0 0.7 75108 29032 ?? I 2:15AM 0:02.63 /www/vapache/msdivamarie/bin/httpd -f /www/vapache/msdivamarie/conf/httpd.conf -DPHP5 woodswe-www 55193 0.0 0.0 75588 0 ?? IW - 0:00.00 /www/vapache/woodswe/bin/httpd -f /www/vapache/woodswe/conf/httpd.conf -DPHP5 frenchelite-www 55280 0.0 1.1 90392 44660 ?? I 2:16AM 0:00.73 /www/vapache/frenchelite/bin/httpd -f /www/vapache/frenchelite/conf/httpd.conf -DPHP5 woodswe-www 55289 0.0 0.0 75588 0 ?? IW - 0:00.00 /www/vapache/woodswe/bin/httpd -f /www/vapache/woodswe/conf/httpd.conf -DPHP5 woodswe-www 55290 0.0 0.0 75588 0 ?? IW - 0:00.00 /www/vapache/woodswe/bin/httpd -f /www/vapache/woodswe/conf/httpd.conf -DPHP5 apachectl.. if [ "x$user" = "x-" ]; then user=$(/usr/bin/find /www/vapache -maxdepth 1 -mindepth 1 -type d | xargs -n 1 basename) split=`expr $(echo $user | wc -w) / 4` fi for i in $user ; do apacheinit $i if [ $? -eq 1 ]; then echo "WARNING: No such user $i" continue fi • Custom apachectl + supporting scripts • Separate apache instance per user • ‘jail like’ separation via perms + ps mod • Scripts to standup/destroy new customer environments
  • 11. 11 Containerizing Multi-Tenant Shared Infrastructure Shared Hosting Environments: Issues: • No per user resource limits, only application • No dependency separation • 0day local root exploits • Difficult to move users Containerize: • Don’t deploy user accounts, deploy applications • Cloudapps == deploy small Xen instance + application specific template • Already being done well in containers, tons of OSS in dockerhub • Easier to manage hosts • Potential for better security than user land
  • 12. 12 OS & Software Updates • Common issue among MSPs • We upgrade based on Stability, Security, Feature requests, and opportunistically • Feature requests most common (latest ffmpeg..) • Manual updates for older OS versions • Who knows if something broke post update? • Safer for us to standup new VMs and move workloads, but time consuming New functionality: • CoreOS FastPatch • Atomic rpm-ostree • RancherOS - per service container rollbacks • Why upgrade the OS if you can redeploy workload onto already upgraded host
  • 13. 13 Platform Customization Issues: • Standardized platforms handle 80-90% of common use cases.. • More Flexibility needed - as close to internal DevOps teams as possible (our heroes) • Automation exists today, but still deploying VMs to solve problems • VMs deployed ‘at will’ based on templates or snapshots • Difficult to keep up w/ various tweaks & changes • Many multi-purpose VMs exist (web/db/cdn-origin/memcache) Containerize: • docker-compose customer’s environment • Less time to update update compose file then alternative work • Auto-scale • Already using abstracted LB & shared storage for configs and data • Unionfs no longer the only storage option • RDS type services already exist on perm
  • 14. 14 SaaS Platform Segmentation & Scale • SaaS platforms with X customers, each with their own VH directive, subdir, or subdomain • Each customer gets their own container • App can identify customer baed on URL string or HOST • Allows per customer changes without affecting others • Fork and customize codebase per customer • Easier to align multiple platform flavors per customer/container • Adding container monitoring (sysdig, prometheus) allows instant resource utilization per platform customer - quickly find noisy neighbors and ability to up charge for resources • Single customer load spikes may not affect other customers • Shard customer across zones/regions
  • 15. 15 Site Segmentation • Typical to see single servers or clusters with 50-5,000 micro sites on same Apache/nginx daemons • Hard to track intermittent slowness or downtime • Poor security - 1 Hacked site has potential to effect entire cluster/server • Containerize each site: • Decoupling app from code makes break/fix easier for MSP to fix or redeploy • Per site resource utilization • Secure
  • 16. 16 Pipeline • Rollbacks very difficult today on customer + MSP • Most development happens offsite • MSP should help in CI/CD pipeline building process and provide dev resources • Build new pipelines on-demand to help customers w/ various workflows • Free up existing enterprise test resources so multiple devs can test concurrently and w/o interference Pipeline:
  • 17. 17 VPCC & PPCC • Virtual Private Container Clouds & Physical Private Container Clouds • Hybrid - containers, private clouds, bare metal, xconnects • Proven & trusted enterprise feature sets: high availability, distributed resource schedulers, multi-tenant segmentation, DraaS, redundant networking, enterprise support • Private repositories • Isolated for compliance (PCI, HIPAA) • Existing stable and easy to use workload portability platforms and hyper-converged infrastructure • Overlay networks for interconnects • Not CaaS
  • 18. 18 VPCC & PPCC CoreOS, Fleet, etcd, cloud-init, weave, cAdvisor
  • 19. 19 Ecosystem software • Tectonic (by CoreOS) - Enterprise support - Kubernetes, etcd, flannel, docker/rkt, coreOS, beautiful GUI, A/B updates • Atomic (RedHat) - Enterprise support, subscription-manager, A/B updates, use any fedora based distro, Selinux • DockerSwarm • RancherOS - Lightweight, containerizes all system processes, A/B updates, simple rollback • Triton - Abstracted single docker host across clustered compute/network environment • Vmware Photon,Snappy Ubuntu Core, Mesosphere DCOS • Match Ecosystem to use case, workloads and skills
  • 20. 20 Internal • Convert to micro-services based architecture for internal use cases (like us..) • Development of services spread across teams and infrastructures • Better customer provisioning and segmentation on shared resource platforms such as load balancers, mail servers, elasticsearch • Standup training environments • “Drink your own Kool-Aid” • Ability to help customers containerize Apps as a value add
  • 21. 21 Where we started… • Started w/ BareMetal (wasteful) • 2007 -VMs in production (20-50 per host) • Hit Storage Bottleneck • Storage Innovation • Hit Network bottleneck • Network Innovation • Containers -> Full circle • Cycle will continue….