0

spring-cloud-vault Lease 生命周期管理(续订和撤销)文档指出:

spring.cloud.vault.config.lifecycle.min-renewal:设置更新租约之前至少需要的持续时间。此设置可防止更新过于频繁。

spring.cloud.vault.config.lifecycle.expiry-threshold:设置过期阈值。租约在到期前更新配置的时间段。

我很难理解这两个配置选项之间的区别。举例说明这些参数中的每一个如何影响租约续订生命周期,这将是有帮助的。例如:在我看来,如果租约 TTL 为 10 分钟,并且到期阈值设置为 1 分钟,那么在获得租约 9 分钟后,spring-cloud-vault 将续订租约。但是,如果这是真的,那么min-renewal配置参数的目的是什么?

4

1 回答 1

1

到期阈值控制续订租约的续订时间。

例如:在我看来,如果租约 TTL 为 10 分钟,并且到期阈值设置为 1 分钟,那么在获得租约 9 分钟后,spring-cloud-vault 将续订租约。

你的理解是正确的。

什么事min-renewal

当您的租约剩余有效期少于 1 分钟(例如 30 秒)时,计算的续订时间将是过去 30 秒(或者现在,因为我们无法安排过去发生的事情)。min-renewal有助于消除续订请求。这是因为,在这种情况下,刷新会立即发生。

续订后, SecretLeaseContainer将安排报告租约有效期略小于 30 秒的后续续订。如果剩余租约期限少于expiry-threshold.

例子:

  • expiry-threshold: 60 秒
  • min-renewal: 10 秒

以下事件列表以时间相关性显示了假设 TTL 是最终的且无法扩展的时间发生了什么:

  • 10:00:00获得租约。TTL 10 分钟(600 秒)。在 9 分钟内安排续租(10 minutes TTL - 1 minute到期阈值 -> 9 minutes
  • 10:09:00续租。剩余 TTL 1 分钟(60 秒)。在 10 秒内安排租约续订(1 minute TTL - 1 minute到期阈值 -> 0 分钟。回退到10 seconds最小续订,因为这是较大的值 -> 10 seconds)。
  • 10:09:10续租。剩余 TTL 50 秒。在 10 秒内安排租约续订(50 seconds TTL - 1 minute到期阈值 -> -10 seconds。回退到 10 秒最小续订,因为这是较大的值 -> 10 秒)。
  • (继续直到到达10 seconds
  • 10:09:50续租。剩余 TTL 小于10 seconds. Min-renew 大于剩余的 TTL,租约被视为过期。

到期阈值大于最小续订的示例:

  • expiry-threshold: 5 分钟 (180 秒)
  • min-renewal: 6 分钟 (360 秒)

以下事件列表以时间相关性显示了假设 TTL 是最终的且无法扩展的时间发生了什么:

  • 10:00:00获得租约。TTL 10 minutes(600 秒)。在 6 分钟内安排续租(10 minutes TTL - 5 minute到期阈值 -> 5 minutes。Min-renewal 设置为 6 分钟以最多发出一次续订6 minutes-> 6 minutes

  • 10:06:00获得租约。TTL 4 minutes(360 秒)。在 6 分钟内安排租约续订(4 minutes TTL - 5 minute到期阈值 -> -1 minutes. 6 minutesmin-renewal,因为它大于剩余的 TTL,因此租约被视为已过期)

于 2020-01-08T17:09:44.353 回答