gpt4 book ai didi

amazon-web-services - 如何在 EC2 上设置 ElasticSearch 节点,以便它们具有一致的 DNS 条目?

转载 作者:行者123 更新时间:2023-12-02 22:20:40 25 4
gpt4 key购买 nike

我在 AWS EC2 上的集群中有 3 个 ElasticSearch 节点。我的客户端应用程序使用连接池,并在其配置文件中拥有所有 3 个节点的公共(public) IP 地址。

我遇到的问题是 EC2 似乎偶尔会为这些实例重新分配公共(public) IP 地址。如果我停止并重新启动实例,它们也会发生变化。

我的应用程序实际上会保持在线,因为连接池将对三个已知 IP 地址进行轮询,但最终,这三个地址都会改变,应用程序将停止工作。

那么,我应该如何在 EC2 上设置 ElasticSearch 集群,以便即使实例更改 IP 地址,我的客户端也可以继续连接?

  • 我可以使用弹性 IP,但每个帐户限制为 5 个,我最终将拥有超过 5 个节点(不同的环境、开发、登台、测试等)
  • 我可以使用弹性负载均衡器,并在每个 ELB 后面放置一个节点,但这似乎是一个非常老套的解决方案,而且负载均衡器的使用不当。
  • 我可以在自己的域下创建自己的 DNS 条目,并在发现 IP 地址发生变化时更新 DNS 表,但如果没有人每天检查 IP,这似乎很容易出错。

  • 有没有我错过的选项?

    最佳答案

    我没有看到您正在描述的正在运行的实例上不断变化的 IP 地址,但是使用这种方法,它应该没关系:

    对所有内容使用 DNS 名称,而不是 IP 地址。

    假设您想通过 http://elastic.rabblerabble.com:9200 访问您的集群.

    为您的节点创建 EC2 实例。将它们命名为 elastic-0、elastic-1 和 elastic-2。

    在 EC2 负载均衡器中,创建一个名为“es-elb”的 ELB,该 ELB 按名称包括每个实例,端口转发为端口 9200。

    在 Route 53 中,为您的每个实例创建唯一的 CNAME,并将公共(public) DNS 作为值,
    和您的 ELB 的 CNAME:

    Name                                Type     Value
    elastic-0.rabblerabble.com. CNAME Public DNS of instance elastic-0
    elastic-1.rabblerabble.com. CNAME Public DNS of instance elastic-1
    elastic-2.rabblerabble.com. CNAME Public DNS of instance elastic-2
    elastic.rabblerabble.com. CNAME Public DNS of ELB es-elb

    安全、健康检查等方面还需要更多,但这不在问题的范围内。

    关于amazon-web-services - 如何在 EC2 上设置 ElasticSearch 节点,以便它们具有一致的 DNS 条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917169/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com