为自托管服务/博客构建低功耗HA集群

时间:2016-12-10 11:00:09

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

我想基于低功耗架构(arm)设置HA swarm / kubernetes集群。 我的主要目标是了解HA网络集群的工作原理,它如何对故障作出反应并从故障中恢复,规模是多么容易。

我希望在它上面有一个博客以及其他服务(git / custom services / home automation / CI server / ...)。

以下是我的第一个问题:

  1. 退出硬件,哪个更合适? Rpi3或Odroid-C2还是其他什么?我打算有4-6个节点启动。低功耗对我来说很重要,因为它将在家中全天候运行

  2. 最好的架构是什么?我想在容器中运行所有内容(用于可伸缩性和减少性),并且具有冗余负载平衡器,Web服务器和数据库。这样的事情:architecture

  3. 是否可以在所有群集上分布Web服务器/数据库,并在2-3个节点上进行负载均衡?或者将它物理分离是否更好?

  4. 哪种技术更适合(swarm / kubernetes / ansible部署/ flocker用于存储)?我最近读了很多这个话题,但是有很多选择。

  5. 感谢您的回答!

    EDIT1:基础设施部署和管理

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

    有没有办法:

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

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

    感谢您的投入!

2 个答案:

答案 0 :(得分:2)

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配额和限制,或亲和力。

答案 1 :(得分:0)

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

为防止出现读/写问题,您可以考虑购买和使用其他NAS设备并将其作为volume安装到您的播放器

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