AWS ECS/EC2下com.hazelcast:hazelcast-all:4.0.2发现策略配置失败
问题触发原因
该错误是Hazelcast 4.x与3.x版本的不兼容变更导致,直接沿用3.x的配置、权限体系就会触发初始化失败,具体原因如下:
- 配置字段破坏性变更
Hazelcast 4.0+对AWS发现策略的配置参数做了不兼容调整,3.x版本支持的securityGroupName、tagKey、tagValue等单值参数,在4.x中已被替换:- 原
tagKey+tagValue组合改为tags参数,格式为键1=值1;键2=值2 - 原
securityGroupName改为security-group-name,部分场景下需要新增aws.前缀
旧版本配置字段无法被4.x的发现策略识别,会直接导致配置解析失败。
- 原
- IAM权限校验逻辑升级
4.x版本的AWS发现插件新增了多个API调用要求,除3.x必需的ec2:DescribeInstances权限外,还需要额外开通ec2:DescribeNetworkInterfaces、ec2:DescribeSubnets等权限,且4.x无权限容错逻辑,只要缺失任意必填权限就会终止初始化,而3.x在权限不全时可降级运行,不会抛出致命错误。 - 依赖类加载冲突
Hazelcast 4.x开始,AWS发现插件与核心包的版本绑定更严格,如果你的项目中间接引入了其他版本的hazelcast-aws依赖(比如Spring Boot自动配置携带的旧版本插件),就会和hazelcast-all:4.0.2内置的插件类冲突,导致发现策略无法正常初始化。 - 超时计算逻辑调整
从日志可见你的AWS连接超时配置为120秒,4.x版本的超时计算会将重试、读取时间全部计入总超时阈值,如果当前VPC环境访问AWS API的延迟较高,总耗时超过阈值就会触发初始化中断,而3.x的超时为单次请求独立计算,相同网络环境下可以正常完成初始化。
内容的提问来源于stack exchange,提问作者Sanka
相关产品推荐
相关产品推荐

