Openstack知识及常用命令
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对象存储服务;举个大家都在用的百度网盘的例子,很多人都会去存一些电影,但是可能有大部分电影是重复的,若每个百度网盘用户都真实的把视频存到了云端,大量的重复视频岂不是浪费了许多百度的存储空间?这时候对象存储是最好的选择,用户上传视频时,先根据算法看看云端是否有相同的内容,若查到有相同的存储信息,直接反馈用户“上传成功”,实际并没有上传的!用户下载时在云端找到相同的资源提供其下载就可以了,这样既服务了客户又节省了存储空间
Openstack常用命令:
提示:任何命令执行前都需要先执行环境变量脚本,openstack命令不同版本之间命令可能存在差异,或者组件配置问题引起的命令不可用,请根据实际环境执行命令。所有命令根据ID查询的命令基本也可通过NAME查询。
执行环境变量脚本,获得admin凭证访问 |
source admin-openrc.sh |
列出可用网络 | neutron net-list |
查看路由列表 | 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 |
列出所有安全组 | openstack security group list 或 nova secgroup-list |
查看安全组详情 | openstack security group show ID |
列出安全组所有规则 | openstack security group rule list 或 nova secgroup-list-rules default |
查看安全组规则详情 | openstack security group rule show 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 |
查看某镜像描述 | 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的 flavor | openstack flavor create --ram 512 --disk 1 --vcpus 1 m1.tiny |
用类型和镜像名称(如果名称唯一)来启动云主机 |
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 |
启动实例 |
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 |
启动实例并将其链接到卷上 | openstack server create --image cirros-qcow2 --flavor m1.tiny MyVolumeInstance |
列出所有卷 | openstack volume list |
当实例状态正常且卷状态可用时,将卷连接到实例 | 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 |