![如果 OpenStack 云控制器死机了会发生什么?](https://linux22.com/image/579958/%E5%A6%82%E6%9E%9C%20OpenStack%20%E4%BA%91%E6%8E%A7%E5%88%B6%E5%99%A8%E6%AD%BB%E6%9C%BA%E4%BA%86%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我一直在阅读有关 OpenStack 的资料以及如何为我们的内部开发重新创建 EC2/S3 风格的云,但我很难找到有关 OpenStack 云控制器如何提供云管理服务冗余的信息。
我知道我可以设置多个 Swift 和 Nova 节点,但没有一个文档/文章/howto/wiki 包含以下信息:
a)如果云控制器节点死亡会发生什么;b)如何设置冗余云控制器。
在我看来,尽管 OpenStack 具有极强的可扩展性,但是它却存在很大的单点故障。
有更多 OpenStack 经验的人能否解释一下它在高可用性方面的工作原理?
答案1
OpenStack 有一些高可用性配置选项。两个潜在的单点故障是以下服务,它们传统上仅在单个(“云控制器”)节点上运行:
- 处理传入请求的 API 服务 (nova-api)
- 处理网络问题(DHCP、DNS、NAT 等)的网络服务(nova-network)
对于 nova-api,我相信您可以在不同的物理节点上运行多个实例,因为状态在外部数据库中维护。
要配置网络服务以在高可用性模式下运行,您需要使用--multi_host
nova 配置文件中的配置选项。请参阅 OpenStack 文档现有的网络高可用性选项
答案2
还没有玩过 OpenStack,但如果云控制器确实是一个单点故障:防止出现问题的一种方法就是为此专门配备两台服务器,并在主动-被动模式下在它们之间设置 Heartbeat v2(或现在所称的 Corosync/Pacemaker)。
这样,如果主服务器因某种原因崩溃,另一个服务器就会在几毫秒内承担其工作负载。
答案3
“...甚至更好:控制器节点现在仅托管非 OpenStack 内部服务的平台组件(MySQL 和 RabbitMQ 是标准 Linux 守护进程)。因此,云管理员可以将它们的管理权转交给外部实体、数据库团队和专用的 RabbitMQ 集群。这样,中央控制器节点就消失了,我们最终得到了一堆计算/API 节点,我们可以几乎线性地扩展它们。”