Search
  • Software
    • Overview
    • OpenStack Components
    • SDKs
    • Deployment Tools
    • OpenStack Map
    • Sample Configs
  • Use Cases
    • Users in Production
    • Ironic Bare Metal
    • Edge Computing
    • Telecom & NFV
    • Science and HPC
    • Containers
    • Enterprise
    • User Survey
  • Events
    • Open Infrastructure Summits
    • Project Teams Gathering
    • OpenDev
    • Community Events
    • OpenStack & OpenInfra Days
    • Summit Videos
  • Community
    • Welcome! Start Here
    • OpenStack Technical Committee
    • Speakers Bureau
    • OpenStack Wiki
    • Get Certified (COA)
    • Jobs
    • Marketing Resources
    • Community News
    • Superuser Magazine
    • OpenInfra Foundation Supporting Organizations
    • Open Infrastructure Foundation (OpenInfra Foundation)
  • Marketplace
    • Training
    • Distros & Appliances
    • Public Clouds
    • Hosted Private Clouds
    • Remotely Managed Private Clouds
    • Consulting & Integrators
    • Drivers
  • Blog
  • Docs
  • Join
    • Sign up for Foundation Membership
    • Sponsor the Foundation
    • More about the Foundation
  • Log In

Haproxy ports and related services configuration

Haproxy ports and related services configuration¶

Blueprint: https://blueprints.launchpad.net/tripleo/+spec/tripleo-haproxy-configuration

Current spec provides options for HA endpoints delivery via haproxy.

Problem Description¶

Current tripleo deployment scheme binds services on 0.0.0.0:standard_port, with stunnel configured to listen on ssl ports.

This configuration has some drawbacks and wont work in ha, for several reasons:

  • haproxy cant bind on <vip_address>:<service_port> - openstack services are bound to 0.0.0.0:<service_port>

  • services ports hardcoded in many places (any_service.conf, init-keystone), so changing them and configuring from heat would be a lot of pain

  • the non-ssl endpoint is reachable from outside the local host, which could potentially confuse users and expose them to an insecure connection in the case where we want to run that service on SSL only. We want to offer SSL by default but we can’t really prevent it.

Proposed Change¶

We will bind haproxy, stunnel (ssl), openstack services on ports with different ipaddress settings.

HAProxy will be bound to VIP addresses only.

STunnel where it is used will be bound to the controller ctlplane address.

OpenStack services will bind to localhost for SSL only configurations, and to the ctlplane address for non-SSL or mixed-mode configurations. They will bind to the standard non-encrypted ports, but will never bind to 0.0.0.0 on any port.

We’ll strive to make SSL-only the default.

An example, using horizon in mixed mode (HTTPS and HTTP):

vip_address = 192.0.2.21 node_address = 192.0.2.24

  1. haproxy listen horizon_http bind vip_address:80 server node_1 node_address:80 listen horizon_https bind vip_address:443 server node_1 node_address:443

  2. stunnel accept node_address:443 connect node_address:80

  3. horizon bind node_address:80

A second example, using horizon in HTTPS only mode:

vip_address = 192.0.2.21 node_address = 192.0.2.24

  1. haproxy listen horizon_https bind vip_address:443 server node_1 node_address:443

  2. stunnel accept node_address:443 connect 127.0.0.1:80

  3. horizon bind 127.0.0.1:80

Alternatives¶

There are several alternatives which do not cover all the requirements for security or extensibility

Option 1: Assignment of different ports for haproxy, stunnel, openstack services on 0.0.0.0

  • requires additional firewall configuration

  • security issue with non-ssl services endpoints

  1. haproxy bind :80

    listen horizon server node_1 node_address:8800

  2. stunnel accept :8800 connect :8880

  3. horizon bind :8880

Option 2: Using only haproxy ssl termination is suboptimal:

  • 1.5 is still in devel phase -> potential stability issues

  • we would have to get this into supported distros

  • this also means that there is no SSL between haproxy and real service

  • security issue with non-ssl services endpoints

  1. haproxy bind vip_address:80

    listen horizon server node_1 node_address:80

  2. horizon bind node_address:80

Option 3: Add additional ssl termination before load-balancer

  • not useful in current configuration because load balancer (haproxy) and openstack services installed on same nodes

Security Impact¶

  • Only ssl protected endpoints are publicly available if running SSL only.

  • Minimal firewall configuration

  • Not forwarding decrypted traffic over non-localhost connections

  • compromise of a control node exposes all external traffic (future and possibly past) to decryption and/or spoofing

