搜索
  • 软件
    • 概述
    • OpenStack 组件
    • SDK
    • 部署工具
    • OpenStack 地图
    • 示例配置
  • 用例
    • 生产环境中的用户
    • Ironic 裸机
    • 边缘计算
    • 电信与 NFV
    • 科学与 HPC
    • 容器
    • 企业
    • 用户调查
  • 活动
    • Open Infrastructure 首脑会议
    • 项目团队聚会
    • OpenDev
    • 社区活动
    • OpenStack 和 OpenInfra 日
    • 首脑会议视频
  • 社区
    • 欢迎!从这里开始
    • OpenStack 技术委员会
    • 演讲者局
    • OpenStack Wiki
    • 获得认证 (COA)
    • 招聘
    • 营销资源
    • 社区新闻
    • Superuser 杂志
    • OpenInfra 基金会支持组织
    • Open Infrastructure 基金会 (OpenInfra 基金会)
  • 市场
    • 培训
    • 发行版和设备
    • 公共云
    • 托管私有云
    • 远程管理私有云
    • 咨询和集成商
    • 驱动程序
  • 博客
  • 文档
  • 加入
    • 注册基金会会员
    • 赞助基金会
    • 更多关于基金会的信息
  • 登录

Haproxy 端口和相关服务配置

Haproxy 端口和相关服务配置¶

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

当前规范提供了通过 haproxy 提供 HA 端点的选项。

问题描述¶

当前的 tripleo 部署方案将服务绑定到 0.0.0.0:标准端口,并配置 stunnel 监听 SSL 端口。

这种配置存在一些缺点,并且在 HA 环境下无法正常工作,原因如下

  • haproxy 无法绑定到 <vip_address>:<service_port> - OpenStack 服务绑定到 0.0.0.0:<service_port>

  • 服务端口在许多地方都硬编码(any_service.conf, init-keystone),因此更改它们并从 heat 进行配置将非常麻烦

  • 非 SSL 端点可以从本地主机外部访问,这可能会让用户感到困惑,并在我们希望该服务仅在 SSL 上运行时暴露他们面临不安全的连接。我们希望默认提供 SSL,但我们无法真正阻止它。

提议的变更¶

我们将绑定 haproxy、stunnel (ssl)、OpenStack 服务到具有不同 IP 地址设置的端口。

HAProxy 将仅绑定到 VIP 地址。

如果使用 stunnel,它将被绑定到控制器 ctlplane 地址。

OpenStack 服务将绑定到 localhost 以进行仅 SSL 配置,并绑定到 ctlplane 地址以进行非 SSL 或混合模式配置。它们将绑定到标准的非加密端口,但绝不会绑定到任何端口上的 0.0.0.0。

我们将努力使仅 SSL 成为默认选项。

