OpenStack定义:

OpenStack是一个负责启动和管理虚拟机实例的管理软件,它是搭建云平台的解决方案,可以搭建公有云、私有云和企业云。Openstack属于云计算中的IaaS服务类型

openstack核心组件及功能:

Compute(代号为"Nova") :管理计算资源
Networking Service(代号为"Neutron"):管理网络资源,为虚拟机、计算和控制节点提供网络功能
Image Service(代号为"Glance"):用于提供镜像服务,属于储存范畴
Identity(代号为"Keystone"):管理用户及其权限维护OpenStack Services的Endpoint认证和鉴权
Dashboard(代号为"Horizon"):用于提供图形用户界面
Block Storage(代号为"Cinder"):用于提供块存储功能
Object Storage(代号为"Swift"):用于提供对象存储功能
Ceilometer:提供监控服务

openstack各组件之间的关系:

下图自己绘制的关系图中各组件功能已做不同颜色区分,再梳理一下它们之间的关系:
Nova提供计算服务,所有的计算实例都由Nova进行生命周期的调度管理,如:虚机启动、挂起、停止、删除等;
启动实例不能每次都要重新安装来启动,这时就用到了Glance镜像服务;
虚机肯定需要上网,需要由Neutron提供网络服务;
既然是安装虚机,自然少不了存储空间或者空间太少需要扩容,这时需要由Cinder提供块存储服务;
以上四种服务可以让一台实例成功运行起来,但是不是谁都可以在我搭建的环境上创建虚机的,这时就用到了Keystone的鉴权认证服务;
搭建的环境是不是可以租出去呢?若租出去又该如何监控客户使用了哪些资源呢?此时需要Cellometer提供监控计费服务;客户使用的带宽、内存等不同规格收费自然不同;
若客户嫌弃命令页面操作太麻烦,需要更加友好的可视化操作页面,此时就用到了Horizon服务,也就是web端的可视化操作页面;
为了给客户提供更加优质的服务并且减少不必要的资源浪费,针对某些项目可能会用到Swift对象存储服务;举个大家都在用的百度网盘的例子,很多人都会去存一些电影,但是可能有大部分电影是重复的,若每个百度网盘用户都真实的把视频存到了云端,大量的重复视频岂不是浪费了许多百度的存储空间?这时候对象存储是最好的选择,用户上传视频时,先根据算法看看云端是否有相同的内容,若查到有相同的存储信息,直接反馈用户“上传成功”,实际并没有上传的!用户下载时在云端找到相同的资源提供其下载就可以了,这样既服务了客户又节省了存储空间

Keystone中的基本概念:

User:即用户,指通过keystone进行访问的人或程序。Users通过认证信息(凭据、账号密码等)进行验证

Tenant:即租户,指各服务中的一些可以访问的资源集合。例如,在Nova中一个tenant可以是一些主机,在Neutron中一个tenant可以是一些网络资源等。User总是默认绑定到某些tenant上

Role:即角色,指一组用户可以访问的资源权限。例如Nova中的虚拟机、Cinder中的资源。Users可以被添加到任意一个全局的或租户的角色中。在全局的role中,用户的role权限作用于所有的租户;在租户内的role中,用户仅能在当前租户内执行role规定的权限

Service:即服务,如Nova、Cinder、Glance。根据上面三个概念(User、Tenant和Role)可知一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个User尝试着访问其租户内的服务时,他必须知道这个服务是否存在以及如何访问,所以通常会使用不同的名称表示不同的服务

Endpoint:指一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道它的endpoint。因此,在keystone中包含一个endpoint模板并存储了所有服务的endpoint信息。endpoint 中包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,且具有public、private和admin三种权限

Token:指访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有有效期

他们之间的关系如下图所示

1、租户下,管理着许多用户(人或程序),这些用户可能是全局角色也可能是租户内的角色

2、每个用户都有自己的credential(凭证)用户名+密码或者其他凭证