Other End User Impact¶

Several services will listen on same port, but it will be quite easy to understand if user (operator) will know some context.

Performance Impact¶

No differences between approaches.

Other Deployer Impact¶

None

Developer Impact¶

None

Implementation¶

We need to make the service configs - nova etc - know on a per service basis where to bind. The current approach uses logic in the template to choose between localhost and my_ip. If we move the selection into Heat this can become a lot simpler (read a bind address, if set use it, if not don’t).

We considered extending the connect_ip concept to be on a per service basis. Right now all services are exposed to both SSL and plain, so this would be workable until we get a situation where only some services are plain - but we expect that sooner rather than later.

Assignee(s)¶

Primary assignee:

dshulyak

Work Items¶

tripleo-incubator: * build overcloud-control image with haproxy element

tripleo-image-elements:

  • openstack-ssl element refactoring

  • refactor services configs to listen on 127.0.0.1 / ctlplane address: horizon apache configuration, glance, nova, cinder, swift, ceilometer, neutron, heat, keystone, trove

tripleo-heat-templates: * add haproxy metadata to heat-templates

Dependencies¶

None

Testing¶

CI testing dependencies:

  • use vip endpoints in overcloud scripts

  • add haproxy element to overcloud-control image (maybe with stats enabled) before adding haproxy related metadata to heat templates

Documentation Impact¶

  • update incubator manual

  • update elements README.md

References¶

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

https://www.stunnel.org/howto.html

this page last updated: 2014-07-18 22:18:10
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug
  • Guides
  • Install Guides
  • User Guides
  • Configuration Guides
  • Operations and Administration Guides
  • API Guides
  • Contributor Guides
  • Languages
  • Deutsch (German)
  • Français (French)
  • Bahasa Indonesia (Indonesian)
  • Italiano (Italian)
  • 日本語 (Japanese)
  • 한국어 (Korean)
  • Português (Portuguese)
  • Türkçe (Türkiye)
  • 简体中文 (Simplified Chinese)

