C1. 初识OpenStack
OpenStack架构标准视图
Compute (Nova)
根据需求提供虚拟机服务,比如创建虚拟机或对虚拟机做热迁移。(类似于
AWS的EC2)
Nova组件: 1.nova-api为Nova对外提供服务的窗口,接收并相应来自用户的Compute API调用。 2.nova-compute安装到每个物理主机上的服务进程,该服务接受请求后执行与虚拟机相关的操作,通过底层的Hypervisor API完成。 3.nova-scheduler用于接收创建虚拟机的请求,并决定在哪台物理主机上启动该虚拟机的调度器。 4.nova-conductor处于2和5之间的一个组件,2访问5需要conductor代转交,目的是出于安全的考虑。而3对5的访问则无需conductor代交。 5.nova-db该数据库用于记录虚拟机状态、虚拟机与物理机的对应关系、租户信息等数据。 6.nova-console、nova-consoleauth控制台服务,允许用户通过代理服务器访问他们虚拟机的控制台。 7.nova-cert、nova-objectstore分别提供x509验证管理服务和在Glance中注册镜像的S3接口服务。
Object Storage (Swift)
允许存储或检索对象/文件,以低成本的方式通过RESTful API管理大量无
结构数据。(类似于AWS的S3)
Swift组件: 1.proxy-server为处于Swift系统内部与外部之间,负责接收API请求或HTTP请求(上传文件、修改元数据、创建容器等),为提高性能可以与memcached一起部署。 2.account-server用于账号管理。 3.container-server用于管理容器或文件夹的映射关系。 4.object-server用于管理在存储节点上的实际对象(文件)。
Identity (Keystone)
为所有OpenStack服务提供身份验证和授权,跟踪用户和他们的权限,提供
一个可用服务和API的列表(KeystoneAPI负责前台请求,keystone-db负
责后台)。
Dashboard (Horizon)
为Openstack提供一个模块化的基于Django的界面。
Block Storage (Cinder)
提供块存储服务。(类似于AWS的EBS)
Cinder组件: 1.cinder-api接收外部API请求,并转交给cinder-volume。 2.cinder-volume负责与底层的块存储服务打交道。 3.cinder-db用于记录和维护块设备的信息。 4.cinder-scheduler与nova-scheduler类似,由于底层提供存储的节点很多,cinder-scheduler会试图寻找最佳的节点创建volume。
Network (Neutron)
用于提供网络连接服务,允许用户创建自己的虚拟网络并连接各种网络设备
接口。Neutron通过插件(plugin)的方式对众多网络设备提供商进行支
持。
Neutron组件: 1.neutron-server用于接收来自外部的API请求,将请求交给合适的neutron插件。插件功能上负责存储当前逻辑网络的配置信息,判断和存储逻辑网络和物理网络间的对应关系。这种对应关系通过与交换机通信实现,需要通过物理机上的代理来完成。 -plugin agent负责处理虚拟网络上的数据包。 -DHCP agent为租户网络提供DHCP服务。 -L3 agent为虚拟机访问外网提供三层转发。
Image Service (Glance)
OpenStack的镜像服务组件。(类似于AWS的Amazon AMI catalog功能)
Glance组件: 1.glance-api接收外部API镜像请求(镜像发现、获取及存储)。 2.glance-registry已合并到glance-api。 3.glance-db存储元数据。
- 例:创建虚拟机工作流程
备注:一些概念的补充
-OpenStack是以虚拟化技术为中心的云计算技术 -Kubernetes、Mesos和Docker公司的Swarm是以容器为计算资源基础单元的容器云。 -OpenStack可以被看做是Kubernetes容器云中的一个云原生的应用。 -直接面对裸机的Kubernetes又可以集成Ceph(类似于Swift)、Swift、Cinder、Neutron完善网络资源池化(SDN)和存储资源池化(SDS)的管理。