已废弃:架构概述
(重定向自 ArchitecturalOverview)
目录
警告
此页面已过时
此页面的内容已经很长时间没有更新。该页面的一些章节在参考当前版本时是不正确的。
关于 OpenStack 计算服务的架构概述
关于此主题的实时笔记可以在以下地址获取:http://etherpad.openstack.org/Architecture 和 http://etherpad.openstack.org/nova-archdoc
“小型”组件,松散耦合
- 基于队列(当前使用 AMQP/RabbitMQ)
- 数据存储具有灵活的模式(当前使用 Redis)
- LDAP(允许通过半透明代理与 MS Active Directory 集成)
- 工作进程和 Web 钩子(成为 Web 的一部分)
- 所有操作异步进行(不要阻塞)
- 组件(队列、数据存储、http 端点等)应独立扩展,并允许对内部状态进行可见性(用于漂亮的图表/操作)
开发目标
- 测试和持续集成
- 模拟对象(允许在笔记本电脑上进行开发)
- 可适应性(目标是使与组织现有资源的集成更容易)
队列
- 每个工作进程/代理监听一个通用主题,以及该节点的子主题。例如“compute”和“compute:hostname”
- 队列中的消息当前为 主题、方法、参数 - 这映射到工作进程的 Python 类中的一个方法
- 通过方法调用暴露
- rpc.cast 用于广播消息且不等待响应
- rpc.call 用于发送消息并等待响应
数据存储
- Austin 之前,数据存储在 Redis 2.0 (RC) 中
- 在写入时完成工作 - 使读取速度更快
- 维护常用子集的索引/列表
- 使用池(Redis 中的 SET)来耗尽 IP 地址,而不是跟踪已分配的地址
Delta
- 调度器不存在(实例通过队列分发到消耗该消息的第一个工作进程)
- Nova 中的对象存储是一个简单的存根,将在生产环境中被 Cloud Files 替换(一个模拟 Cloud Files 的简单对象存储可能适合开发)
- 应逐步淘汰 Tornado,采用基于 WSGI 的 Web 框架
Networking
当前,有三种网络策略,由不同的管理器实现
- FlatManager -- IP 地址从网络中获取,并在启动时注入到镜像中。所有实例都连接到相同的手动配置桥接。
- FlatDHCPManager -- IP 地址从网络中获取,并为所有实例创建一个桥接。启动 DHCP 服务器以分配地址
- VlanManager -- 每个项目获得自己的 VLAN、桥接和网络。为每个 VLAN 启动 DHCP 服务器,并将所有实例桥接到该 VLAN。
创建桥接、VLAN、DHCP 服务器和防火墙规则的实现由驱动程序 linux_net 完成。这种抽象层是为了让我们能够在某个时候使用相同的管理器来支持配置硬件交换机等。
有关网络架构的更多讨论,请参阅 Networking。
