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