【问题标题】:How to identify a master node in an AWS cluster如何识别 AWS 集群中的主节点
【发布时间】:2014-09-17 14:11:48
【问题描述】:
我想在 AWS 企业中创建一个集群系统。集群将有一个主节点和几个从节点。从站将使用 TCP/IP 连接连接到主站。我们组织的 AWS 企业中可能有多个集群(例如 dev1、dev2、qa1、qa2 等)。
对于这种特殊技术,从属节点必须以某种方式发现主节点的 IP 地址。这样做的最佳做法是什么?我有几个想法:
- 将整个集群放在某种经过 NAT 的子网中,并让主节点始终位于已知地址(例如 192.168.0.1)
- 每个集群都需要某种域名并使用 DNS。
- 使用 Eureka 而不是 DNS。
可能还有更多想法。我对 AWS 有点陌生,但对网络拓扑并不陌生,所以我可能走错了方向。 #1 关于声音是最容易做的事情。还有其他想法吗?
【问题讨论】:
标签:
amazon-web-services
dns
cluster-computing
nat
【解决方案1】:
您可以在 EC2 实例上设置任意键值对。因此,例如,您可以在创建实例时使用 class=master 和 class=slave 标记您的实例。然后,其他实例可以使用 EC2 API(使用AWS CLI,或AWS SDKs 之一)列出具有特定标签的实例并获取 IP 地址。以下是使用 AWS CLI 的示例:
aws ec2 describe-instances --filter Name=tag:class,Values=master \
--query Reservations[*].Instances[*].PrivateIpAddress --output text
这将返回主服务器的私有 IP 地址。
【解决方案2】:
我见过的另一种方法是让主节点将自己的 IP 写入 S3 存储桶的文件中,然后让节点从同一个文件中读取主节点的 IP。或者它可以使用数据库来完成,所有参与者都可以访问的任何存储介质/位置都可以。