An OpenNebula Tale
Pedro Dias
● Pedro Dias
○ @pedromdias
○ github.com/apocas
● CTO at ptisp.com
○ github.com/ptisp
● Lecturer at ipt.pt
● Freelancer
● Likes Node.js, created dockerode, nodechecker.
com, ...
Who am i
PTisp.com
● Hosting provider
○ 2 datacenters
○ ~36000 domains
○ ~700 virtual servers
○ ~800 physical servers
○ ~9000 active customers
What is this tale about?
● Why a new IaaS?
● Requirements
● Why OpenNebula?
● Making it fit
● Giving back to community
Why a new IaaS?
● Turnkey solution issues
○ Value-added products are harder
○ Vendor lock-in
○ No control
● Expansion
● Licensing
Requirements
● Openness
● Avoid spaghetti stack
● Low maintenance
● Low entry barrier
● KVM
● API
● Support
Tested
● OpenStack
○ High maintenance/operation
● Onapp
○ Turnkey
● CloudStack
○ Entry barrier
● OpenNebula
Why OpenNebula?
● Open
● Scenario adaptability
● Low maintenance
● Support
● API
Making it fit
1. cLVM vs LVM
2. VM image resize
3. Systems integration
4. Resellers
1. clvm… right...
● Hard to maintain
● Cluster recovery related with it’s
size/previous state
● Additional “moving” parts
● Critical layer
lvm
● Volume sanitization
○ Avoid data corruption by
simultaneous access
● Keeping volume directory
clean and sane
Solution
● Custom fs_lvm drivers
○ Activate volumes where and when they are needed.
(ex: premigrate)
○ Deactivate volumes when and there they are not
needed anymore. (ex: postmigrate)
ONE Janitor
● https://github.com/ptisp/one-janitor
● Uses API and SSH
○ API for logic data
○ SSH for infra/real data
○ Matches them
● Storage sanitization
● Virt sanitization
● Boilerplate for other integrations
2. VM image resize
● Leverages libguestfs
● Strategy:
a. Stops VM
b. Creates a new volume (bigger size)
c. Copies old volume into the newer one
d. Expands fs
e. Renames old and new volumes
f. Starts VM
● Original volume is left untouched.
● Not yet integrated into ONE workflow
3. ONE Node.js addon
● https://github.com/OpenNebula/addon-
nodejs
● Contributions are welcome
○ Tests coverage need to be increased.
VM manipulation
var vm = one.getVM(12);
// query API for vm info
vm.info(function (err, data) {
console.log(data);
});
vm.action('reboot', function(err, data) {
console.log(data);
});
4. http://cloudash.one
What it is?
● Web panel for OpenNebula
● Abstracts IaaS
○ Build a “DigitalOcean feeling” on top of OpenNebula
● Multi-tenant
● Optional built-in ticketing system
● Resources limits/plans per user and per
instance
Functionality
● VM ownership implied
● Resources editing
● Network manipulation
● Console
● Doesn’t need ONE admin privileges
● Templating or custom VM creation
demo.cloudash.one

nebulaconf

  • 1.
  • 2.
    ● Pedro Dias ○@pedromdias ○ github.com/apocas ● CTO at ptisp.com ○ github.com/ptisp ● Lecturer at ipt.pt ● Freelancer ● Likes Node.js, created dockerode, nodechecker. com, ... Who am i
  • 3.
    PTisp.com ● Hosting provider ○2 datacenters ○ ~36000 domains ○ ~700 virtual servers ○ ~800 physical servers ○ ~9000 active customers
  • 4.
    What is thistale about? ● Why a new IaaS? ● Requirements ● Why OpenNebula? ● Making it fit ● Giving back to community
  • 5.
    Why a newIaaS? ● Turnkey solution issues ○ Value-added products are harder ○ Vendor lock-in ○ No control ● Expansion ● Licensing
  • 6.
    Requirements ● Openness ● Avoidspaghetti stack ● Low maintenance ● Low entry barrier ● KVM ● API ● Support
  • 7.
    Tested ● OpenStack ○ Highmaintenance/operation ● Onapp ○ Turnkey ● CloudStack ○ Entry barrier ● OpenNebula
  • 8.
    Why OpenNebula? ● Open ●Scenario adaptability ● Low maintenance ● Support ● API
  • 9.
    Making it fit 1.cLVM vs LVM 2. VM image resize 3. Systems integration 4. Resellers
  • 10.
    1. clvm… right... ●Hard to maintain ● Cluster recovery related with it’s size/previous state ● Additional “moving” parts ● Critical layer
  • 11.
    lvm ● Volume sanitization ○Avoid data corruption by simultaneous access ● Keeping volume directory clean and sane
  • 12.
    Solution ● Custom fs_lvmdrivers ○ Activate volumes where and when they are needed. (ex: premigrate) ○ Deactivate volumes when and there they are not needed anymore. (ex: postmigrate)
  • 13.
    ONE Janitor ● https://github.com/ptisp/one-janitor ●Uses API and SSH ○ API for logic data ○ SSH for infra/real data ○ Matches them ● Storage sanitization ● Virt sanitization ● Boilerplate for other integrations
  • 14.
    2. VM imageresize ● Leverages libguestfs ● Strategy: a. Stops VM b. Creates a new volume (bigger size) c. Copies old volume into the newer one d. Expands fs e. Renames old and new volumes f. Starts VM ● Original volume is left untouched. ● Not yet integrated into ONE workflow
  • 15.
    3. ONE Node.jsaddon ● https://github.com/OpenNebula/addon- nodejs ● Contributions are welcome ○ Tests coverage need to be increased.
  • 16.
    VM manipulation var vm= one.getVM(12); // query API for vm info vm.info(function (err, data) { console.log(data); }); vm.action('reboot', function(err, data) { console.log(data); });
  • 17.
  • 18.
    What it is? ●Web panel for OpenNebula ● Abstracts IaaS ○ Build a “DigitalOcean feeling” on top of OpenNebula ● Multi-tenant ● Optional built-in ticketing system ● Resources limits/plans per user and per instance
  • 19.
    Functionality ● VM ownershipimplied ● Resources editing ● Network manipulation ● Console ● Doesn’t need ONE admin privileges ● Templating or custom VM creation
  • 20.