天天看点

openstack(一)入门

 可能很多人会跟我一样,开始刚接触openstack,去学的时候发现东西很多,越看越乱,有种无处发力的感觉。这里我结合红帽RHCA认证里的openstack课程认证和openstack官方网站,加上自己的理解,整理成博文,抛砖引玉。

一、基本概念  

  OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。 OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

   概念里面几个关键字:开源、云计算管理平台、IaaS、集成。

  总的来讲,个人觉得,学习openstack大概需要了解以下几个技能:

  1. 要有基本的linux知识
  2. 了解基本的虚拟化相关概念,熟悉KVM等
  3. 搞云计算离不开网络,对DHCP、NAt、Bridge、vlan这些网络知识是必须要了解的。
  4. 了解相关存储知识,如分布式存储、对象存储
  5. 掌握一种自动化部署的工具,比如puppet、ansible、Chef等你会发现事半功倍
  6. Python
  7. 了解一个框架,flask或Django起码知道。OpenStack 基于 Web 的管理控制台 OpenStack Dashboard 是用 Python 和 Django 框架写的。

二、openstack架构

先上图,暂不多说:

openstack(一)入门

三、主要服务(service)

  因为openstack涉及的service比较多,初期接触的时候建议只关注几个关键的服务,慢慢的由浅入深。

  安照openstack官方给出的顺序:

  第一步,选择你的使用方式,How will you be using OpenStack? 是只当计算资源用还是当对象存储   使用,亦或两者结合使用;

  第二步,选择核心服务,包括keystone(identity)、nova(compute)、neutron(networking)、cinder(block storage)、swift(object storage)glance(glance),这几个core service基本都是需要了解的;

  第三步,选Optional Services来强化,这里面可以优先选择看horizon(dashboard)、       ceilometer(telemetry)、heat(orchestration)。

相关服务介绍如下:

Horizon(dashboard) 一个基于Web的Openstack管理平台,为用户提供如:启动虚拟机、管理虚拟网络、设置访问控制的图像接口。
Keystone(identity)

一个中心认证服务,为其他服务提供认证和授权。keystone同时提供openstack云各个其他组件的目录服务。

Keystone提供多种认证方式包括:用户名、密码,令牌,AWS(Amazon logins)

Keystone是所有服务的起始点,只有经过认证,其它的服务才会认为可以合法执行。它是Openstack的钥匙。

Neutron(networking) 在Openstack云中创建和管理虚拟网络架构(网络、子网、路由、防火墙)
Cinder(block storage) 为虚拟机提供逻辑卷管理功能,通常为虚拟机提供附加磁盘存储。
Nova(compute) 提供虚拟机管理功能,调用底层的Hypervisor提供该功能,支持libvirtd,qemu,kvm等Hypervisor。
Glance(p_w_picpath)

Glance项目提供虚拟机镜像的发现,注册,取得服务;

Glance提供restful API可以查询虚拟机镜像的metadata,并且可以获得镜像;

通过Glance,虚拟机镜像可以被存储到多种存储上,比如简单的文件存储或者对象存储。

Swift(object storage) Swift项目提供了弹性可伸缩、高可用的分布式对象存储服务,适合存储大规模非结构化数据。
Ceilometer(metering) Ceilometer像一个漏斗,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。
Heat(orchestration) heat实现了一种自动化的通过简单定义和配置就能实现的云部署方式。可以在heat模板中定义连串相关任务(例如用某配置开几台虚拟机,然后再去在其中一台中安装一个mysql服务,设定相关数据库属性,然后再配置几台虚拟机安装web服务集群等等),然后交由heat,由heat按照一定的顺序执行heat模板中定义的一连串任务。

转载于:https://blog.51cto.com/xujpxm/1745675