什么是OpenStack?
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
OpenStack是IaaS(基础设施即服务)组件,让任何人都可以自行建立和提供云端运算服务。
此外,OpenStack也用作建立防火墙内的“私有云”(Private Cloud),提供机构或企业内各部门共享资源。
OpenStack以Python编程语言编写。
核心项目
OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目。截止到Icehouse版本,下面列出了10个核心项目(即OpenStack服务)。
计算(Compute):Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。
对象存储(Object Storage):Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中
镜像服务(Image Service):Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。
身份服务(Identity Service):Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。
网络&地址管理(Network):Neutron。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。
块存储 (Block Storage):Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。
UI 界面 (Dashboard):Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。自Essex版本集成到项目中。
测量 (Metering):Ceilometer。像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。自Havana版本集成到项目中。
部署编排 (Orchestration):Heat。提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储和网络资源)的自动化部署。自Havana版本集成到项目中。
数据库服务(Database Service):Trove。为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务。自Icehouse版本集成到项目中。
Openstack架构图
OpenStack安装配置:(笔记)
Identity: 主要有两个功能:用户管理和服务目录
代码为Keystone;为Openstack中的所有服务提供了认证、授权以及端点编录目录;端口:管理端口35357,外部访问端口:5000
用户管理:认证和授权
认证方式有两种:
token(令牌)
账号和密码
服务目录:所有可用服务的信息库,包含其API endpoint路径
几个核心术语:
User:用户
Tanent:租户
Role:角色
Service:服务
Endpoint 服务的访问入口
Token:令牌
epel6 icehouse 安装源:https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/
管理工具:keystone-manager
客户端程序:keystone
Image Service:
代码名:Glance,用于在OpenStack中注册、发现及获取VM映像文件;端口:9292,9191
VM的映像文件存储于何处?
普通文件系统、对象存储系统(swift)、S3存储,以及HTTP服务上;
磁盘映像文件:
(1) 制作
Oz(KVM)
VMBuilder(KVM, XEN)
VeeWee(KVM)
imagefactory
(2) 获取别人制作模板
CirrOS
Ubuntu
Fedora
OpenSUSE
Rackspace云映像文件生成器
OpenStack中的磁盘映像文件要满足以下要求:
(1) 支持由Openstack获取其元数据信息;
(2) 支持对映像文件的大小进行调整;
OpenStack:
Compute Service
代码为Nova
Supporting Service:
AMQP: Advanced Messaging Queue Protocol
Apache Qpid(5672/tcp), RabbitMQ, ZeroMQ
Database
组件:
API:
nova-api, nova-api-metadata
Compute Core:
nova-compute, nova-scheduler, nova-conductor
Network for VMs:
nova-network, nova-dhcpagent
Console Interface:
nova-consoleauth, nova-novncproxy, nova-x***vncporxy, nova-cert
Command line and other interfaces:
nova, nova-manage
Compute服务的角色:
管理角色
hypervisor
安装qpid:
# yum install qpid-cpp-server
编辑配置文件,设置"auth=no"
# service qpidd start
注意:配置compute节点时,额外需要在[DEFAULT]配置段设定的参数:
vif_plugging_timeout=10
vif_plugging_is_fatal=false
Network Service:
代码为:Neutron,早期叫Quantum
有两种配置机制:
legacy network
Neutron
Neutron Server:controller
Network Node:
Compute Nodes: Computes
功能:
OVS, l3(netns), dhcpagent, NAT, LBaaS, FWaaS, IPSec ***
Networking API
network, subnet, port
Network: 隔离的2层网络,类似于VLAN;
Subnet: 有着关联配置状态的3层网络,或者说是由Ipv4或ipv6定义的地址块形成的网络;
Port: 将主机连入网络设备的连接接口;
插件:
plug-in agent: netutron-*-agent
dhcp agent
l3 agent
l2 agent
OpenStack中物理网络连接架构:
管理网络(management network):
数据网络(data network):
外部网络(external network):
API网络
Tenant network: tenant内部使用的网络;
Flat: 所有VMs在同一个网络中,不支持VLAN及其它网络隔离机制;
Local: 所有的VMs位于本地Compute节点,且与external网络隔离;
VLAN:通过使用VLAN的IDs创建多个providers或tenant网络;
VxLAN和GRE:
provider network: 不专属于某tenant,为各tenant提供通信承载的网络;
DashBoard:
Python Django
Web Framework
注意事项:
1、Neutron的配置文件中要把auth_uri换成identity_uri;
2、各配置文件属组应该为相应的服务的运行者用户身份,否则其将无法访问导致服务启动失败;
Block Storage Service
代码名:Cinder
组件:
cinder-api
cinder-volume
cinder-scheduler
部署工具:
fuel: mirantis
devstack
|