身份(Identity)服务
资源(Resource)服务
分配(Assignment)服务
令牌(Token)服务
目录(Catalog)服务
策略(Policy)服务
(1)用户向Keystone提供凭证,Keystone验证通过后向用户返回令牌的同时还会返回一个通用目录(Generic Catalog)。
(2)用户使用该令牌向该目录列表中的端点(Endpoint)请求该用户对应的项目(租户)信息,Keystone验证通过后返回用户对应的项目(租户)列表。
(3)用户从列表中选择要访问的项目(租户),再次向Keystone发出请求,Keystone验证通过后返回管理该项目(租户)的服务列表并允许访问该项目(租户)的令牌。
(4)用户会通过这个服务和通用目录映射找到服务的端点,并通过端点找到实际服务组件的位置。
(5)用户再凭借项目(租户)令牌和端点来访问实际上的服务组件。
(6)服务组件会向Keystone提供这个用户项目令牌进行验证,Keystone验证通过后会返回一系列的确认信息和附加信息(用户希望操作的内容)给服务。
(7)服务执行一系列操作。
openstack project list
openstack project create --description ‘my new project’ new-project --domain default
openstack project set 项目名称或ID --enable
openstack user list
openstack user create --project new-project --password MYPASSWORD new-user
openstack user set 用户名或ID --enable
openstack role list
openstack role create new-role
openstack role add --user demo --project new-project new-role
openstack role assignment list --user 用户名或ID --project 用户名或ID --names
openstack role show 角色名或ID
openstack service list
openstack service create --name SERVICE_NAME --description SERVICE_DESCRIPTION SERVICE_TYPE
(1)创建一个服务用户专用的项目
openstack project create service --domain default
这个项目一般命名为service,也可以选择其他名称。RDO一体化概念云平台中将其命名为services。
(2)为要部署的相关服务创建服务用户例如,创建swfit用户的命令如下。
openstack user create --domain default --password-prompt swift
(3)将admin角色分配给用户-项目对
openstack role add --project service --user 服务用户名 admin
glance-api是系统后台运行的服务进程,是进入Glance的入口。它对外提供REST API,负责接收用户的RESTful请求,响应镜像查询、获取和存储的调用
glance-api会把请求转发给glance-registry。glance-registry会解析请求内容,并与数据库交互,存储、处理、检索镜像的元数据
Glance自身并不存储镜像,它将镜像存放在后端存储系统中。镜像本身的数据通过glance_store(Glance的Store模块,用于实现存储后端的框架)存放在各种后端,并可从中获取
openstack image list
openstack image show CentOS7
openstack image create --disk-format qcow2 --container-format bare --public --file ./centos63.qcow2 centos63-image
openstack image set 镜像名称
openstack image delete <镜像名称或ID>
将镜像与项目关联
openstack image add project [–project-domain 项目所属域] 镜像名或ID 项目名或ID
将镜像与项目解除关联
openstack image remove project [–project-domain 项目所属域] 镜像名或ID 项目名或ID
用于接收HTTP请求、转换命令、通过oslo.mes-saging队列或HTTP与其他组件通信的Nova组件。
用于决定哪台主机承载计算实例的Nova调度器。
处理需要协调(构建虚拟机或调整虚拟机大小)的请求,或者处理对象转换。
管理虚拟机管理器与虚拟机之间通信的Nova计算组件
(1)首先用户(可以是OpenStack最终用户,也可以是其他程序)执行Nova Client提供的用于创建虚拟机的命令。
(2)nova-api服务监听到来自Nova Client的HTTP请求,并将这些请求转换为AMQP消息之后加入消息队列。
(3)通过消息队列调用nova-conductor服务。
(4)nova-conductor服务从消息队列中接收虚拟机实例化请求消息后,进行一些准备工作(例如汇总HTTP请求中所需要实例化的虚拟机参数)
(5)nova-conductor服务通过消息队列告诉nova-scheduler服务去选择一个合适的计算节点来创建虚拟机,此时nova-scheduler会读取数据库的内容。
(6)nova-conductor服务从nova-scheduler服务得到了合适的计算节点的信息后,再通过消息队列来通知nova-compute服务实现虚拟机的创建
openstack server create --flavor m1.tiny --image cirros --nic net-id=public --security-group default --key-name demo-key cirros2
openstack server create
(--image <镜像> | --volume <卷>)
--flavor <实例类型>
[--security-group <安全组>]
[--key-name <密钥对>]
[--property <服务器属性>]
[--file <目的文件名=源文件名>]
[--user-data <实例注入文件信息>]
[--availability-zone <域名>]
[--block-device-mapping <块设备映射>]
[--nic ]
[--network <网络>]
[--port <端口>]
[--hint <键=值>]
[--config-drive <配置驱动器卷>|True]
[--min <创建实例最小数量>]
[--max <创建实例最大数量>]
[--wait]
<实例名>
访问虚拟机实例
openstack console url show cirros
(1)实例列表
openstack server list
管理员可以用以下命令列出所有项目的实例。
openstack server list --all-projects
(2)查看实例详情
openstack server show [–diagnostics] <实例名或ID >
(3)实例启动
openstack server start <实例名或ID> [<实例名或ID > …]
(4)实例暂停及恢复
openstack server pause/unpause <实例名或ID> [<实例名或ID > …]
(5)实例挂起及恢复
openstack server suspend <实例名或ID> [<实例名或ID > …]
挂起的实例需要使用
openstack server resume命令让其恢复。
(6)实例废弃及恢复
openstack server shelve <实例名或ID> [<实例名或ID > …]
废弃的实例会被关闭,实例本身及其相关的数据被保存,但内存中的数据会丢失
openstack server unshelve命令可以恢复被废弃的实例。
(7)实例关闭
openstack server stop <实例名或ID> [<实例名或ID > …]
(8)实例重启
分为软重启和硬重启。软重启是操作系统正常关闭并重启,使用选项–soft;硬重启是模拟断电然后加电启动,使用选项–hard。
openstack server reboot [--hard | --soft] [--wait] <实例名或ID>
(9)调整实例大小
这是将实例调整到一个新的实例类型。
openstack server resize [--flavor <flavor> | --confirm | --revert] [--wait] <实例名或ID>
这种操作是通过创建一个新的实例,并将原实例的磁盘的内容复制到新的实例中来实现的。对于用户来说,分两个处理阶段,第一阶段执行调整实例大小;第二阶段确认成功并释放原实例,或者使用选项–revert进行事件回滚,释放新的实例并重启原实例。
(10)实例删除
openstack server delete <实例名或ID> [<实例名或ID > …]
(11)实例修改
openstack server set [–name <新名称>] [–root-password] [–property <键=值>] [–state <状态>] <实例名或ID>选项–root-password用于交互式修改root密码。–property用于添加或修改属性(自定义元数据)。–state用于改变状态,只能取值active(活动)或error(出错)。
openstack server set --root-password Fedora
New password:
Retype new password:
QEMU guest agent is not enabled (HTTP 409) (Request-ID: req-30d54f4f-3b38-479c-a3f1-2aa62c30cb9a)
openstack flavor list
openstack flavor show FLAVOR_ID
openstack flavor create FLAVOR_NAME --id FLAVOR_ID --ram RAM_IN_MB --disk ROOT_DISK_IN_GB --vcpus NUMBER_OF_VCPUS
openstack flavor create --public m1.extra_tiny --id auto --ram 256 --disk 0 --vcpus 1 --rxtx-factor 1
openstack flavor set命令来修改其参数设置。
openstack flavor set FLAVOR-NAME --property quota:read_bytes_sec=10240000 --property quota:write_bytes_sec=10240000
openstack flavor delete FLAVOR_ID
Neutron仅有一个主要服务进程neutron-server。它运行于控制节点上,对外提供OpenStack网络API作为访问Neutron的入口,收到请求后调用插件(Plugin)进行处理,最终由计算节点和网络节点上的各种代理(Agent)完成请求
网络提供者(Network Provider)是指提供OpenStack网络服务的虚拟或物理网络设备,如Linux Bridge、Open vSwitch,或者其他支持Neutron的物理交换机
插件是Neutron的一种API的后端实现,目的是增强扩展性。插件按照功能可以分为Core Plugin和Service Plugin两种类型。
Core Plugin提供基础二层虚拟网络支持,实现网络、子网和端口等核心资源的抽象。
Service Plugin是指Core Plugin之外的其他插件,提供路由器、防火墙、安全组、负载均衡等服务支持
插件通过RPC调用相应的代理(Agent)来完成。
代理处理插件转来的请求,负责在网络提供者上真正实现各种网络功能。
openstack network create
[–project <项目名或ID> [–project-domain <项目所属的域的名称或ID >]]
[–enable | --disable]
[–share | --no-share]
[–description <说明信息>]
[–mtu ]
[–availability-zone-hint <可用域>]
[–enable-port-security | --disable-port-security]
[–external [–default | --no-default] | --internal]
[–provider-network-type <提供者网络类型>]
[–provider-physical-network <提供者物理网络>]
[–provider-segment <提供者网段>]
[–qos-policy <用于此网络的QoS策略名称或ID>]
[–transparent-vlan | --no-transparent-vlan]
[–tag | --no-tag]
<虚拟网络名称>
(2)修改网络设置
openstack network set [选项列表] <虚拟网络名称或ID>
其中选项大部分与openstack network create命令相同,增加一个重命名选项–name。
(3)显示网络列表
openstack network list [选项列表]
(4)显示网络详细信息
openstack network show <虚拟网络名称或ID>
(5)删除网络
openstack network delete [虚拟网络列表]
(1)创建子网命令
openstack subnet create
[–project <项目名或ID> [–project-domain <项目所属的域的名称或ID >]]
[–subnet-pool <子网池> | --use-default-subnet-pool [–prefix-length <前缀长度>]|–use-prefix-delegation]
[–subnet-range <子网范围>]
[–allocation-pool start=<起始IP地址>,end=<结束IP地址>]
[–dhcp | --no-dhcp]
[–dns-nameserver
[–gateway <网关>]
[–host-route destination=<主机路由目的子网>,gateway=<网关IP>]
[–network-segment <与此子网关联的网段名称或ID>]
–network <子网所属的虚拟网络名称或ID>
<子网名称>
默认启用DHCP,使用选项–dhcp
(2)子网管理命令与上述网络管理命令类似,只是将子命令network换成sub-net,操作对象改为子网。
路由器创建和管理命令
(1)创建路由器命令
openstack router create
[–project <项目名或ID> [–project-domain <项目所属的域的名称或ID >]]
[–enable | --disable]
[–availability-zone-hint <可用域>]
<路由名称>
(2)路由器管理命令与上述网络管理命令类似,只是将子命令network换成router,操作对象改为路由器。
(2)API前端服务(cinder-api)cinder-api作为Cinder对外服务的HTTP接口,向客户呈现Cinder能够提供的功能,负责接收和处理REST请求,并将请求放入RabbitMQ队列。当客户需要执行卷的相关操作时,能且只能向cinder-api发送REST请求。
(3)Scheduler调度服务(cinder-scheduler)cinder-scheduler对请求进行调度,将请求转发到合适的卷服务,即处理任务队列的任务,通过调度算法选择最合适的存储节点以创建卷。
(4)卷服务(cinder-volume)调度服务只分配任务,真正执行任务的是卷服务。cinder-volume管理块存储设备,定义后端设备。运行cinder-volume服务的节点被称为存储节点。
(5)备份服务(cinder-backup)备份服务用于提供卷的备份功能,支持将块存储卷备份到OpenStack对象存储(Swift)。
(6)卷提供者(Volume Provider)块存储服务需要后端存储设备(如外部的磁盘阵列以及其他存储设施)来创建卷。卷提供者定义存储设备,为卷提供物理存储空间。cinder-volume支持多种Volume Provider,每种Vol-ume Provider都能通过自己的驱动与cinder-volume协调工作
(1)客户(可以是OpenStack最终用户,也可以是其他程序)向cinder-api发送请求,要求创建一个卷。
(2)cinder-api对请求做一些必要处理后,向RabbitMQ发送一条消息,让cinder-scheduler服务创建一个卷。
(3)cinder-scheduler从消息队列中获取cinder-api发给它的消息,然后执行调度算法,从若干存储节点中选出某节点。
(4)cinder-scheduler向消息队列发送了一条消息,让该存储节点创建这个卷。
(5)该存储节点的cinder-volume服务从消息队列中获取cinder-scheduler发给它的消息,然后通过驱动在volumeprovider定义的后端存储设备上创建卷
openstack volume list
openstack volume show 54d0daec-578d-4b08-9d12-cd9b7fe62472
openstack volume create --image 620b31ce-cc4a-47ca-96df-d14f506f7368 --size 8 --availability-zone nova my-new-volume
openstack volume delete my-new-volume
将卷连接到实例
这种操作需要指定实例的ID和卷的ID
openstack server add volume 84c6e57d-a6b1-44b6-81eb-fcb36afd31b5 573e024d-5235-49ce-8332-be1576d323f8 --device /dev/vdb
扩展卷
扩展卷需要提供卷ID和新的大小。
openstack volume set 573e024d-5235-49ce-8332-be1576d323f8 --size 10
转让卷
首先创建转让卷。
openstack volume transfer request create a1cdace0-08e4-4dc7-b9dc-457e9bcfe25f
查看挂起的卷转让列表,提供转让ID和认证密钥。
openstack volume transfer request list
最后切换到另一个项目中接受转换。
openstack volume transfer request accept 6e4e9aa4-bed5-4f94-8f76-df43232f44dc b2c8e585cbc68a80
创建备份
openstack volume backup create [–incremental] [–force] VOLUME
openstack volume backup list
openstack volume backup show 04124e72-35b2-486e-a105-84e3d1725dfa
恢复备份
openstack volume backup restore BACKUP_ID VOLUME_ID
管理块存储服务配额
查看块存储服务配额
openstack project show -f value -c id PROJECT_NAME
openstack quota show PROJECT_ID
openstack quota set --volumes 15 b9d11a6ed55c4b0490b5f4124a6588f9
用户将对各种资源的需求写入模板文件中,Heat基于模板文件自动调用相关服务的接口来配置资源,从而实现自动化的云部署。
在编排服务中,资源(Resource)特指编排期间创建或修改的对象,可以是网络、路由器、子网、实例、卷、浮动IP、安全组等。
创建虚拟机实例的模板,demo-template.yaml
export NET_ID=$(openstack network list | awk '/ private / { print $2 }')
openstack stack create -t demo-template.yaml --parameter "NetID=$NET_ID" test-stack
openstack stackoutput show --all test-stack
openstack server list
openstack stack event list test-stack
openstack stack delete --yes test-stack