apache provisionr (incubating) - bucharest jug 10

27
Apache Provisionr (incubating) Andrei Savu Bucharest JUG #10

Upload: andrei-savu

Post on 06-May-2015

2.915 views

Category:

Documents


0 download

DESCRIPTION

My slides on Apache Provisionr (incubating) - a service that can be used to create and manage pools of virtual machines on multiple clouds. http://provisionr.incubator.apache.org/

TRANSCRIPT

Page 1: Apache Provisionr (incubating) - Bucharest JUG 10

Apache Provisionr (incubating)

Andrei SavuBucharest JUG #10

Page 2: Apache Provisionr (incubating) - Bucharest JUG 10

About me

● Founder of Axemblr.com● Organizer of Bucharest JUG (bjug.ro)● Apache Whirr PMC, ZooKeeper contributor● Passion for DevOps & Data Analysis

● Connect with me on LinkedIn

Page 3: Apache Provisionr (incubating) - Bucharest JUG 10

@ Axemblr

● Data Processing Infrastructure● Deployment Automation

● Product: Hadoop On-Demand Appliance● Open Source (part of our DNA)● Fair amount of consulting (bootstrapping)

Page 4: Apache Provisionr (incubating) - Bucharest JUG 10

Agenda

● What is Provisionr? ● Challenges & Architecture● Demo (HDFS on EC2)● Future @ Apache Software Foundation

Page 5: Apache Provisionr (incubating) - Bucharest JUG 10

What is Provisionr?

.. and how does it help me create pools of virtual machines?

Page 6: Apache Provisionr (incubating) - Bucharest JUG 10

What?

● Simple Service for Managing Pools of 10s or 100s of Virtual Machines

● A way to create clusters of machines that share a common set of characteristics on multiple cloud providers

Page 7: Apache Provisionr (incubating) - Bucharest JUG 10

Characteristics like?

● Operating system● Pre-installed

packages & binaries

● Sane DNS settings (forward & reverse dns resolution)

● NTP settings

● Network settings● Firewall● SSH config● Admin access● VPN access ● etc.

Page 8: Apache Provisionr (incubating) - Bucharest JUG 10

Why? (initially)

● Setup on-demand Hadoop clusters (Axemblr)

● Handles basic setup for large clusters ● Service config by using 3rd party apps like

Ambari or Cloudera Manager

Page 9: Apache Provisionr (incubating) - Bucharest JUG 10

Why? (long term)

Core functionality is generic

Provisionr

Configuration

Monitoring

Events

Next generation Apache Whirr?

Events

Events

ExternalSpecification

Page 10: Apache Provisionr (incubating) - Bucharest JUG 10

FAQ: Looks like Puppet?

● No● Provisionr is actually using Puppet

● Focus: Interact with IaaS APIs to start machines in groups with minimal configs (as listed before). Simple & reliable.

Page 11: Apache Provisionr (incubating) - Bucharest JUG 10

Challenges

How is the game different when we work with 50-100+ virtual machines?

Page 12: Apache Provisionr (incubating) - Bucharest JUG 10

Challenges #1

● API Throttling (batch calls)

● Concurrency Control (across multiple instances)

● Error handling, partial failures and automatic retries (idempotency)

Page 13: Apache Provisionr (incubating) - Bucharest JUG 10

Challenges #2

● Granular internal workflows (short transactions)

● State persistence across restarts and upgrades

● Audit & Logging

Page 14: Apache Provisionr (incubating) - Bucharest JUG 10

Challenges #3

● Integrating multiple native provider SDKs

● Provide a plugin architecture (run just a sub-set of all the features)

● Semi-automated and fully automated modes

Page 15: Apache Provisionr (incubating) - Bucharest JUG 10

Challenges #4

● Automatic creation of gold images

Page 16: Apache Provisionr (incubating) - Bucharest JUG 10

Architecture

Building Blocks, Internals, Persistence, Packaging, Plugins

Page 17: Apache Provisionr (incubating) - Bucharest JUG 10

Activiti (from Alfresco)

● Light-weight workflow engine (BPM)

● Has a nice Java API● Has a nice set of tools● Handles persistence as expected● Good error handling (retryable activities)

Page 18: Apache Provisionr (incubating) - Bucharest JUG 10

Activiti – Process Execution

Page 19: Apache Provisionr (incubating) - Bucharest JUG 10

Activiti – Interactive View

Page 20: Apache Provisionr (incubating) - Bucharest JUG 10

Apache Karaf

● Using it as an application server

● Provides an interactive shell● Integrated with Activiti● Solves the packaging problem (custom

distribution)

Page 21: Apache Provisionr (incubating) - Bucharest JUG 10

Apache Karaf - Shell

Page 22: Apache Provisionr (incubating) - Bucharest JUG 10

IaaS SDKs

● AWS SDK for Java– http://aws.amazon.com/sdkforjava/

● jclouds (for CloudStack)– http://www.jclouds.org/

Page 23: Apache Provisionr (incubating) - Bucharest JUG 10

Demo Time (video)

Provisionr & RundeckCDH4 HDFS cluster on EC2

Page 24: Apache Provisionr (incubating) - Bucharest JUG 10

Summary

● Provisionr solves the problem of creating large pools of virtual machines (100s)

● Cloud portability by making the machines & the cluster indistinguishable from an application perspective on multiple clouds

Page 25: Apache Provisionr (incubating) - Bucharest JUG 10

Working on● Short term: first release compliant with the

Apache Software Foundation policies

● Automatic AMI creation (fast provisioning of large clusters)

● Bundle Rundeck with the binary release and write support services

Page 26: Apache Provisionr (incubating) - Bucharest JUG 10

You're invited to join!

http://provisionr.incubator.apache.org/

● Code:– git clone https://git-wip-us.apache.org/repos/asf/incubator-

provisionr.git

● Mailing list:– [email protected]

Page 27: Apache Provisionr (incubating) - Bucharest JUG 10

Thanks! Questions?

Andrei [email protected]

Twitter: @andreisavu