Chapter One – Octavia Administration
1.1 Getting Started
1.1.1 Introducing Octavia
Welcome to Octavia! Octavia is an open source, operator-scale load balancing solution designed to work with OpenStack.
Octavia was born out of the Neutron LBaaS project. Its conception influenced the transformation of the Neutron LBaaS project, as Neutron LBaaS moved from version 1 to version 2. Starting with the Liberty release of OpenStack, Octavia has become the reference implementation for Neutron LBaaS version 2.
Octavia accomplishes its delivery of load balancing services by managing a fleet of virtual machines, containers, or bare metal serverscollectively known as amphorae which it spins up on demand. This on- demand, horizontal scaling feature differentiates Octavia from other load balancing solutions, thereby making Octavia truly suited “for the cloud”.
Where Octavia fits into the OpenStack ecosystem
Load balancing is essential for enabling simple or automatic delivery scaling and availability. In turn, application delivery scaling and availability must be considered vital features of any cloud. Together, these facts imply that load balancing is a vital feature of any cloud.
Therefore, we consider Octavia to be as essential as Nova, Neutron, Glance or any other “core” project that enables the essential features of a modern OpenStack cloud.
In accomplishing its role, Octavia makes use of other OpenStack projects:
- Nova – For managing amphora lifecycle and spinning up compute resources on demand.
- Neutron – For network connectivity between amphorae, tenant environments, and external networks.
- Barbican – For managing TLS certificates and credentials, when TLS session termination is configured on the amphorae.
- Keystone – For authentication against the Octavia API, and for Octavia to authenticate with other OpenStack projects.
- Glance – For storing the amphora virtual machine image.
- Oslo – For communication between Octavia controller components, making Octavia work within the standard OpenStack framework and review system, and project code structure.
- Taskflow – Is technically part of Oslo; however, Octavia makes extensive use of this job flow system when orchestrating back-end service configuration and management.
Octavia is designed to interact with the components listed previously. In each case, we’ve taken care to define this interaction through a driver interface. That way, external components can be swapped out with functionally-equivalent replacements without having to restructure major components of Octavia. For example, if you use an SDN solution other than Neutron in your environment, it should be possible for you to write an Octavia networking driver for your SDN environment, which can be a drop-in replacement for the standard Neutron networking driver in Octavia.
As of Pike, it is recommended to run Octavia as a standalone load balancing solution. Neutron LBaaS is deprecated in the Queens release, and Octavia is its replacement. Whenever possible, operators are strongly advised to migrate to Octavia. For end-users, this transition should be relatively seamless, because Octavia supports the Neutron LBaaS v2 API and it has a similar CLI interface. Alternatively, if end-users cannot migrate on their side in the forseable future, operators could enable the experimental Octavia proxy plugin in Neutron LBaaS.
It is also possible to use Octavia as a Neutron LBaaS plugin, in the same way as any other vendor. You can think of Octavia as an “open source vendor” for Neutron LBaaS.
Octavia supports third-party vendor drivers just like Neutron LBaaS, and fully replaces Neutron LBaaS as the load balancing solution for OpenStack.
For further information on OpenStack Neutron LBaaS deprecation, please refer to https://wiki.openstack.org/wiki/Neutron/LBaaS/Deprecation.