Load Balancer as a Service (LBaaS) for OpenStack

Transform OpenStack Load Balancer for Advanced Application Services

OpenStack is the defacto choice for open-source cloud orchestration in private cloud deployments due to its programmability, automation, and flexibility. However, OpenStack integration with legacy load balancers still falls short of automation and self-service.

Diagram showing NSX ALB integration with openstack providing elastic lbaas for application delivery.

Why? Legacy load balancing appliances are extremely complex to integrate, require manual provisioning and can’t scale on demand. At the same time, open source solutions do not have enterprise-grade features to move workloads into production. As a result, enterprises using OpenStack still need a modern, multi-cloud solution that eliminates the input-driven manual steps and does the heavy lifting with built-in automation and analytics.

The VMware NSX Advanced Load Balancer OpenStack LBaaS Solution

NSX ALB solves these challenges by integrating natively with OpenStack components to deliver a fully orchestrated, self-service driven OpenStack LBaaS architecture. It provides on-demand autoscaling in response to changing performance and load requirements, automated provisioning of L4-L7 services, and web application security resulting in intelligent LBaaS for OpenStack implementations.

In addition, NSX ALB’s App Insights give unparalleled visibility into end-to-end timing, real user metrics, client logs, and much more. With NSX ALB, companies can automate application services while accelerating OpenStack implementation.

NSX ALB LBaaS Solution for OpenStack

Learn how Avi Networks delivered a fully orchestrated, self-service driven OpenStack networking implementation with multi-cloud automation.

NSX ALB LBaaS Solution for OpenStack

NSX ALB LBaaS and Integration with OpenStack Components

Capabilities

  • Native integration with OpenStack Neutron LBaaS, Nova, Keystone and Horizon
  • REST APIs for all application services to enable openstack automation
  • Full featured software load balancers on any VM or x86 server
  • Actionable analytics for application performance and security
  • Single point of control for distributed load balancers

Benefits

  • 90% faster application provisioning in OpenStack environments
  • Visibility through application insights to ensure optimal performance and faster incident resolution
  • Centralized policy control across Openstack private clouds, data centers or public cloud environments
  • 50% less TCO compared to legacy application delivery controllers for OpenStack

The setup and usage of Avi was straightforward. It literally took us 20 minutes to get a highly available instance deployed, configured and integrated into our OpenStack cloud, which was awesome.

