【问题标题】:Is possible to scale out Hashicorp Vault using DynamoDB storage backend?是否可以使用 DynamoDB 存储后端横向扩展 Hashicorp Vault?
【发布时间】:2019-07-30 06:29:44
【问题描述】:

我在 AWS 上使用带有 DynamoDB 后端的 Vault。后端支持HA。

storage "dynamodb" {
  ha_enabled = "true"
  region     = "us-west-2"
  table      = "vault-data"
}

阅读 HA 概念文档: https://www.vaultproject.io/docs/concepts/ha.html

为了实现高可用性,其中一个 Vault 服务器节点会在数据存储中获取一个锁。然后成功的服务器节点成为活动节点;所有其他节点成为备用节点。此时,如果备用节点收到请求,它们将根据集群的当前配置和状态转发请求或重定向客户端——详细信息请参见下面的部分。由于这种架构,HA 无法提高可扩展性。

我对在 ELB 后面拥有一组 EC2 实例不感兴趣,其中只有一个实例表现得像主实例并与 DynamoDB 对话。

我想运行 N 个运行 Vault 的 Ec2 实例,它们独立于 DynamoDB 进行读写。

由于 DynamoDB 支持从多个 EC2 实例读取/写入,我希望能够同时从多个实例中解封 Vault 并执行读取和写入操作。即使使用ha_enabled = "false",这也应该可以工作,无需进行领导选举。

为什么文档中没有建议这种架构?为什么它不应该工作?我是否缺少任何加密限制?

谢谢

【问题讨论】:

  • 问得好,你设置成功了吗?
  • 我在 2019 年向阿姆斯特丹 HashiConf EU 的 Vault 开发人员提出了这个问题。他确认多个 Vault EC2 实例必须同时访问后端 DynamoDB 存储,并且这样做可能会导致意想不到的问题。我没有收到足够的信息来详细解释限制的来源。建议的解决方案是使用带有支持水平可扩展性功能的 Vault Enterprise。我仍然很想了解限制的来源。

标签: amazon-dynamodb hashicorp-vault


【解决方案1】:

这是 Vault Enterprise 的一项功能。有了它,您可以设置一个主集群和尽可能多的“辅助”集群,也就是众所周知的性能副本。每个集群都有自己的存储和解封机制。因此,您可以在 Dynamo DB 上拥有一个集群,而在 Raft 上拥有另一个集群。如果两者都在 Dynamo DB 上,那么您将需要一个 Dynamo DB 表。

但请记住,性能副本将始终将写入操作转发到主集群。写入操作会影响 Vault 的全局状态。从这个意义上说,对/transit 的 POST 不被视为写入操作。

另一种可能性是将您的 kv 存储安装在本地(使用 -local 标志)。然后,即使挂载在性能副本上,它也会像主节点一样运行,代价是无法复制到其他集群。

最后一点:DR 集群是任何集群的精确副本。每个集群(无论是主集群还是副本集群)都可以拥有其 DR 集群。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2016-03-05
    • 2016-04-22
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2012-09-05
    相关资源
    最近更新 更多