HAProxy 改进

日期:

2015-09-04 14:00

标签:

haproxy,生产环境使用

可以通过添加一些更改来改进 HA Proxy

  • 使其真正实现 HA

  • 允许配置界面轻松适应负载

  • 仅部署清单中部署的服务配置。

  • 改进后端配置,例如 galera,或调整计时器值以提高效率

https://blueprints.launchpad.net/openstack-ansible/+spec/role-haproxy-v2

问题描述

社区已经提出了一些功能需求

  • HAProxy 的 HA

  • 启用统计信息并改进 HAProxy 的可管理性

  • 限制 HAProxy 的不必要的检查

提议的变更

  • 为 HAProxy 实现 keepalived

  • 将标准的 HAProxy 角色更改为添加管理工具(socket 和 stats 上的 admin 级别)

  • 删除 vars/ 文件夹中的大型 HAProxy 变量

  • 按组件提供此信息(在 group_vars 中),并允许用户覆盖(user_variables 或按组件)。然后 delegate 将配置委托给 HAProxy 主机。

  • 引入一个跳过变量,如果您希望在某些组件上部署 HAProxy,但在其他组件上不部署

备选方案

等待 ansible2 具有在每个任务/ playbook 的基础上对字典进行变量合并/清理的功能。

Playbook/Role 影响

playbook haproxy-install.yml 将被完全覆盖。

由于 delegate to,HAProxy playbook 的运行时间会更长。

升级影响

无。

安全影响

无变化

性能影响

通过以下方式提高性能

  • 减少对后端的无用检查

  • 添加一种简单的方法来设置后端计时器的自定义值。

最终用户影响

无变化

部署者影响

  • 默认配置无变化

  • 部署者可以覆盖每个组件的 haproxy_service_configs

开发人员影响

乍一看没有影响。

依赖项

实现

负责人

工作项

测试

  • 此更改是否会影响 gating 的方式?

如果合并,haproxy-install playbook 将会发生变化。

  • 此更改是否可以基于 每次提交 进行测试?

  • 考虑到 OpenStack Infra 中实例大小的限制(8GB Ram,vCPUs <= 8),测试是否可以在资源受限的环境中运行?

无变化

  • 鉴于当前的限制(可用的特定硬件/软件配置),此测试是否无法进行?如果是这样,是否有缓解计划,以便在第三方测试、gate 增强等方式下测试此更改?

  • 如果服务不是 OpenStack 特定的,我们如何测试更改?

运行新的 playbook

文档影响

对于那些更改 HAProxy 默认配置的人(当前未记录),此更改将修改他们当前的配置,因此需要记录。跳过变量和按组件覆盖的说明也应该添加到文档中。

参考资料