gpt4 book ai didi

javascript - 使用CoreOS和多个Docker容器构建应用程序的正确方法

转载 作者:行者123 更新时间:2023-11-30 00:16:45 25 4
gpt4 key购买 nike

我正在尝试正确设置一套当前作为Docker容器构建的应用程序和服务。所有这些都与整个应用程序/服务/生态系统有关。

这些服务包括以下方面:

  • 公共(public)API服务器
  • 数据存储(rethinkDB)
  • Web应用程序1
  • Web应用程序2
  • 公共(public)论坛
  • 微服务1
  • Micro服务2
  • 等....

  • 这将托管在云服务或可能的多种服务(例如DigitalOcean)上。

    CoreOS似乎是接受这种哲学的最集成的方式,但是我不确定我是否了解正确设置堆栈的正确方法。

    使用的主要语言是JavaScript(nodeJS)。

    我面临的问题和问题是:

    1)一些Web应用程序需要映射到它们自己的子域(nginx反向代理作为容器,etcd的内置解决方案kubernetes ???)

    2)RethinkDB需要在所有集群中可靠且近乎即时地写入信息(这与游戏有关,因此DB的不同步会引起问题)。在coreos群集中是否可能?

    3)我可以在一个单一的服务器上托管吗?

    那里有一些好的资源吗?我已经阅读了文档中的所有文档,但是快速变化且自以为是的帖子并未就如何开始和解决一些明显的问题给出明确的答案。任何帮助将非常感激。

    最佳答案

    好问题!我同意,这真令人困惑。通过将生态系统分解为单独的峰值和目标,我一直在探索生态系统方面取得了一些进展。

    咨询很危险,但是无论如何我们还是要走。

    “多重云”-除非您要运行一堆VPN链接或要支持的用例,否则我可能会坚持使用。如果要连接两个云,则可以。我们在工作中运行这种设置(科罗拉多+亚马逊)。很好,尽管您必须管理隧道连接。如果这是一个单独的应用程序,我可能只是将其粘贴在DO中,并将auth /公钥用于单个服务。

    例如: digital ocean 中的服务器默认情况下,对S3使用身份验证以存档/托管/镜像。无需隧道,S3是公共(public)的。

    Digital Ocean具有内置的coreos支持,但没有真正的专用网络。这意味着您需要使用iptables保护自己,然后可能依赖法兰绒。更多here from digital ocean

    您的其他问题:

  • 带有coreos的子域的好例子:this whole video series is great
  • 您的数据库将控制锁定。我认为这与coreos没有任何关系。 Rethinkdb使用网络作为其分布式功能,它不知道或不在乎它的实际内容。但是,还有其他需要考虑的事情,更多与上面的网络/法兰绒有关。您需要能够链接rethinkdb节点。因此,这更多是配置/教程问题,而不是架构/安全问题。我将很快写一篇博客文章,介绍如何使用docker运行rethinkdb玩具集群。它应该起到相同的作用。
  • 您可能不应该托管所有内容,但是我不知道您在想什么负载/流量/需求/任何东西。尽管已安装了舰队或其他集群编排工具,但不要紧!想象一堆插槽。

  • 上面链接的coreos网站或youtube系列上有更好的图像:
    machine 1
    [ ] [ ] [ ] [ ] [ ] [ ]

    machine 2
    [ ] [ ] [ ] [ ]

    machine 3
    [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]

    容器占用了计算机上的插槽。您并不真正在乎机器,它们只是资源。您可以通过一些高级的声明性群集编排工具来控制它。这是集群编排的最终游戏的全部内容,然后您可以继续执行更高的目标,例如自动缩放等。

    当然,您需要适当的基础架构,并且您的应用程序必须能容忍这种类型的环境(没有经过ips硬编码,使用ENV变量等)。

    将其分成大块。不要尝试设计一切。列出工具及其工作/全局 View /解决问题的列表。
  • Digital Ocean:与coreos支持并置(主要是图像和云配置模板)
  • 在以下情况下,您已经完成并成功完成了:您具有运行coreos和etcd的最少奇数个节点(3/5/7 / +)。
  • CoreOS:运行docker镜像并内置用于实现更高级别目标的工具,例如集群业务流程和服务发现
  • 在以下情况下,您已完成并成功完成此操作:Etcd成功启动,并且您可以查看通过Fleet的机器列表。对于您想要的自动子域功能:动态负载平衡正在进行中(您可以扩展并基本上DNS使用react)。您还知道何时完成此操作,因为随之而来的任何新应用程序或微服务都很愚蠢,易于支持。
  • Docker:一种容器格式-您的应用程序必须已经采用这种方式。您可能还需要工具来重建它们。
  • 在以下情况下完成:图像将自己从提交重建为主图像,并在具有docker支持的CI服务中进行测试(如果需要)
  • 舰队:声明式集群编排(kubernetes)
  • 在以下情况下完成:您可以使用Flectctl或所需的任何工具来明确控制应用程序的规模(而不是通过隐式的Ruben Goldberg机械)。 Memcached!在5个节点上运行!走!

  • 我希望这是有帮助的。我看到这是一个古老的问题。也许你已经前进了。我只是想自己回答这个问题。也许其他人也可以纠正/帮助/扩大我的答案。

    关于javascript - 使用CoreOS和多个Docker容器构建应用程序的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34430922/

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