3、用户在访问其它资源(如:Nova、Cinder)之前,需要用自己的凭据去请求keystone服务,获得验证信息(主要是Token信息)和服务信息(服务目录和它们的endpoint)

4、用户拿着Token信息,就可以去访问特定的资源啦

Openstack常用命令:

 提示:任何命令执行前都需要先执行环境变量脚本,openstack命令不同版本之间命令可能存在差异,或者组件配置问题引起的命令不可用,请根据实际环境执行命令。所有命令根据ID查询的命令基本也可通过NAME查询。

执行环境变量脚本,获得admin凭证访问

source admin-openrc.sh

列出可用网络neutron net-list
查看网络详情neutron net-show NET_ID
查看路由列表neutron router-list
查看路由详情neutron router-show ROUTER_ID
查找与网络相关并以av开头的文件neutron -h | grep av(文件名)
列出防火墙neutron firewall-list
查看防火墙详情neutron firewall-show FIREWALL_ID
查看防火墙策略详情neutron firewall-policy-show POLICY_ID
创建端口(虚拟网卡)neutron port-create subnetwork_ID --security-group sec_ID --name port_NAME
查看端口(虚拟网卡)详情neutron port-show NAME
删除端口(虚拟网卡)neutron port-delete NAME
创建安全组openstack security group create NAME
列出所有安全组openstack security group list 或 neutron security-group-list
查看安全组详情openstack security group show ID
列出安全组所有规则openstack security group rule list 或 neutron security-group-list-rules secg_NAME
查看安全组规则详情openstack security group rule show ID
添加安全组规则openstack security group rule create --remote-ip 0.0.0.0/0 --protocol icmp --egress --ethertype IPv4 <group id>
将安全组添加到主机openstack server add security group <server id> <secgroup id>
获取主机列表openstack hypervisor list
查看主机详情openstack hypervisor show NAME
列出实例openstack server list   或  nova list
列出所有实例openstack server list --all  或  nova list --all
获取主机类型列表nova flavor-list
查看主机类型详情nova flavor-show ID
实例诊断统计nova diagnostices ID
查询各租户下的资源统计信息nova usage-list

nova状态升级检查

nova-status upgrade check

列出所有主机节点nova host-list
列出主机节点资源使用率统计信息nova host-describe 主机名

列出已加载网络扩展

Openstack extension list --network

列出所有的用户openstack user list
列出认证服务目录openstack catalog list
创建镜像glance image-create IMAGENAME
列出镜像openstack image list 或 glance image-list
删除指定的镜像openstack image delete IMAGE 或 glance image-delete IMAGE
查看某镜像描述openstack image show IMAGE 或 glance image-show ID
更新镜像openstack image IMAGE 或 glance image-update ID
上传内核镜像

openstack image create cirros-threepart-kernel \

        --disk-format aki --container-format aki –public \

        --file ~/images/cirros-0.3.5-x86_64-kernel

上传RAM镜像

 openstack image create cirros-threepart-ramdisk \

        --disk-format ari --container-format ari –public \

        --file ~/images/cirros-0.3.5-x86_64-initramfs

上传第三方镜像

 openstack image create cirros-threepart --disk-format ami \

        --container-format ami –public \

        --property kernel_id=$KID -property ramdisk_id=$RID \

        --file ~/images/cirros-0.3.5-x86_64-rootfs.img

注册raw镜像

openstack image create cirros-raw --disk-format raw \

        --container-format bare –public \

        --file ~/images/cirros-0.3.5-x86_64-disk.img

列出实例openstack server list   或  nova list
显示实例详细信息openstack server show NAME/ID 或 nova show NAME/ID
创建一个为名m1.tiny的 flavoropenstack flavor create --ram 512 --disk 1 --vcpus 1 m1.tiny
列出flavoropenstack flavor list  或者模糊查找flavor  openstack flavor list | grep 关键字
用类型和镜像名称(如果名称唯一)来启动云主机

openstack server create --image IMAGE --flavor FLAVOR INSTANCE_NAME \