Nate Baechtold
IT Architect | EBSCO
body, .section--bg-lgray { background-color: #fbfbfb; } /*========================== * Hero Sizing Adjustments ============================*/ .hero-v2__title { font-size: 3.25rem; line-height: 1.25; } .hero-v2__subtitle { font-size: 1.75rem; } .hero-v2--with-subnav .hero-v2__title, .hero-v2__title { padding-bottom: 2rem; } /*========================== * Section Spacing Adjustments ============================*/ .section { padding-top: 6rem; padding-bottom: 6rem; } .section--bg-none + .section--bg-none { padding-top: 0; } .section--quote + .section--collapse { padding-top: 0; margin-top: -2rem; } .section--collapse { padding-top: 0; } .basic-content--leadin.section { padding-bottom: 2rem; } .basic-content img:not(:last-child) { margin-top: 3rem; margin-bottom: 3rem; } .basic-content__title, .section__title { margin-bottom: 3rem; } /*========================== * Body Copy Resizing ============================*/ .basic-content--leadin p:first-of-type { font-size: 1.5rem; line-height: 1.75; font-weight: 400; } .main-content p, .main-content li { font-size: 1.125rem; line-height: 1.75; font-weight: 100; } .main-content p a, .main-content li a { font-weight: 400; text-decoration: underline; } .basic-content--leadin p a { font-weight: 600; } .main-content a.button { text-decoration: none; font-weight: 600; } .main-content ul li::before { content: ''; background-color: #FF4B00; font-size: inherit; padding-right: 0.25em; position: absolute; top: 17px; left: -1px; display: inline-block; height: 7px; width: 7px; border-radius: 100%; } .main-content ul li { padding-left: 1.25rem; } .quote { line-height: 1.75; } .quote__body::before { content: '“'; font-family: arial, sans-serif; top: -0.4em; left: -0.6em; font-size: 72px; font-weight: 600; } /*========================== * Tab Styles * 1) '.xan' is specific identifier for a new module type. ============================*/ .xan .tab-group { background-color: #fff; border: 30px solid #cfe8ee; display: flex; max-width: 980px; margin: 0 auto; padding: 2rem 3rem; } .xan .tab-group__tabs { border: 0; border-right: 1px solid #f6f6f6; width: 30%; max-width: 30%; } .xan .tab-group__tab { border-bottom: 0px; border-radius: 40px 0 0 40px; } .xan .js-tab-x { background: #ffffff; border-right: 10px solid #fff; color: #333333; font-size: 18px; font-weight: 100; text-transform: none; width: 100%; text-align: left; box-shadow: none; filter: none; padding: 10px 18px 10px 40px; margin: 6px 0; transition: all 300ms ease-out; font-family: 'Open Sans', 'Brandon Grotesque' ,sans-serif; } .xan .tab-group__tabs .js-tab-x:hover { font-weight: 600; transition: all 0.5s ease-out; } .xan .tab-group__tabs .js-tab-x h3 { border: none !important; box-shadow: none; } .xan .tab-group__tab--is-active { border: 0; border-right: 10px solid #FF4B00; background-color: #f7f7f7; border-radius: 40px 0 0 40px ; color: #FF4B00; font-weight: 600; transition: all 300ms ease-out; } .xan .tab-group__tab:focus { outline: none; transition: all 300ms ease-out; } .xan .tab-group__tabs .js-tab-x::before, .xan .tab-group__tabs .js-tab-x::after { content: ""; display: none; } .xan .tab-group__panel { width: 70%; position: relative; height: auto; font-size: 1.125rem; font-weight: 100; transition: all 300ms ease-out; } .xan .tab-group__panel ul li { padding-left: 18px !important; } /* ===================== * END OF TABS ========================*/ /* ===================== * Offer Section ========================*/ .section.offer-bar { background: #fff; color: #233448; clear: both; } .offer-bar__grid { align-items: center; } .section.offer-bar h2 .offer-bar__extended-title { font-size: 30px; color: #233448; } .section.offer-bar h2 { font-size: 40px; font-weight: 100; } .section.offer-bar p { font-weight: 100; font-size: 18px; } .offer-bar__title { margin-top: 0; } .offer-bar__cover { padding-top: 0; } .offer-bar__footer a.secondary-button--white { color: #233448; font-size: 20px; } .offer-bar__footer a.secondary-button--white:hover { color: #ff4b00; letter-spacing: 3px; } .cta-bar-v2 .section__title { margin-bottom: 2rem; } .cta-bar-v2__title + .cta-bar-v2__title--sub { font-weight: 100 !important; } .cta-bar-v2--blue { background-color: #8bc7d5 !important; } .cta-bar-v2 { display: block; text-align: center; position: relative; padding-top: 6rem; padding-bottom: 6rem; } /*=================== Multi-Card Group Cards =========================*/ .card-group { flex-wrap: wrap; } .card { border-radius: 16px; box-shadow: 0 5px 12px rgba(0, 0, 0, 0.16); } .card.card-group__card { margin: 0 0.5rem; margin-top: 50px; position: relative; flex: 1 0 calc(33% - 1rem); } .card__hex { position: absolute; top: -29px; width: 55px; transform: translateX(-50%); left: 50%; } .card .card__icon { width: 86px; height: auto; padding: 16px 20px 21px 20px; position: relative; margin-top: -63px; background: url('/wp-content/uploads/2019/02/avi-hex-gray-outline@3x.png') center center no-repeat; background-size: 86px ; } .card__title { display: block; color: #333; text-align: center; padding-top: 0px; margin-top: 0px; margin-bottom: 12px; font-weight: 600; } .card__title--big { font-size: 1.25rem; font-weight: 600; } .card__desc h3 { text-align: center; font-size: 14px; font-weight: 100; color: #F04E23; text-transform: uppercase; } .card__desc p { font-size: 1rem; line-height: 1.75; } .card__desc li{ font-size: 16px; line-height: 24px; margin-bottom: 1rem; padding-left: 20px; } .card ul li::before { top: 13px; } @media only screen and (max-width: 768px) { /*========================== * Section Spacing Adjustments ============================*/ .section { padding-top: 3rem; padding-bottom: 3rem; } .section--bg-none + .section--bg-none { padding-top: 0; } .basic-content--leadin.section { padding-bottom: 1rem; } .basic-content img:not(:last-child) { margin-top: 1rem; margin-bottom: 1rem; } .basic-content__title, .section__title { margin-bottom: 1.5rem; } /*========================== * Body Copy Resizing ============================*/ .basic-content--leadin p:first-of-type { font-size: 1.125rem; } .main-content p, .main-content li { font-size: 1rem; line-height: 1.75; } .hero-v2 { height: 320px; } .hero-v2__title { font-size: 1.75rem; padding-top: 0; } .hero-v2__subtitle { font-size: 1.125rem; } .section--tabs { display: block; height: auto; } .xan .tab-group { margin: 0 auto; display: block; border-left: none; border-right: none; padding: 10px 5px; flex-direction: column; background-color: #fff; } .xan .tab-group__tabs { width: 100%; max-width: 100%; border: 0; border-bottom: 1px solid #f6f6f6; } .xan .js-tab-x { border: 0; border-bottom: 10px solid #fff; border-radius: 0; padding: 10px; text-align: center; } .xan .tab-group__tabs .js-tab { background: #ffffff; color: #333333; font-size: 18px; font-weight: 100; text-transform: none; width: 100%; text-align: left; box-shadow: none; filter: none; padding: 10px 18px 10px 40px; margin: 6px 0; border-bottom: none; display: block; } .xan .tab-group__tabs .js-tab button { border: none !important; box-shadow: none; display: block; } .xan .tab-group__tab--is-active { border: 0; color: #FF4B00; font-weight: 600; border-bottom: 10px solid #FF4B00; border-radius: 0px; } .xan .tab-group__tab:focus { outline: none; display: block; } .xan .tab-group__tabs .js-tab::before, .xan .tab-group__tabs .js-tab::after { content: ""; display: none; } .xan .tab-group__panel { padding: 0; margin: 0; width: 100%; height: auto; font-size: 16px; font-weight: 100; } .xan .tab-group__panel ul li::before { font-size: 1.7em; top: 16px; } .xan .tab-group__panel ul li { padding-left: 18px !important; } .xan .tab-group__panel--is-active { display: block; } .section--tabs { border-bottom: none; } .section.offer-bar { width: 100%; } .offer-bar__image { padding-top: 60px; } .offer-bar .two-col { -webkit-column-count: 1; column-count: 1; } } /*================ Mobile Hide/Show ==================*/ .show-desktop, .show-tablet { display: none !important; } @media (min-width: 550px) { .show-tablet { display: block !important; } .show-mobile { display: none !important; } } @media (min-width: 768px) { .hide-desktop.hide-desktop { display: none; } } @media (min-width: 800px) { .show-tablet { display: none !important; } .show-desktop { display: block !important; } } @media (max-width: 768px) { .hide-mobile.hide-mobile { display: none; } } ////////////////////////////////////////////////////////////////////////////// // // Tabs // ////////////////////////////////////////////////////////////////////////////// (function ($) { // Create tabs from panels $('.js-tab-panel-x').each(function () { var $this = $(this); var title = $this.attr('data-title'); var bg = $this.attr('data-bg'); var sectionTitle = $this.attr('data-section-title'); var target = $this.attr('id'); var tabGroup = $this.parent().find('.js-tab-group-x'); var tabButton = '

' + title + '

'; tabGroup.append(tabButton); }); // Click handler $('.js-tab-x').on('click', function () { var $this = $(this); var tabGroup = $this.parent(); var target = $this.attr('data-target'); var bg = $this.attr('data-bg'); var sectionTitle = $this.attr('data-section-title'); var tabActiveClass = 'tab-group__tab--is-active'; var panelActiveClass = 'tab-group__panel--is-active'; // Apply background image and Update the title tabGroup .parent() .parent() .css({ 'background-image': 'url(' + bg + ')' }) .find('.js-tab-section-title') .html(sectionTitle); // Deactivate all sibling tabs tabGroup.find('.js-tab-x').removeClass(tabActiveClass); // Reactivate this tab $this.addClass(tabActiveClass); // Deactivate all sibling panels tabGroup.siblings('.js-tab-panel-x').removeClass(panelActiveClass); // Reactivate this panel $('#' + target).addClass(panelActiveClass); }); $('.tab-group .js-tab-x:first-child').trigger('click'); })(jQuery);;