我正在学习分布式架构课程。 课程参与者分成几组。 每个小组都必须开发一个MMORPGtypes的游戏机并设置基础设施。 讲师有一个脚本,每小时根据我们提供的IP检查游戏的可用性。 在课程结束时,所有小组都根据游戏的正常运行时间百分比获得积分。
我的团队已经selectDigitalOcean作为IaaS,我们正在Docker容器中运行我们的游戏。 我们已经经历过DigitalOcean重新启动托pipe我们游戏的实例(没有预先警告),不幸的是,我们没有任何脚本来重启Docker容器。
我们小组提供给脚本的IP直接连接到DigitalOcean上的液滴。 这意味着,如果机器出于任何原因停机,我们不会采取任何措施。 那很糟糕 。
我一直在寻找解决scheme,并find了两个:
虚拟IP
现在,纠正我,如果我错了 – 但这实际上允许多台机器尝试获得一个IP的所有权。 所以如果一台机器死了,其他人可以无情地接pipe。
这似乎是最好的解决scheme,但DigitalOcean不支持它(据我所知)。
DNS故障转移
您提供了多个A型logging到DNS服务器,它将持续监视您的服务器。 如果其中一台服务器发生故障,并且DNS服务器收到parsing请求,它将以一个有效的IP进行响应。 注意事项是TTL和caching。
还有什么其他的select可以为我工作? 是否有可能configuration虚拟IP与其他供应商,并与我目前的供应商(DigitalOcean)一起工作?
关于DNS故障转移,您应该了解,正常的DNS服务器没有这个方法。 他们不监视服务器,但可以简单地提供多个IP来响应请求(称为DNS循环)。 客户随机挑选一个,如果该主机closures,则可能会重试另一个。 这更多的是愚蠢的负载平衡方法。 某些DNS提供商(例如Amazon Route53)提供主动监控,这可以像您所描述的那样工作。 见http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html
但是,如果我理解正确,你提供了一个IP地址给你的老师,而不是一个主机名。 没有主机名称,DNS方法将不起作用,因为DNS从不查询。 IP地址严重限制了您的select。
我对虚拟IP的经验非常有限,但是我认为你是对的,DO不支持它们。
由于该脚本每小时检查一次,通过Docker重新启动策略(如迈克尔·汉普顿(Michael Hampton)所build议的)可以确保容器在重启时自动启动。 从你的问题,我认为重新启动很less发生,1-2分钟的停机时间不太可能重叠脚本的监视窗口。