我想在我们托管在 VMware 上的服务器上设置一个高可用的 Hashicorp Vault 集群。
按照Hashicorp的文档,我发现最方便和简单的是使用Raft Storage Backend for a HA Vault Cluster。 https://developer.hashicorp.com/vault/tutorials/raft/raft-storage
当我尝试使用此文档进行安装时,我实际上看到此安装是在单个服务器上构建的,就好像它正在运行 4 个 Vault 节点一样。然而,我需要的是在不同的服务器上建立一个 HA 集群。当我浏览文件时,我感到非常困惑和不确定。 是否可以通过 OSS Vault 以多服务器方式安装 HA Cluster?还是需要企业执照?
我真的需要一个非常简单的 HA 集群。我将使用它在生产环境中为 Kubernetes 保密。我愿意接受您的所有建议和信息。
是的,支持你想做的事。请记住,使用开源解决方案时,只有主节点会处理请求。其他节点将它们收到的请求转发给主节点。 OSS Vault 还限制了您的自动解封选项。
这是一个完整的项目,但这里是让它运行的基本步骤。它可以扩展到任意数量的节点,它也可以在容器中工作。
cluster_addr
上的对等节点,并且它们可以到达负载均衡器。sys/health
以便它始终指向领导节点。VAULT_ADDR
指向本地节点,在每个节点上。在 VAULT_ADDR=http://localhost:8200
中加入 /etc/environment
是一种方法,ymmv.我假设你可以自动解封,但很可能这是不可能的(开源版本不支持 HSM,不支持云等)。
leader_api_addr
参数设置为负载均衡器的地址。
在这一点上,你的负载均衡器可能有点混乱,试图找到一个不存在的领导者。由于您的节点都未初始化,因此找不到它。别担心。
选择任何节点并使用命令行对其进行初始化。这一步对于安全很重要,但超出了这个(已经很广泛的)问题的范围。
然后,根据您的自动开封功能:
初始节点准备就绪后,您的负载均衡器将最终找到一个领导者并向其发送流量。这意味着剩余的未初始化节点将能够自动加入。他们将自动向领导节点请求挑战,以证明他们共享相同的解封机制。成功解决挑战将开始复制。除了看
vault operator raft list peers
,别无他法。
如果你不能自动加入,那么你不应该在你的配置中有
retry_join
节。您必须使用 vault operator raft join
手动加入剩余的节点。确保将请求发送到本地节点,而不是领导者。您在命令行上指定领导者地址。将 VAULT_ADDR
设置为本地节点在这里很重要。您可能会遇到证书名称的问题,因此您也可以将
127.0.0.1
硬编码为
/etc/hosts
中负载均衡器主机名的 IP。您还可以在负载均衡器配置中有两个条目:一个是循环法(依赖于 Vault 内部请求转发),另一个始终是领导者。日常使用 round-robin 地址,但 Raft join 任务使用“always-the-leader”地址。