OpenStack 各个组件作用
OpenStack产品设计的目标是:实现100万台物理主机,6000万台虚拟主机的管理能力.在 openstack自动化部署的时候,如果一台机器上所有的openstack服务都装全.大学需要27/28个软件包.
2014/07月份在OpenStack部署的时候,发现又多了一个python django的软件包.
下面几行摘自devstack/stackrc文件devstack 需要切换到I版本,后面有默认的分支号.本文章只涉及基础理论知识.
# metering service
CEILOMETER_REPO=${CEILOMETER_REPO:-${GIT_BASE}/openstack/ceilometer.git}
CEILOMETER_BRANCH=${CEILOMETER_BRANCH:-stable/icehouse}
# ceilometer client library
CEILOMETERCLIENT_REPO=${CEILOMETERCLIENT_REPO:-${GIT_BASE}/openstack/python-ceilometerclient.git}
CEILOMETERCLIENT_BRANCH=${CEILOMETERCLIENT_BRANCH:-master}
# volume service
CINDER_REPO=${CINDER_REPO:-${GIT_BASE}/openstack/cinder.git}
CINDER_BRANCH=${CINDER_BRANCH:-stable/icehouse}
# volume client
CINDERCLIENT_REPO=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
CINDERCLIENT_BRANCH=${CINDERCLIENT_BRANCH:-master}
# image catalog service
GLANCE_REPO=${GLANCE_REPO:-${GIT_BASE}/openstack/glance.git}
GLANCE_BRANCH=${GLANCE_BRANCH:-stable/icehouse}
# python glance client library
GLANCECLIENT_REPO=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
GLANCECLIENT_BRANCH=${GLANCECLIENT_BRANCH:-master}
# heat service
HEAT_REPO=${HEAT_REPO:-${GIT_BASE}/openstack/heat.git}
HEAT_BRANCH=${HEAT_BRANCH:-stable/icehouse}
# python heat client library
HEATCLIENT_REPO=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
HEATCLIENT_BRANCH=${HEATCLIENT_BRANCH:-master}
# django powered web control panel for openstack
HORIZON_REPO=${HORIZON_REPO:-${GIT_BASE}/openstack/horizon.git}
HORIZON_BRANCH=${HORIZON_BRANCH:-stable/icehouse}
# baremetal provisionint service
IRONIC_REPO=${IRONIC_REPO:-${GIT_BASE}/openstack/ironic.git}
IRONIC_BRANCH=${IRONIC_BRANCH:-stable/icehouse}
# ironic client
IRONICCLIENT_REPO=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
IRONICCLIENT_BRANCH=${IRONICCLIENT_BRANCH:-master}
# unified auth system (manages accounts/tokens)
KEYSTONE_REPO=${KEYSTONE_REPO:-${GIT_BASE}/openstack/keystone.git}
KEYSTONE_BRANCH=${KEYSTONE_BRANCH:-stable/icehouse}
# python keystone client library to nova that horizon uses
KEYSTONECLIENT_REPO=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
KEYSTONECLIENT_BRANCH=${KEYSTONECLIENT_BRANCH:-master}
# compute service
NOVA_REPO=${NOVA_REPO:-${GIT_BASE}/openstack/nova.git}
NOVA_BRANCH=${NOVA_BRANCH:-stable/icehouse}
# python client library to nova that horizon (and others) use
NOVACLIENT_REPO=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
NOVACLIENT_BRANCH=${NOVACLIENT_BRANCH:-master}
# consolidated openstack python client
OPENSTACKCLIENT_REPO=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
OPENSTACKCLIENT_BRANCH=${OPENSTACKCLIENT_BRANCH:-master}
# cliff command line framework
CLIFF_REPO=${CLIFF_REPO:-${GIT_BASE}/openstack/cliff.git}
CLIFF_BRANCH=${CLIFF_BRANCH:-master}
# oslo.config
OSLOCFG_REPO=${OSLOCFG_REPO:-${GIT_BASE}/openstack/oslo.config.git}
OSLOCFG_BRANCH=${OSLOCFG_BRANCH:-master}
# oslo.messaging
OSLOMSG_REPO=${OSLOMSG_REPO:-${GIT_BASE}/openstack/oslo.messaging.git}
OSLOMSG_BRANCH=${OSLOMSG_BRANCH:-master}
# oslo.rootwrap
OSLORWRAP_REPO=${OSLORWRAP_REPO:-${GIT_BASE}/openstack/oslo.rootwrap.git}
OSLORWRAP_BRANCH=${OSLORWRAP_BRANCH:-master}
# oslo.vmware
OSLOVMWARE_REPO=${OSLOVMWARE_REPO:-${GIT_BASE}/openstack/oslo.vmware.git}
OSLOVMWARE_BRANCH=${OSLOVMWARE_BRANCH:-master}
# pycadf auditing library
PYCADF_REPO=${PYCADF_REPO:-${GIT_BASE}/openstack/pycadf.git}
PYCADF_BRANCH=${PYCADF_BRANCH:-master}
# stevedore plugin manager
STEVEDORE_REPO=${STEVEDORE_REPO:-${GIT_BASE}/openstack/stevedore.git}
STEVEDORE_BRANCH=${STEVEDORE_BRANCH:-master}
# taskflow plugin manager
TASKFLOW_REPO=${TASKFLOW_REPO:-${GIT_BASE}/openstack/taskflow.git}
TASKFLOW_BRANCH=${TASKFLOW_BRANCH:-master}
# pbr drives the setuptools configs
PBR_REPO=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
PBR_BRANCH=${PBR_BRANCH:-master}
# neutron service
NEUTRON_REPO=${NEUTRON_REPO:-${GIT_BASE}/openstack/neutron.git}
NEUTRON_BRANCH=${NEUTRON_BRANCH:-stable/icehouse}
# neutron client
NEUTRONCLIENT_REPO=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
NEUTRONCLIENT_BRANCH=${NEUTRONCLIENT_BRANCH:-master}
# consolidated openstack requirements
REQUIREMENTS_REPO=${REQUIREMENTS_REPO:-${GIT_BASE}/openstack/requirements.git}
REQUIREMENTS_BRANCH=${REQUIREMENTS_BRANCH:-stable/icehouse}
# storage service
SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
SWIFT_BRANCH=${SWIFT_BRANCH:-stable/icehouse}
SWIFT3_REPO=${SWIFT3_REPO:-${GIT_BASE}/stackforge/swift3.git}
SWIFT3_BRANCH=${SWIFT3_BRANCH:-master}
# python swift client library
SWIFTCLIENT_REPO=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
SWIFTCLIENT_BRANCH=${SWIFTCLIENT_BRANCH:-master}
# Tempest test suite
TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
# diskimage-builder
DIB_REPO=${DIB_REPO:-${GIT_BASE}/openstack/diskimage-builder.git}
DIB_BRANCH=${DIB_BRANCH:-master}
# a websockets/html5 or flash powered VNC console for vm instances
NOVNC_REPO=${NOVNC_REPO:-https://github.com/kanaka/noVNC.git}
NOVNC_BRANCH=${NOVNC_BRANCH:-master}
OpenStack有不少核心和扩展的项目,主要由以下几个子系统构成
1 对象存储(ObjectStoragte)的系统名称Swift,对应亚马逊的S3,通过简单key/value的方式实现对象文件的存储读取,适用于"一次写入,多次读取, 无需修改"
图片,视频,邮件附件等海量数据的存储.对象存储俗称 云存储
2 镜像管理(Image)系统名称glance)提供虚拟磁盘镜像的目录分类管理以及镜像库存储管理,用于OpenStack虚拟机
3 计算管理(Compute)系统名称Nova)提供虚拟主机,对应亚马逊的EC2 包括虚拟机,弹性云磁盘等服务。通过虚拟化技术,KVM,Xen, VMware Esxi等实现计算,网络,存储等资源池的构建及应用,
4网络管理(Network)(系统名称nova-network和Quantum)实现了虚拟机的网络资源管理,包括网络连接,子网IP管理, L3的公网映射,后续的负载均衡等。
5块存储(Block Storage)(nova-volume和Cinder)实现了对块存储的管理,与EBS弹性云磁盘类似,为虚拟机提供块服务
6认证管理(keystone)为OpenStack所有的系统提供同一的授权和身份验证服务。
7界面展示(horizon)是基于OpenStack API接口开发的Web呈现。
以下为各模块的作用
1Nova
这个是最核心的,从Essex版本后,Nova开始做减法,和网络相关的内容,包括安全组,交给Quantum(neutron)负责,存储相关的交给Cinder负责。调度有关的内容, 会交给新的项目Marconi。
以前还有一个nova common,这其实是各个组件都使用相同的东西,现在也专门成立一个项目:oslo,已经是核心项目。
未来Nova对各种Hyperv的支持是有差异的,KVM和XEN,基本是最好的。微软的Hyper-V算是很不错,微软投入再研发。就是未来计算节点,不直接查询数据库,而是通 过rpc的方式.Nova的稳定性,其实取决于libvirt,qemu,希望未来可以能更加稳定。更深一层需要同Linux内核打交道.
2keystone
这是提供身份认证和授权的组件。任何系统,身份认证和授权,其实都比较复杂。尤其Openstack 那么庞大的项目,每个组件都需要使用统一认证和授权。
目前keystone 要做的东西其实还是很多。没法基于角色的授权,web管理用户等。当然你如果希望实现使用动态令牌认证,多因素认证,LDAP集成,这都是未来版本需 要实现的功能,这些功能都已经在计划中。
目前好像要实现keystone的高可用,还是比较困难,这个就让社区慢慢解决吧。大规模部署,这也会是瓶颈。
前段时间在大规模自动化部署openStack的时候遇到很多与keystone有关的问题.这需要修改源代码
3glance
镜像管理支持本地存储,NFS, swift, sheepdog和Ceph,
4Quantum,
目前开发进度不是太如人意,nova 开发组目前用的最多的是n-net.开源产品支持Openvswitch和linux bridge
5 cinder:存储管理的组件
6 Lbass
实现负载均衡的项目,目前集成在了网络部分。
7horizon
大家所看见的能访问的页面。
8swift
对象存储的组件。
9oslo
把所有组件需要用到相同的东西,集中起来,
10 Ceilometer
这是实现监控和计量的组件。能够在Dashboard里看到这个组件。
11 Heat
解决虚拟机的软件部署的问题。http://zhenhua2000.blog.iyunv.com/3167594/1324918/
12 MARCONI
解决openstack消息队列的扩展问题。
页:
[1]