热门标签 | 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即可自动实现对计算节点服务的监测、隔离和虚拟机撤离操作。


推荐阅读
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • celery 爬虫使用
    简介celery是一个基于分布式消息传输的异步任务队列,它专注于实时处理,同时也支持任务调度。它由三部分组成,消息中间件, ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 这也太简单了!轻松操作Feign 服务调用使用 Zipkin 链路追踪!
    0、介绍分布式微服务时代,方便了业务的快速增长和服务的稳定,但是系统出现问题后,面对同业务多服务排查起来令人头大。这时候领导就想着集成分布式追踪系统。Zipkin是T ... [详细]
  • OpenStack 的 Nova 和 Glance 组件
    简单回顾一下OpenStack三大组件的用途:OpenStackCompute(Nova),为云组织的控制器,它提供一个工具来部署云&#x ... [详细]
  • 领域驱动设计 领域事件DDD分层架构
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了领域驱动设计领域事件DDD分层架构相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • RabbitMq的最终一致性分布式事务
    RabbitMq的最终一致性分布式事务使用rabbitmq的步骤1.运行安装在服务器上的rabbit服务2.在项目中安装依赖3.编写对应的配置文件4.创建对应配置并加上启动注解5. ... [详细]
  • 【Hoxton.SR1版本】Spring Cloud Stream消息驱动
    目录一、简介二、搭建消息生产者端三、搭建消息消费者端四、消息重复消费问题五、消息持久化六、总结一、简介在实际项目中,服务与服务之间的通信往往我们会采用消 ... [详细]
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社区 版权所有