一个示例,使用 horizon 在混合模式下(HTTPS 和 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

第二个示例,使用 horizon 在 HTTPS 仅模式下

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

替代方案¶

有几种替代方案,但它们无法涵盖所有安全或可扩展性要求

选项 1:在 0.0.0.0 上为 haproxy、stunnel、OpenStack 服务分配不同的端口

  • 需要额外的防火墙配置

  • 非 SSL 服务端点存在安全问题

  1. haproxy bind :80

    listen horizon server node_1 node_address:8800

  2. stunnel accept :8800 connect :8880

  3. horizon bind :8880

选项 2:仅使用 haproxy SSL 终止不是最优的

  • 1.5 仍然处于开发阶段 -> 可能存在稳定性问题

  • 我们需要将其纳入受支持的发行版

  • 这也意味着 haproxy 和实际服务之间没有 SSL

  • 非 SSL 服务端点存在安全问题

  1. haproxy bind vip_address:80

    listen horizon server node_1 node_address:80

  2. horizon bind node_address:80

选项 3:在负载均衡器之前添加额外的 SSL 终止

  • 在当前配置中没有用,因为负载均衡器(haproxy)和 OpenStack 服务安装在同一节点上

安全影响¶

  • 如果仅运行 SSL,则只有受 SSL 保护的端点可用。

  • 最小的防火墙配置

  • 不转发解密流量通过非 localhost 连接

  • 控制节点被攻破会暴露所有外部流量(未来和可能过去的)到解密和/或欺骗

其他最终用户影响¶

多个服务将监听同一端口,但如果用户(操作员)了解一些上下文,这将很容易理解。

性能影响¶

方法之间没有区别。

其他部署者影响¶

无

开发人员影响¶

无

实现¶

我们需要让服务配置 - nova 等 - 知道在每个服务的基础上在哪里绑定。当前方法在模板中使用逻辑来选择 localhost 和 my_ip。如果我们将选择移动到 Heat,这将变得更加简单(读取绑定地址,如果设置则使用它,否则不使用)。

我们考虑将 connect_ip 概念扩展到每个服务的基础。现在,所有服务都暴露于 SSL 和纯文本,因此在只有一些服务是纯文本之前,这可行 - 但我们预计这会很快发生。

负责人¶

主要负责人

dshulyak

工作项¶

tripleo-incubator: * 构建带有 haproxy 元素的 overcloud-control 镜像

tripleo-image-elements

  • openstack-ssl 元素重构

  • 重构服务配置以监听 127.0.0.1 / ctlplane 地址:horizon apache 配置、glance、nova、cinder、swift、ceilometer、neutron、heat、keystone、trove

tripleo-heat-templates: * 将 haproxy 元数据添加到 heat-templates

依赖项¶

无

测试¶

CI 测试依赖项

  • 在 overcloud 脚本中使用 VIP 端点

  • 在添加 haproxy 相关元数据到 heat 模板之前,将 haproxy 元素添加到 overcloud-control 镜像(可能启用统计信息)

文档影响¶

  • 更新孵化器手册

  • 更新元素 README.md

参考资料¶

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

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

此页面上次更新时间:2014-07-18 22:18:10
Creative Commons Attribution 3.0 License

除非另有说明,此文档根据 知识共享署名 3.0 许可 授权。请参阅所有 OpenStack 法律文件。

发现错误?报告错误
  • 指南
  • 安装指南
  • 用户指南
  • 配置指南
  • 操作和管理指南
  • API 指南
  • 贡献者指南
  • 语言
  • Deutsch (德语)
  • Français (法语)
  • Bahasa Indonesia (印尼语)
  • Italiano (意大利语)
  • 日本語 (日语)
  • 한국어 (韩语)
  • Português (葡萄牙语)
  • Türkçe (土耳其语)
  • 简体中文 (Simplified Chinese)

tripleo-specs 0.0.1.dev402

  • 解耦 TripleO 任务
  • Zed 占位符
  • 使用 Task-Core 和 Directord 统一 TripleO 编排
  • TripleO Ceph Ingress Daemon 集成
  • TripleO Ceph Ganesha 集成用于 Manila
  • 改进 tripleoclient 中 ansible 调用日志
  • 清理容器健康检查
  • 支持无 Keystone 的 Undercloud(基本认证或无认证)
  • 将 TripleO 仓库迁移到独立的发布模型
  • TripleO 仓库单一来源
  • 默认部署整个磁盘镜像
  • 所有部署的临时 Heat Stack
  • 禁用 Undercloud 中的 Swift
  • 混合操作系统版本
  • TripleO Ceph
  • TripleO Ceph 客户端
  • TripleO Ceph Ganesha 集成用于 Manila
  • 安装和配置 FRRouter
  • 网络数据格式/模式 (v2)
  • 网络数据 v2 - 节点端口和节点网络配置
  • 简单的容器生成
  • 启用 TripleO 通过 Ansible 部署 Dell EMC PowerFlex 软件定义存储
  • 用 Ansible 替换 Mistral
  • 使用 Ansible Inventory 进行扩展
  • tripleo-operator-ansible - 用于与 TripleO 交互的 Ansible 角色和模块
  • 将 tripleo-heat-templates 中的证书管理移动
  • 使用 Minion 扩展 Undercloud
  • 使用独立安装程序改进 upgrade_tasks CI 覆盖率
  • Overcloud 的飞行中验证
  • 在没有 Nova 和 Glance 的情况下配置节点
  • 将 os_tempest 角色与 TripleO 集成
  • Podman 支持容器管理
  • TripleO - 从容器安全地生成容器的模式
  • TripleO 路由网络部署 (Spine-and-Leaf Clos)
  • 包括操作系统升级的主要升级
  • 在 python-tripleoclient 中提供通用的验证框架
  • TripleO 零足迹安装程序
  • 添加对自定义 TripleO 验证的支持
  • 为 rsyslog 启用记录到 stdout/journald
  • TripleO 将控制平面与计算/存储分离的支持
  • 支持 Barometer(软件快速路径服务质量指标)服务
  • TripleO 用于测试 HA 部署的工具
  • TripleO 远程日志记录
  • 用于升级基于 TripleO 部署的统一工具
  • 支持 Vitrage(根本原因分析,RCA)服务
  • UI 自动化测试
  • 快速转发升级
  • 实例高可用性
  • IPSEC 加密网络
  • 网络配置
  • Tripleo RPC 和通知消息支持
  • TripleO PTP(精密时间协议)支持
  • TripleO 路由网络部署 (Spine-and-Leaf Clos)
  • TripleO - 带有 UI 集成的 Ansible 升级工作流
  • 将 OVS 硬件卸载添加到 TripleO
  • AIDE - 侵入检测数据库
  • TripleO 服务的容器健康检查
  • 容器化服务的日志记录最佳实践
  • 部署计划管理更改
  • 示例环境生成器
  • GUI 日志记录
  • 发送带有 tripleo tempest 结果的电子邮件的工具
  • 启用 TripleO 通过 Ceph Ansible 部署 Ceph
  • 派生 TripleO 参数
  • 将实时计算节点添加到 TripleO
  • 修改 TripleO Ironic Inspector 以通过 DHCP 中继进行 PXE 启动
  • 捕获环境状态和日志的工具
  • 可组合的 HA 架构
  • 在容器中部署 TripleO
  • GUI 部署配置改进
  • GUI:导入/导出部署计划
  • 启用 oslo.messaging 的替代后端部署
  • 使用 Certmonger 管理 Overcloud 的 PKI
  • 逐步验证
  • 将 tripleo 第三方 ci 工具集 tripleo-quickstart
  • 可组合服务升级
  • 启用性能监控的部署
  • TripleO 仓库管理工具
  • composable-undercloud
  • TripleO Undercloud NTP 服务器
  • TripleO 工作流中的验证
  • Metal to Tenant:Overcloud 中的 Ironic
  • 将 Adapter Teaming 添加到 os-net-config
  • Pacemaker 下一代架构
  • TripleO LLDP 验证
  • 启用可用性监控的部署
  • 启用集中式日志记录的部署
  • 将 OVS-DPDK 添加到 Tripleo
  • 将 SR-IOV 添加到 Tripleo
  • Undercloud 升级
  • TripleO 部署验证
  • 工作流简化
  • 外部负载均衡器
  • 通过 Swift 部署 Puppet 模块
  • 重构顶级 puppet 清单
  • 用于通过 Mistral 部署 TripleO Overcloud 的库支持
  • 用于部署 TripleO Overcloud 的库支持
  • TripleO 快速入门
  • TripleO UI
  • TripleO 的发布分支提案
  • Cinder HA
  • 从 TripleO Heat 模板中删除 merge.py
  • 在 TripleO 中为 overcloud 启用 Neutron DVR
  • TripleO 审查标准
  • 向后兼容性和 TripleO
  • Haproxy 端口和相关服务配置
    • 问题描述
    • 提议的变更
    • 实现
    • 依赖项
    • 测试
    • 文档影响
    • 参考资料
  • TripleO 网络配置
  • os-apply-config 的控制机制
  • 推广 HEAT_ENV
  • SSL PKI
  • Triple CI 改进
  • 可配置的用于持久和有状态数据的目录
  • TripleO 部署 Hypervisor 类型
  • Dracut 部署 Ramdisks
  • os-collect-config 本地数据源
  • Tuskar Plan REST API 规范
  • TripleO 模板和部署计划存储
  • QuintupleO - TripleO on OpenStack
  • 单元测试 TripleO 项目
  • 公共地址的虚拟 IP
  • 添加新的 CI 作业
  • Bug 标签
  • CI 团队结构
  • 加急审批
  • TripleO 第一性原理
  • 补丁放弃
  • 规范审查流程
  • TripleO 小队
  • 技术债务跟踪

页面内容

  • Haproxy 端口和相关服务配置
    • 问题描述
    • 提议的变更
      • 备选方案
      • 安全影响
      • 其他终端用户影响
      • 性能影响
      • 其他部署者影响
      • 开发者影响
    • 实现
      • 负责人
      • 工作项
    • 依赖项
    • 测试
    • 文档影响
    • 参考资料

OpenStack

  • 项目
  • OpenStack 安全
  • 博客
  • g
  • 新闻

社区

  • 用户组
  • 活动
  • 招聘
  • 公司
  • 贡献

文档

  • OpenStack 手册
  • 入门
  • API 文档
  • Wiki

品牌和法律

  • 法律文件
  • 徽标和指南
  • 商标政策
  • 隐私政策
  • OpenInfra CLA

保持联系

OpenStack 项目根据 Apache 2.0 许可 提供。Docs.openstack.org 由 Rackspace 云计算 提供支持。