Ganeti
A cluster virtualization manager.
What can it do?
- Manage clusters of physical machines
- Deploy virtual machines on them
- Live migration
- Resiliency to failure
- DRBD over-the-network data redundancy
- Cluster balancing
- Ease of repairs and hardware swaps
Ideas
- Making the virtualization entry level as low as possible
- Easy to install/manage
- No specialized hardware needed (eg. SANs)
- Scale to enterprise ecosystems
- Manage symultaneously from 1 to ~50 host machines
- Access to advanced features (drbd, live migration)
- Be a good open source citizen
- Design and code discussions are open
- External contributions are welcome
- Cooperate with other "big scale" Ganeti users
Terminology
- Node: a virtualization host
- Instance: a virtualization guest
- Cluster: a set of nodes, managed as a collective
Technologies
- Linux and its standard networking utils (iproute2, bridge-utils)
- KVM/Xen (support in progress for lxc)
- DRBD, or LVM, or files (SAN support is coming)
- Python (plus a few modules)
- socat
- ssh
Initializing your cluster
The node needs to be set up, follow our installation guide.
gnt-cluster init [-s ip] \
--enabled-hypervisors=kvm cluster
gnt-node add [-s ip] node2
gnt-node add [-s ip] node3
gnt-cluster info
gnt-cluster modify [-B ...] [-H ...] [-N ...]
Running instances
gnt-os list
gnt-instance add -t drbd \
{-n node1:node2 | -I hail } \
-o debootstrap+default i0
ping i0
ssh i0 # easy with OS hooks
gnt-instance migrate i0
gnt-instance console i0
Controlling Ganeti
- Command line (*)
- Ganeti Web manager
- Developed by osuosl.org and grnet.gr
- RAPI (Rest-full http interface) (*)
- On-cluster luxi interface (*)
- luxi is currently json over unix socket
- there is code for python and haskell
(*) Programmable interfaces
Ganeti 2.3/2.4
- Initial nodegroups support (scale to bigger clusters) (2.4)
- Out of Band management (2.4)
- New KVM features support (vhost, hugepages) (2.4)
- IPv6 (2.3)
- Privilege separation (2.3)
- Further diversification of nodes (2.3)
- Job priorities (2.3)
Future roadmap
- Scalability to ~500 nodes through node groups
- Distributed storage (ceph, sheepdog) and SANs
- Further KVM improvements
- block device migration, QMP monitoring
- SPICE/USB redirect
- Whatever feature you want to contribute
- More customizable networking
- More hypervisors: lxc, view-os
- Better self-healing
People running Ganeti
- Google (Corporate Computing Infrastructure)
- grnet.gr (Greek Research & Technology Network)
- osuosl.org (Oregon State University Open Source Lab)
- fsffrance.org (according to docs on their website and trac)
- ...
Conclusion
Questions? Feedback? Ideas? Flames?