我使用Cloud Formation模板在AWS中创建3节点集群。 我在私有子网中使用EC2实例,在公有子网中使用' AssociatePublicIpAddress'配置已启用。配置安全组以允许ELB和ELB之间的必要通信。 EC2实例。在初始创建堆栈时,EC2实例能够加入群集并正常工作,但是当我停止EC2实例时以及稍后当我再次启动它时,节点不会加入群集。任何解决问题的方向都值得赞赏。
[更新]:以下是其他信息
ELB类型:AWS :: ElasticLoadBalancing :: LoadBalancer,方案为"面向互联网"
ASG:是的,使用ASG,MinSize = 1,MaxSize = 3,DesiredCapacity = 3
HealthCheck类型:尝试过ELB& EC2设定为ASG级别。
HealthCheck设置:在下面找到HealthCheck设置的详细信息。
"HealthCheck": {
"Target": "HTTP:7997/",
"HealthyThreshold": "2",
"UnhealthyThreshold": "10",
"Interval": "60",
"Timeout": "30"
}
答案 0 :(得分:0)
如果EC2实例位于私有子网中,则#p; - 它们可能无法连接到托管集群运行的所有必需AWS服务端点。 由于他们在第一次启动时加入,这意味着他们可以与DynamoDB实例通信。由于他们在停止/开始后没有加入很多事情可能是错的。 如果使用样本模板,行为就没有意义 - 如果你"停止"一个EC2实例应该终止然后由ASG重新启动。 如果没有发生这种情况,则无法正确配置与ML无关的内容。 几种调试方法。
1)暂时使用公共IP地址重新制作群集,但没有其他更改,看看是否能解决问题。 - >如果是这样,那么与AWS服务的连接可能是一个问题,您可能需要创建NAT实例或VPN端点。
2)确定停止实例的原因不会触发ASG终止它。 (为ASG启用云监视日志并查看其消息)
3)创建SNS主题,通过电子邮件或其他方法订阅它,并将SNS主题ARN提供给指定参数中的CF脚本。 这里有大量的细节,很难用其他方法找到。
4)查看所有EC2实例上的日志文件,包括系统日志(/ var / log / *)
5)检查DynamoDB表,看它是否在实例状态发生变化时进行更新。
6)检查在初始安装时创建的cron作业的行为 - 它应该轮询集群中所有节点的EC2状态并更新DynamoDB。