openstack server create --image cirros-0.3.5-x86_64-uec --flavor m1.tiny \

MyFirstInstance

查看云主机的控制台日志openstack console log show MyFirstInstance
设置云主机的元数据nova meta volumeTwoImage set newmeta=my meta data
创建一个实例快照

openstack image create volumeTwoImage snapshotOfVolumeImage

openstack image show snapshotOfVolumeImage

实例暂停

openstack server pause NAME 或 nova pase ID

openstack server pause volumeTwoImage

取消实例暂停openstack server resume NAME 或 nova resume ID
取消实例挂起

openstack server unpause NAME  或 nova unpause ID

实例挂起

openstack server suspend NAME 或 nova suspend ID

实例停止openstack server stop NAME
实例开始openstack server start NAME
实例恢复

openstack server rescue NAME 或 nova resume ID

openstack server rescue NAME --rescue_image_ref RESCUE_IMAGE

调整规格大小

openstack server resize NAME FLAVOR

openstack server resize my-pem-server m1.small

openstack server resize --confirm my-pem-server1

实例重建openstack server rebuild NAME IMAGE
实例重启openstack server reboot NAME 或 nova reboot ID
删除实例nova delete ID
将用户数据和文件注入到实例

openstack server create --user-data FILE INSTANCE

openstack server create --user-data userdata.txt --image cirros-qcow2 \

        --flavor m1.tiny MyUserdataInstance2
创建密钥对

openstack keypair create test > test.pem

chmod 600 test.pem 或

nova keypair-add --pub-key ~/.ssh/id_rsa.pub Key_NAME

查看密钥对详情

nova keypair-show Key_name

openstack keypair show Key_name

删除密钥对

nova keypair-delete Key_name

openstack keypair delete Key_name

变更密钥对nova keypair-change 
启动实例

openstack server create --image cirros-0.3.5-x86_64 --flavor m1.small \

        --key-name test MyFirstServer

使用ssh连接到实例

ip netns exec qdhcp-98f09f1e-64c4-4301-a897-5067ee6d544f \

        ssh -i test.pem cirros@10.0.0.4

在默认的安全组中,添加ping和SSH规则

openstack security group rule create default \

        --remote-group default --protocol icmp

openstack security group rule create default \

        --remote-group default --dst-port 22

创建网络

openstack network create NETWORK_NAME

创建子网openstack subnet create --subnet-pool SUBNET --network NETWORK SUBNET_NAME
创建一个云硬盘

openstack volume create --size SIZE_IN_GB NAME 或

cinder create SIZE_IN_GB --display-name  NAME --volume-type TYPE

启动实例并将其链接到云硬盘上openstack server create --image cirros-qcow2 --flavor m1.tiny MyVolumeInstance
列出所有云硬盘openstack volume list
将云硬盘挂载到主机nova volume-attach 主机ID 卷ID
当实例状态正常且云硬盘状态可用时,将云硬盘挂载到实例openstack server add volume INSTANCE_ID VOLUME_ID
登陆进实例之后管理卷组

列出存储器:fdisk -l

在卷上建立文件系统:mkfs.ext3 /dev/vdb

创建一个挂载点:mkdir /myspace

在挂载点挂载卷:mount /dev/vdb /myspace

在卷上创建一个文件:touch /myspace/helloworld.txt

                                    ls /myspace

卸载卷:umount /myspace

展示存储账户,容器以及对象的信息

swift stat

swift stat ACCOUNT

swift stat CONTAINER

swift stat OBJECT

列出容器swift list
查看端口列表neutron port-list
列出卷设备cinder list
显示卷设备详情cinder show ID
调整卷设备大小cinder extend ID 大小数值
删除卷设备cinder delete ID
创建卷设备传送请求cinder transfer-create ID
查看等待传送的卷设备cinder transfer-list
接收被传送的卷设备cinder transfer ID authKey
删除正在传送的卷设备cinder transfer -delete transferID
查看有效计算节点nova hypervisor-list
查看计算节点详情nova hypervisor-servers ID

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