间歇性DynamoDB DAX错误:群集刷新期间出现NoRouteException

时间:2018-01-07 08:22:05

标签: aws-lambda amazon-dynamodb amazon-cloudformation amazon-dynamodb-dax

通过CloudFormation,我有一个设置,包括DynamoDB表,DAX,VPC,Lambdas(生活在VPC中),安全组(允许访问端口8111),等等。

一切正常,除非它没有。

我可以99%的时间从我的VPC和Lambdas访问DAX。除了偶尔他们得到NoRouteException错误...看似随机。这是CloudWatch针对单个Lambda函数的输出,每次执行完全相同的操作(DAX get)。注意它是如何工作的,失败的,然后再次工作:

  compile 'com.google.android.gms:play-services-safetynet:11.6.2'

任何想法可能是什么?

它可能不是VPC和安全访问,因为9/10次访问完全没问题。我有各种各样的CIDR IP,所以我不认为它与EIN配置有关...但还有什么?

我唯一的提示是初始错误,表明"在群集刷新期间捕获异常"。什么是"群集刷新"怎么会导致这些失败?

1 个答案:

答案 0 :(得分:1)

“群集刷新”是DAX客户端使用的后台进程,用于确保其对群集成员身份状态的了解与实际情况相符,因为DAX客户端负责将请求路由到群集中的相应节点。

通常刷新失败不是问题,因为群集状态很少更改(因此可以重用现有状态),但在启动时,客户端“阻塞”以获取初始成员资格列表。如果失败,则客户端无法继续,因为它不知道哪个节点可以处理哪些请求。

在Lambda冷启动期间创建VPC连接的ENI可能会有轻微延迟,这意味着客户端无法在初始化期间到达群集(因此,“无路由到主机”)。一个Lambda容器正在运行它应该不是问题(如果网络打嗝,你可能仍会在日志中得到异常,但它不应该影响任何东西)。

如果它只是在冷启动期间发生,稍微延迟后重试应该可以解决它。