tripleo-specs 0.0.1.dev402

  • Decouple TripleO Tasks
  • Zed placeholder
  • Unifying TripleO Orchestration with Task-Core and Directord
  • TripleO Ceph Ingress Daemon Integration
  • TripleO Ceph Ganesha Integration for Manila
  • Improve logging for ansible calls in tripleoclient
  • Cleaning container healthchecks
  • Support Keystoneless Undercloud (basic auth or noauth)
  • Moving TripleO repos to independent release model
  • TripleO Repos Single Source
  • Deploy whole disk images by default
  • Ephemeral Heat Stack for all deployments
  • Disable Swift from the Undercloud
  • Mixed Operating System Versions
  • TripleO Ceph
  • TripleO Ceph Client
  • TripleO Ceph Ganesha Integration for Manila
  • Install and Configure FRRouter
  • Network Data format/schema (v2)
  • Network Data v2 - node ports and node network config
  • Simple Container Generation
  • Enable TripleO to deploy Dell EMC PowerFlex software defined storage via Ansible
  • Replace Mistral with Ansible
  • Scaling with the Ansible Inventory
  • tripleo-operator-ansible - Ansible roles and modules to interact with TripleO
  • Move certificate management in tripleo-heat-templates
  • Scale Undercloud with a Minion
  • Improve upgrade_tasks CI coverage with the standalone installer
  • In-flight Validations for the overcloud
  • Provision nodes without Nova and Glance
  • Integrate os_tempest role with TripleO
  • Podman support for container management
  • TripleO - Pattern to safely spawn a container from a container
  • TripleO Routed Networks Deployment (Spine-and-Leaf Clos)
  • Major Upgrades Including Operating System Upgrade
  • Provide a common Validation Framework inside python-tripleoclient
  • TripleO Zero Footprint Installer
  • Add Support for Custom TripleO Validations
  • Enable logging to stdout/journald for rsyslog
  • TripleO Split Control Plane from Compute/Storage Support
  • Support Barometer(Software Fastpath Service Quality Metrics) Service
  • TripleO tools for testing HA deployments
  • TripleO Remote Logging
  • A unified tool for upgrading TripleO based deploments
  • Support Vitrage(Root Cause Analysis, RCA) Service
  • UI Automation Testing
  • Fast-forward upgrades
  • Instance High Availability
  • IPSEC encrypted networks
  • Network configuration
  • Tripleo RPC and Notification Messaging Support
  • TripleO PTP (Precision Time Protocol) Support
  • TripleO Routed Networks Deployment (Spine-and-Leaf Clos)
  • TripleO - Ansible upgrade Worklow with UI integration
  • Adding OVS Hardware Offload to TripleO
  • AIDE - Intrustion Detection Database
  • Container Healthchecks for TripleO Services
  • Best practices for logging of containerized services
  • Deployment Plan Management changes
  • Sample Environment Generator
  • GUI logging
  • Tool send email with tripleo tempest results
  • Enable TripleO to Deploy Ceph via Ceph Ansible
  • Deriving TripleO Parameters
  • Add real-time compute nodes to TripleO
  • Modify TripleO Ironic Inspector to PXE Boot Via DHCP Relay
  • Tool to Capture Environment Status and Logs
  • Composable HA architecture
  • Deploying TripleO in Containers
  • GUI Deployment configuration improvements
  • GUI: Import/Export Deployment Plan
  • Enable deployment of alternative backends for oslo.messaging
  • PKI management of the overcloud using Certmonger
  • Step by step validation
  • Make tripleo third party ci toolset tripleo-quickstart
  • Composable Service Upgrades
  • Enable deployment of performace monitoring
  • TripleO Repo Management Tool
  • composable-undercloud
  • TripleO Undercloud NTP Server
  • Validations in TripleO Workflows
  • Metal to Tenant: Ironic in Overcloud
  • Add Adapter Teaming to os-net-config
  • Pacemaker Next Generation Architecture
  • TripleO LLDP Validation
  • Enable deployment of availability monitoring
  • Enable deployment of centralized logging
  • Adding OVS-DPDK to Tripleo
  • Adding SR-IOV to Tripleo
  • Undercloud Upgrade
  • TripleO Deployment Validations
  • Workflow Simplification
  • External Load Balancer
  • Puppet Module Deployment via Swift
  • Refactor top level puppet manifests
  • Library support for TripleO Overcloud Deployment Via Mistral
  • Library support for TripleO Overcloud Deployment
  • TripleO Quickstart
  • TripleO UI
  • Release Branch proposal for TripleO
  • Cinder HA
  • Remove merge.py from TripleO Heat Templates
  • Enable Neutron DVR on overcloud in TripleO
  • TripleO Review Standards
  • Backwards compatibility and TripleO
  • Haproxy ports and related services configuration
    • Problem Description
    • Proposed Change
    • Implementation
    • Dependencies
    • Testing
    • Documentation Impact
    • References
  • TripleO network configuration
  • Control mechanism for os-apply-config
  • Promote HEAT_ENV
  • SSL PKI
  • Triple CI improvements
  • Configurable directory for persistent and stateful data
  • TripleO Deploy Cloud Hypervisor Type
  • Dracut Deploy Ramdisks
  • os-collect-config local data source
  • Tuskar Plan REST API Specification
  • TripleO Template and Deployment Plan Storage
  • QuintupleO - TripleO on OpenStack
  • Unit Testing TripleO Projects
  • Virtual IPs for public addresses
  • Adding New CI Jobs
  • Bug tags
  • CI Team Structure
  • Expedited Approvals
  • TripleO First Principles
  • Patch Abandonment
  • Spec Review Process
  • TripleO Squads
  • Tech Debt Tracking

Page Contents

  • Haproxy ports and related services configuration
    • Problem Description
    • Proposed Change
      • Alternatives
      • Security Impact
      • Other End User Impact
      • Performance Impact
      • Other Deployer Impact
      • Developer Impact
    • Implementation
      • Assignee(s)
      • Work Items
    • Dependencies
    • Testing
    • Documentation Impact
    • References

OpenStack

  • Projects
  • OpenStack Security
  • Blog
  • g
  • News

Community

  • User Groups
  • Events
  • Jobs
  • Companies
  • Contribute

Documentation

  • OpenStack Manuals
  • Getting Started
  • API Documentation
  • Wiki

Branding & Legal

  • Legal Docs
  • Logos & Guidelines
  • Trademark Policy
  • Privacy Policy
  • OpenInfra CLA

Stay In Touch

The OpenStack project is provided under the Apache 2.0 license. Docs.openstack.org is powered by Rackspace Cloud Computing.