【问题标题】:Building low power HA cluster for self hosted services/blog为自托管服务/博客构建低功耗 HA 集群
【发布时间】:2016-12-10 11:00:08
【问题描述】:

我想建立一个基于低功耗架构 (arm) 的 HA swarm / kubernetes 集群。 我的主要目标是了解 HA Web 集群的工作原理,它如何对故障做出反应并从中恢复,以及扩展的难易程度。

我想在它以及其他服务(git / 自定义服务 / 家庭自动化 / CI 服务器 / ...)运行后托管一个博客。

这是我的第一个问题:

  1. 关于硬件,哪个更合适? Rpi3 或 Odroid-C2 还是别的什么?我打算启动 4-6 个节点。低功耗对我来说很重要,因为它将在家里 24/7 全天候运行

  2. 最好的架构是什么?我想在容器中运行所有东西(为了可扩展性和冗余),并拥有冗余的负载均衡器、Web 服务器和数据库。像这样的东西:architecture

  3. 是否可以在所有集群上分布 Web 服务器/数据库,并在 2-3 个节点上进行负载平衡?还是物理上分开比较好?

  4. 哪种技术更适合(swarm / kubernetes / ansible to deploy /flocker for storage)?我最近读了很多关于这个话题的文章,但是有很多选择。

感谢您的回答!


EDIT1:基础设施部署和管理

我拥有几乎所有材料,我现在正在寻找一种方法来轻松管理和部署 5 个(或更多)PI。我希望该过程尽可能具有可扩展性。

有没有办法:

  • 第一次从网络检索图像(PXE 启动方式)
  • 为每个节点应用自定义设置:网络配置 (IP)、SSH 访问,...
  • 在服务器上自动部署/更新新软件
  • 在集群上轻松添加新节点

我可以有一个专用的 PI 或我的 PC 作为部署服务器。

感谢您的意见!

【问题讨论】:

  • 好的,这是一个非常广泛的话题,但非常有趣。稍后我将尝试添加更完善的答案。首先,如果您想建立一个 HA 集群,我建议您至少拥有三个主机。 3 个在线虚拟机(不会花费那么多),或者 3 个树莓派或同等产品。看看 docker swarm,也许是 ansible,但不一定。架构将是让您的每台主机托管一个网络服务器、一个数据库(集群)等。然后您将有一个前端服务器随机/循环指向您的主机之一。
  • 另外,你应该知道你需要一些自定义镜像来在 arm 上运行容器。有一些人开发了这些图像,例如hypriot
  • 感谢您的回答!我已经在我的 pi (influxdb / grafana / portainer) 上运行了一些 docker 文件,但我想从 3-5 pi 构建 HA 架构。我正在寻找有关使用冗余技术的技巧(例如循环,但是如果“主”失败会发生什么?同时了解它是如何工作的,并拥有一个 HA 集群@home我的 git / 网站 / 家庭自动化(这真的很酷)。

标签: deployment cluster-computing kubernetes high-availability docker-swarm


【解决方案1】:

Raspberry Pi、ODroid、CHIP、BeagleBoard 都是合适的硬件。 请注意,如果您不断地对其进行读/写,闪存卡的使用寿命是有限的。

Kubernetes 是学习集群容器的绝佳选择。 Docker Swarm 也不错。 这些解决方案都没有提供分布式存储,所以如果你谈论的是非分布式的 PHP 类型的 Web 服务器和 SQL 数据库,那么即使使用 Kubernetes 或 Swarm,你也不能真正冗余。 为了有效地实现冗余,您需要为数据库设置主/从设置,或者更好的集群数据库,如 elasticsearch,或者可能是 MariaDB for SQL 的集群版本,因此您拥有数据库集群本身提供的冗余(这不是备份的替代品) ,但它比单个容器更好)

对于真正的分布式存储,您需要研究 Ceph 或 GlusterFS 等技术。这些不适用于 Kubernetes 或 Swarm,因为它们需要绑定到硬件。 Github 上有一个 docker/kubernetes Ceph 项目,但我想说它仍然有点 hacky。 最好单独配置,或直接在主机上配置。

就负载平衡而言,您可能希望有几个带有外部负载平衡器的节点以实现冗余,如果您构建一个 Kubernetes 集群,您并没有真正选择在同一节点上运行的其他东西,除非通过指定CPU/RAM 配额和限制,或关联性。

【讨论】:

  • 谢谢!是否可以运行带有数据库的容器,该容器写入分布式存储(Ceph/GusterFS)卷?还是使用集群版本的数据库更好?
  • 分布式存储仅为存储提供冗余。分布式数据库为您提供服务本身的冗余。分布式数据库可能对一个节点崩溃具有弹性。具有分布式存储的非分布式 DB 将对出现故障的存储节点具有弹性,但不会对出现故障的 DB 节点具有弹性。
【解决方案2】:

如果你想在 Kubernetes 中尝试使用 Raspberry Pi 3,这里是 setup your Kubernetes cluster with Raspberry Pi 3 的分步教程:

为防止出现读/写问题,您可以考虑购买额外的 NAS 设备并将其作为 volume 安装到您的 pod 上

完全同意 MrE 对 PHP 类分布式存储的看法。卷寿命是每个 pod 的,并且与 pod 相关联。所以你不能在 pod 之间共享一个 Volume。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2021-05-12
    相关资源
    最近更新 更多