Summer of Code 2013 Ideas

Ganeti applyed to be a hosting organization for GSoC 2013. This document outlines our ideas.

Better openvswitch Ganeti support

Objectives:

  • Support for openvswitch features on the instance NICs (dynamic vlan configuration, bandwidth control)
  • Openvswitch clustering and tunneling: self configuration, system level networks

Benefits:

  • Update Ganeti to support more scalable networking
  • Make it easy to administer an openvswitch installation inside Ganeti
  • Allow inter-vm communication (when requested) without explicit support in the switches config

Requirements:

  • Interest in distributed systems and networking
  • Knowledge of Python and Haskell
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti and Openvswitch developers
  • Access to multiple machines (or VMs) to test the project and run QA

Dynamic networking

Objectives:

  • Possibility to use a network interface name instead of an IP address for VNC/spice bind addresses, and for secondary ip
  • Network interfaces (bridges, routes, etc) dynamically configured and unconfigured on nodes as needed by instances

Benefits:

  • Increase scalability and ease of configuration
  • Make network configuration more customizable
  • Make network configuration easier to maintain

Requirements:

  • Interest in distributed systems and networking
  • Knowledge of Python and Haskell
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers and other summer of code students (may interact with the idea above)
  • Access to multiple machines (or VMs) to test the project and run QA

VDE Ganeti support

Objectives:

Benefits:

  • Reduce the number of privileges Ganeti requires to run (opening the space to run as non-root)
  • Make it easy to test new network configurations in userspace

Requirements:

  • Interest in distributed systems and networking
  • Knowledge of Python and Haskell
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers and other summer of code students (may interact with the ideas above)
  • Access to multiple machines (or VMs) to test the project and run QA

Notes:

  • Probably should be staffed after the two ideas above

Better RADOS/Ceph Ganeti support

Objectives:

  • Support for userspace mode for RADOS+KVM
  • Support for running RADOS on Ganeti nodes (self-configuring of Ganeti nodes as a RADOS backend)

Benefits:

  • Make it easier to deploy a RADOS infrastructure with Ganeti
  • Support the better performance and higher resilience of running RADOS in userspace

Requirements:

  • Interest in distributed systems and storage
  • Knowledge of Python and Haskell
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers and RADOS developers
  • Access to multiple machines (or VMs) to test the project and run QA

GlusterFS Ganeti support

Objectives:

  • Add Gluster as a storage backend
  • Add support for userspace gluster in kvm
  • Support for running gluster on Ganeti nodes (self-configuring of Ganeti nodes as a gluster backend)

Benefits:

  • Allow users to deploy Ganeti clusters with Gluster
  • Bring Gluster up to speed w.r.t. RADOS and DRBD in support

Requirements:

  • Interest in distributed systems and storage
  • Knowledge of Python and Haskell
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers and RADOS developers
  • Access to multiple machines (or VMs) to test the project and run QA

KVM resource constrainment

Objectives:

  • cgroups integration for more reliable resource constrainment
  • Linux containers integration for better control of what the qemu executable can access

Benefits:

  • Better segregation in case of virtualization/qemu breakup
  • Better resource accounting

Requirements:

  • Interest in virtualization and security
  • Knowledge of Haskell and Python
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers
  • Access to multiple kvm-enabled machines (or VMs) to test the project and run QA

KVM: Hugepages support

Objectives:

  • Design a way to support different “memory pools” and fix KVM free memory reporting
  • Handle node hugepage memory correctly in memory reporting
  • Allow to create/start instances on nodes with hugepages without failing for non-hugepages memory accounting
  • Handle the hugepages pool in iallocator/hbal
  • Run benchmarks and report performance of normal instance VS hugepages instance VS THP instance

Benefits:

  • Better separation of instance memory and OS memory for KVM
  • Improved performance for hugepages instances

Requirements:

  • Interest in virtualization and security
  • Knowledge of Haskell and Python
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers
  • Access to multiple kvm-enabled machines to test the project and run QA

Improve linux-HA integration

Objectives:

  • Allow Ganeti to automatically set up linux-HA on the cluster

Benefits:

  • remove the need for hand-configuration, and make it easy to deploy Ganeti+Linux-HA together
  • add QA of the current linux-HA resources for Ganeti
  • fully enable self-repairing clusters

Requirements:

  • Interest in virtualization and security
  • Knowledge of Haskell and Python
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers
  • Access to multiple machines in order to thoroughly test the project

Add Ganeti provider to Vagrant

Objectives:

  • Allow Vagrant to communicate and interact with a Ganeti cluster

Benefits:

  • Allow Vagrant users to power their virtual machines via a private Ganeti cloud
  • Gives Vagrant users a testing environment that could scale into the hundreds vms
  • Provides a unified and popular remote command line interface to Ganeti

Requirements:

  • Write a Vagrant provider that connects to the Ganeti RAPI which can deploy/connect to a virtual machine
  • Knowledge in Ruby
  • Ability to write high quality code, tests and QA
  • Ability to interact with Ganeti developers