【问题标题】:How does CoreOS load balancing work out there in the wild on a cloud service?CoreOS 负载平衡是如何在云服务中实现的?
【发布时间】:2015-05-15 12:45:02
【问题描述】:

假设我在某处的某个云服务上部署了一个 CoreOS 集群。

现在我有 4 台机器运行一个 node.js 应用程序,该应用程序遵循所有 12 因素原则,还有一台机器使用 Couchbase。

在这种情况下负载平衡如何工作?作为负载均衡器,一个 ip 最终不会耗尽汁液,还是这几乎是不可能的?我应该将 DNS 指向哪里才能使其正常工作?

过去我有一个 NGINX 的 IP,然后以循环方式引导传入的请求。

这如何与云服务上的 CoreOS 一起工作?

【问题讨论】:

    标签: cloud cluster-computing load-balancing coreos


    【解决方案1】:

    有不同的方法来完成这样的任务。一般来说,在您的基础设施、集群或数据中心之前应该有云服务负载均衡器。您将处理两层或三层架构。

    DNS 指向面向云互联网的负载均衡器,它在任何情况下都管理客户端层。对于 AWS,它必须通过 CNAME 记录。

    每个层级的自动可扩展组可能会降低基础架构可用性降低的风险。然后,通过 cloud-config 配置 Nginx 实例,以防需要从引导阶段进行配置。

    1. 两层架构(您的场景)

      • 您需要什么:
        1. Nginx 实例集群(客户端层)
        2. 数据库集群(数据层)

      每个 Nginx 实例都侦听一个 HTTP 端口并使用上游进行路由(取决于您的 NodeJS 应用程序分布)。服务发现是通过 etcd 实现的,使用 Registrator + SkyDNS / Consul 或 Weaver,因此 Nginx 解析器可以替换为此类工具提供的内部 DNS,而不是上游。

    2. 三层架构

      • 您需要什么:
        1. Nginx 实例集群(客户端层)
        2. 应用集群(业务层)
        3. 数据库集群(数据层)

      同样适用于 Nginx 实例和两层,尽管客户端层解决了业务层应用程序(使用内部云负载均衡器)以及本地包含的单元。业务层的行为类似于两层架构中的客户端之一,但要考虑安全组的正确配置。

    对于这两种情况,数据层形成一个独立的区域 (SkyDNS) 或数据中心 (Consul)。此外,您最终可以跳过 Nginx,但您需要在安全组中公开打开更多端口。

    从以下方面收集知识:

    我能够构建:

    TODO:领事版。虽然,有 SkyDNS 和 Ambassadord 的例子。

    参考资料:

    ** 让我知道你的 cmets。

    【讨论】:

    • 哇,很好的答案。我需要一些时间来消化这一切,现在有点过头了。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多