amazon-dynamodb - 是否可以使用 DynamoDB 存储后端横向扩展 Hashicorp Vault?
问题描述
我在 AWS 上使用 Vault 和 DynamoDB 后端。后端支持 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"
不进行领导者选举的情况下,这也应该有效。
为什么文档中没有建议这种架构?为什么它不应该工作?我是否缺少任何加密限制?
谢谢你
解决方案
它是 Vault Enterprise 的一项功能。有了它,您可以设置一个主集群和尽可能多的“辅助”集群,也就是众所周知的性能副本。每个集群都有自己的存储和解封机制。因此,您可以在 Dynamo DB 上拥有一个集群,而在 Raft 上拥有另一个集群。如果两者都在 Dynamo DB 上,那么您将需要一个 Dynamo DB 表。
但请记住,性能副本将始终将写入操作转发到主集群。写入操作会影响 Vault 的全局状态。从这个意义上说,POST/transit
不被视为写入操作。
另一种可能性是将您的 kv 存储安装在本地(使用-local
标志)。然后,即使安装在性能副本上,它也会像主服务器一样运行,代价是无法复制到另一个集群。
最后一点:DR 集群是任何集群的精确副本。每个集群,无论是主集群还是副本集群,都可以拥有其 DR 集群。
推荐阅读
- express - 快速错误处理无法正常工作
- amazon-web-services - 如何使用 terraform 模板文件为 ec2 user_data 设置环境变量
- xcode - 如何在 Swift 5 中为基于单元格的 NSTableVew 中的单个行着色
- python - discord.py channel.history 从工作频道和时间返回 []
- python - 存储我的网络应用程序用户上传的 csv 数据,然后执行熊猫分析并使用烧瓶显示它们的最佳方法是什么?
- postgresql - 根据关系在数据库中插入数据
- angular - Angular 11 在页面加载时按值在 html 表中进行下拉选择失败
- mariadb - mariadb/mysql:如何将 BLOB 的/UNPACK 部分转换为整数或双精度等
- javascript - 如何获取 datalist 选项的值并将其分配给另一个元素?
- django - 将可点击的链接添加到管理页面 List_view