热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

生产环境中OpenStack的高可用性设计

OpenStack的高可用集群划分基础架构服务高可用控制服务高可用网络服务高可用存储服务高可用计算服务高可用基础架构服务高可用包括消息队列服务高可用、数据库服务高可用和缓存服务

OpenStack的高可用集群划分

    • 基础架构服务高可用
    • 控制服务高可用
    • 网络服务高可用
    • 存储服务高可用
    • 计算服务高可用


基础架构服务高可用

包括消息队列服务高可用、数据库服务高可用和缓存服务高可用


控制服务高可用

Nova-API、Glance-API和Neutron-server等
目前主流的OpenStack控制服务高可用性主要分为两大类:



  • Pacemaker和Haproxy

  • Keepalived和Haproxy

在这两种方案中,OpenStack控制服务和基础架构服务通常都部署在三台控制节点上,OpenStack控制服务以Active/Active或Active/Passive高可用模式运行在三个节点上,并且OpenStack基础架构服务的高可用实现在两种方案中是类似的。
如通过消息队列镜像方式实现RabbitMQ服务的高可用,通过Galera集群实现Mysql或MarriaDB数据库的高可用,通过列表形式实现Memcache缓存服务的高可用行。


网络服务高可用

网络服务的高可用主要涉及API服务、L2和L3服务的高可用。API由于是无状态服务,因此通过三节点和HAProxy负载均衡器即可解决,但是像L3这种有状态服务,则需专门的高可用解决方案–L3 HA和DVR。



  • L3 HA高可用解决方案

这种主要思想是在多个网络节点(通常就在控制节点)上同时部署L3 Agent服务。当租户创建高可用L3 Router时,在多个运行L3 agent的网络节点上同步创建多个L3 Router实例,不同网络节点上的L3 Router 完全相同,借助VRRP使得多个网络节点上的L3Router具有不同的运行状态,即其中仅有L3 Router 是Master状态,而其他Router是Standby状态。正常情况下,Master向虚拟机提供路由服务,当Master出现故障时,重新从standby状态的L3 Router选举新的Master。



  • DVR高可用方案

L3 HA高可用方案虽然可以解决网络服务高可用问题,但是由于集群中全部东西和南北向网络流量全汇聚到网络节点,因此在大规模集群中很容易造成网络节点的瓶颈。DVR解决方案将所有东西流量和南北向中的DNAT全部转移到各个计算节点,网络节点仅保留南北向流量中的SNAT功能,因此分布式的虚拟路由不仅解决了L3 的高可用问题,同时也解决了网络瓶颈问题。

在实际应用中,为了解决DVR方案中SNAT的高可用性,通常将DVR与L3 HA高可用方案同时启用,从而利用L3 HA高可用方案解决SNAT的单点故障问题。


存储服务高可用

Cinder-volume、Ceph RBD
Cinder项目是OpenStack私有云建设中最主要的存储服务提供者,但是Cinder服务的高可用一直被诟病,主要原因在于Cinder-volume使用了本地锁,因此无法实现在Active/Active模式下的高可用运行。
因此对于Cinder服务的高可用,目前主流的做法仍然是通过HaProxy实现Cinder-scheduler的高可用性,并将Cinder-volume以Active/Passive模式运行在Pacemaker集群中,由pacemaker来控制Cinder-volume的高可用。
在这里插入图片描述

实践中,存储高可用最佳实践采用Ceph分布式存储解决方案。在Ceph存储高可用方案中,存储服务前段(如cinder-API和cinder-scheduler)的高可用由HAProxy实现,存储后端的高可用直接交由Ceph分布式存储集群。


计算服务高可用

Nova-compute和虚拟机

计算服务是Openstack私有云中最核心的服务,由于社区一直未提供完善的计算服务高可用解决方案,因此只能通过第三方基础架构软件来实现。
最主流的便是由Redhat主导的pacemaker_remote计算服务高可用解决方案。其重要部署在计算节点上,从而将计算节点与控制节点全部加入pacemaker集群,最终将Openstack计算服务纳入Pacemaker集群中进行高可用实现。

采用pacemaker_remote解决方案,用户无须自己编写脚步监测计算节点服务运行情况,而通过Redhat开源代理fence-agent和resource-agent即可自动实现对计算节点服务的监测、隔离和虚拟机撤离操作。


推荐阅读
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 深入理解一致性哈希算法及其应用
    本文详细介绍了分布式系统中的一致性哈希算法,探讨其原理、优势及应用场景,帮助读者全面掌握这一关键技术。 ... [详细]
author-avatar
小思绪
创造人生的可能
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有