OpenStack 整体介绍
OpenStack
OpenStack 提供了一种模块化云基础架构。OpenStack 是一个云操作系统,在整个数据中心控制大量的计算、存储和网络资源池,通过 API 进行管理,并提供通用的认证机制。
OpenStack 全景图
OpenStack 目前一共包含 65 个服务组件,其中 6 个核心服务主要担纲系统的基础架构,其余项目则负责管理控制面板、编排、裸机部署、信息传递、容器及统筹管理等操作。
OpenStack 架构
模块化架构
OpenStack 采用模块化架构,提供一组服务,可扩展性和弹性是其核心设计原则。以下 7 个组件为实验环境部署的组件服务,除控制面板(Dashboard)外都为核心服务。
概念体系结构
主要服务组件之间的关系
逻辑架构
最常见的 OpenStack 云架构,加粗表示实验环境部署的服务组件。
- Keystone:身份认证服务
- Glance:镜像服务
- Nova:计算服务
- Neutron:网络服务
- Swift:对象存储
- Cinder:块存储
- Dashboard:控制面板
- Ceilometer:计量服务
- Heat:编排服务
- Ironic:裸金属服务
- Trove:数据库即服务
- Sahara:提供大数据处理框架
核心组件交互逻辑
OpenStack 逻辑架构展示了 OpenStack 中最常见的集成服务以及它们之间的交互。终端用户可以通过控制面板、终端命令行和 API 与服务进行交互。所有服务都通过公共的身份认证服务进行身份验证,各个服务通过公共 API 交互,但需要特权管理员命令的情况除外。
以上组件的相关日志文件
Node type | Service | Log location |
---|---|---|
Cloud controller | nova-* | /var/log/nova |
Cloud controller | glance-* | /var/log/glance |
Cloud controller | cinder-* | /var/log/cinder |
Cloud controller | keystone-* | /var/log/keystone |
Cloud controller | neutron-* | /var/log/neutron |
Cloud controller | horizon | /var/log/apache2/ |
All nodes | misc (swift, dnsmasq) | /var/log/syslog |
Compute nodes | libvirt | /var/log/libvirt/libvirtd.log |
Compute nodes | Console (boot up messages) for VM instances: | /var/lib/nova/instances/instance- |
Block Storage nodes | cinder-volume | /var/log/cinder/cinder-volume.log |
核心组件日志
Identity Service (keystone)
Service | Service Name | Log Path |
---|---|---|
OpenStack Identity Service | openstack-keystone.service | /var/log/keystone/keystone.log |
Image Service (glance)
Service | Service Name | Log Path |
---|---|---|
OpenStack Image Service API server | openstack-glance-api.service | /var/log/glance/api.log |
OpenStack Image Service Registry server | openstack-glance-registry.service | /var/log/glance/registry.log |
Compute (nova)
Service | Service Name | Log Path |
---|---|---|
OpenStack Compute API service | openstack-nova-api.service | /var/log/nova/nova-api.log |
OpenStack Compute certificate server | openstack-nova-cert.service | /var/log/nova/nova-cert.log |
OpenStack Compute service | openstack-nova-compute.service | /var/log/nova/nova-compute.log |
OpenStack Compute Conductor service | openstack-nova-conductor.service | /var/log/nova/nova-conductor.log |
OpenStack Compute VNC console authentication server | openstack-nova-consoleauth.service | /var/log/nova/nova-consoleauth.log |
Informational messages | nova-manage command | /var/log/nova/nova-manage.log |
OpenStack Compute NoVNC Proxy service | openstack-nova-novncproxy.service | /var/log/nova/nova-novncproxy.log |
OpenStack Compute Scheduler service | openstack-nova-scheduler.service | /var/log/nova/nova-scheduler.log |
Networking (neutron)
Service | Service Name | Log Path |
---|---|---|
OpenStack Neutron DHCP Agent | neutron-dhcp-agent.service | /var/log/neutron/dhcp-agent.log |
OpenStack Networking Layer 3 Agent | neutron-l3-agent.service | /var/log/neutron/l3-agent.log |
Metadata agent service | neutron-metadata-agent.service | /var/log/neutron/metadata-agent.log |
Metadata namespace proxy | n/a | /var/log/neutron/neutron-ns-metadata-proxy-UUID.log |
Open vSwitch agent | neutron-openvswitch-agent.service | /var/log/neutron/openvswitch-agent.log |
OpenStack Networking service | neutron-server.service | /var/log/neutron/server.log |
Object Storage (swift)
OpenStack Object Storage sends logs to the system logging facility only.
Block Storage (cinder)
Service | Service Name | Log Path |
---|---|---|
Block Storage API | openstack-cinder-api.service | /var/log/cinder-api.log |
Block Storage Backup | openstack-cinder-backup.service | /var/log/cinder/backup.log |
Informational messages | The cinder-manage command | /var/log/cinder/cinder-manage.log |
Block Storage Scheduler | openstack-cinder-scheduler.service | /var/log/cinder/scheduler.log |
Block Storage Volume | openstack-cinder-volume.service | /var/log/cinder/volume.log |
Dashboard (horizon)
Service | Service Name | Log Path |
---|---|---|
Log of certain user interactions | Dashboard interface | /var/log/horizon/horizon.log |
端到端核心组件交互 —— 创建实例
在 OpenStack 上创建实例时,端到端的组件交互,包括网络和卷的请求与分配。
创建实例的状态改变。
从另一个视角看组件间的交互。
组件之间的交互依赖于控制节点,控制节点使用消息队列(RabbitMQ)对组件交互消息进行排序,使用 REST API 并遵循 AMQP 协议;而组件内部的交互使用 RPC ,例如 nova 中的四个模块。
参阅
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Jckling's Blog!
评论