Vault 集成存储的自动驾驶(Autopilot)功能
自动驾驶功能可以自动化管理 Raft 集群。当前包含了 3 个主要功能:稳定服务器(Server Stabilization)、清理死服务器(Dead Server Cleanup)和状态 API(State API)。这三个功能是在 Vault 1.7 中引入的。
稳定服务器
稳定服务器功能通过安全地将新投票节点加入集群来保持 Raft 集群的稳定性。当一个新的投票节点加入现有集群时,自动驾驶会先将其添加为非投票节点,并等待预先配置的时间来监控它的健康状况。如果节点在期间保持健康,则该节点将被提升为投票节点。这个服务器稳定期限可以使用 server_stabilization_time
进行调整(见下文)。
清理死服务器
死服务器清理会自动从 Raft 集群中删除被认为不健康的节点,避免需要操作员人工干预。可以使用 cleanup_dead_servers
、dead_server_last_contact_threshold
和 min_quorum
(见下文)调整此功能的行为。
状态 API
State API 可以通过一次调用返回提供有关 Raft 集群中所有节点的详细信息。该 API 可用于监控集群健康状况。
跟随者(Follower)健康状态
跟随者节点的健康状态由两个因素构成:
- 它能否定期向领导节点发送心跳。使用
last_contact_threshold
参数调整(见下文)。 - 它能否及时处理来自领导节点的复制数据。使用
max_trailing_logs
参数调整(见下文)。
默认配置
默认情况下,使用 Vault 1.7 及以上版本的集群将启用自动驾驶功能,但是默认情况下不启用清理死服务器。使用旧版本 Vault 部署的 Raft 集群在升级后也将自动过渡到使用自动驾驶。
自动驾驶功能暴露了一个配置 API 来管理它的行为。自动驾驶初始化时使用以下默认值:
cleanup_dead_servers
-false
dead_server_last_contact_threshold
-24h
min_quorum
- 此选项没有默认值,并且当cleanup_dead_servers
设置为true
时,至少要将其设置为 3。max_trailing_logs
-1000
last_contact_threshold
-10s
server_stabilization_time
-10s
复制
性能辅助集群(Performance secondary clusters)拥有自己的自动驾驶配置,独立于主集群进行管理。
灾难恢复辅助集群(DR secondary clusters)也拥有自己的自动驾驶配置(从 Vault 1.8.0 开始),独立于主集群进行管理。 自动驾驶 API 使用 DR 操作令牌进行授权。