我一直在阅读有关 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 节点,我们可以几乎线性地扩展它们。”