例如: nova-manage floating create ubuntu10 192.168.1.20/32 删除一个浮动ip,或者一组浮动ip
用法:nova-manage floating delete ip_range 列出所有浮动ip
用法:nova-manage floating list
分配并关联ip到实例 ,基本上要用Euca2ools命令
能手动分配的ip都是放在floating ip 地址池中中,通过create命令创建,之后就可以分配一个浮动ip给你的project,并自动从可用floating ip 地址池中移除,使用euca-allocate-address这个命令,可以获得一个在地址池中的ip,然后就可以绑定它到一个虚拟机上。
获得一个可绑定的ip地址
用法:euca-allocate-address
返回一个浮动ip地址池中的ip
关联一个floating ip 到instance
用法:euca-associate-address -i instance_id floating_ip
当你想把一个floating ip从虚拟机中收回,并放回到浮动ip地址池中时,要先来解除ip与实例的关联,然后用再收回到地址池中以便其他虚拟机使用。
解除浮动ip与虚拟机的绑定
用法:euca-disassociate-address floating_ip 把解除绑定的浮动ip放回地址池中
用法:euca-deallocate-address floating_ip(文档中是这个命令,但是这个命令并不存在,目前版本经试验用的是 euca-release-address)来把ip返回到ip池中,以便其他人用
用法:euca-release-address floating_ip
分配公网ip地址,openstack compute使用NAT来支持公网ip。
必需吧这一个ip或者一些ip块添加到floating ip ,(nova-manage floating create 命令),分配方法类似上面,例如:
nova-manage floating create my-hostname 68.99.26.170/31 euca-allocate-address 68.99.26.170
euca-associate-address -i i-00000001 68.99.26.170 确保安全组已打开
root@my-hostname:~# euca-describe-groups
GROUP admin-project default default
PERMISSION admin-project default ALLOWS icmp -1 -1 FROM CIDR 0.0.0.0/0
PERMISSION admin-project default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0
确保NAT 规则添加到iptables,这个会自动完成。
-A nova-network-OUTPUT -d 68.99.26.170/32 -j DNAT --to-destination 10.0.0.3 -A
nova-network-PREROUTING
-d
68.99.26.170/32
-j
DNAT
--to-destination10.0.0.3
-A nova-network-floating-snat -s 10.0.0.3/32 -j SNAT --to-source 68.99.26.170
键入 ip addr 去核对公共地址,例子中是68.99.26.170,已经被加入到你的公共接口中
image管理
镜像管理openstack提供了下面几个命令
nova-mange image all_register convert image_register kernel_register ramdisk_register
但目前用的都是做好的镜像,上面那些命令还没用到,自己制作的镜像可能会用到。现在是直接用uec命令:uec-publish-tarball 来发布镜像。
用法:uec-publish-tarball $image [bucket-name] [hardware-arch] bucket-name 镜像仓库名字 hardware-arch 硬件参数
例如:uec-publish-tarball ubuntu-10.10-server-uec-i386.tar.gz mybucket x86_64 这个命令将会返回三个参数emi,eri,eki emi : eucalyptus machine image 镜像ID eri: eucalyptus ramdisk image eki : eucalyptus kernal image
Amazon 也有相似的参数,命名为 ami,ari ,aki openstack也是沿用ami ,ari ,aki 的表示 列出发布的镜像
用法:euca-describe-images
instance_type/flavors管理
实例类型管理,openstack使用这个实例类型来规定一个虚拟机所具有的cpu数,内存,硬盘大小等相关参数。一个虚拟机是和一个instance_type绑定在一起的。
创建一个instanc_type/flavors
用法:nova-manage instance_type create name memory vcpus local_gb flavorid [swap] [rxtx_quota] [rxtx_cap] 列出一个所有创建的实例类型
用法:nova-manage instance_type list 删掉一个实例类型
用法:nova-manage instance_type delete name 只是在数据库中标记了一下,表示该实例类型被删除了
VM/instance管理
对于虚拟机的管理,openstack提供的命令并不多,只有如下两个
用法:nova-manage vm list 列出所有的虚拟机实例
用法:nova-mange vm live_migration vm_id dest 动态迁移虚拟机vm_id到·
目标主机上dest
大多虚拟机管理的命令都是euca2ools命令。
在开启虚拟机时需要一个keypair,这个keypair会在创建虚拟机时注册到虚拟机上,用于ssh登录时的用户认证。添加keypair的命令是:
euca-add-keypair keypair_name
注意这个命令创建的keypair需要使用这些环境变量EC2_URL, EC2_ACCESS_KEY, EC2_SECRET_KEY, EC2_CERT, EC2_PRIVATE_KEY, S3_URL, EUCALYPTUS_CERT等,这些环境变量都存储在novarc文件中,需要先source一下。
例如:euca-add-keypair mykey>mykey.priv
mykey 是keypair 名字,会记录在数据库中,用于创建实例等用途,mykey.priv 记录了这些内容,用于ssh登录,同时要更改mykey.priv权限,ssh规定的。
chmod 600 mykey.priv 下面开启一个虚拟机实例
euca-run-instances [-n, --instance-count count] [-g, --group group_name] [-k, --key keyname] [--addressing addressing] [-t, --instance-type instance_type] [-z, --availability-zone zone] [--kernel kernel_id] [--ramdisk ramdisk_id] [-h, --help] [--version] [--debug] image_id
-n: 要运行实例的数量 -g; 实例运行的的安全组 -k: keypair 名字
--addressing 寻址方式(例如 private) -t : 实例类型
-z: 实例可以运行的zone
--kernel :发布实例时使用的kernel ID --ramdisk :发布实例时使用的ramdisk ID image_id :必须填的,上传的镜像id
例如:euca-run-instances ami-0000000c -k mykey -t m1.small
mykey就是上面创建的keypair,m1.small是一个instance_type 列出运行的虚拟机实例
euca-describe-instances nova-manage vm list 登录虚拟机实例,需要先授权端口
euca-authorize -P icmp -t -1:-1 default 授权ping euca-authorize -P tcp -p 22 default 授权访问22端口 ssh -i mykey.priv root@172.16.0.4
mykey.priv:就是前面生成的mykey,priv,记录的是keypair
如果ping不通或者ssh登录不上,可以检查一下dnsmasq这个进程,在有虚拟机开启的情况下,有两个dnsmasq进程,如果不是这么回事,那么运行:
killall dnsmasq
service nova-network restart
停掉一个虚拟机实例:
euca-terminate-instance i-00000027
volume逻辑卷管理
对于逻辑卷管理,openstack只提供了两个命令
nova-manage volume delete
nova-manage volume reattach
虚拟机,一般是在主机重启后运行这个命令
其他的都是用euca2ools命令,而且基本上用euca2ools命令也就足够了。
Nova-volume 是openstack在linux上使用LVM的iSCSI 解决方案,注意一个volume 一次只能绑定到一个实例。
首先使用LVM创建一个逻辑卷组:nova-volumes,这是nova默认使用的逻辑卷组,创建逻辑卷等操作,都是操作的这个逻辑卷组。创建这个逻辑卷组已在安装过程中说明。
创建一个volume
euca-create-volume -S, --size size | --snapshot snapshot_id -z zone [-h, --help] [--version] [--debug]
-s --size volume 的大小 (单位:GB)
--snapshot :用来创建volume的snapshot Id,size 和snapshot id 必须要其中一个 - z --zone 创建volume的可用 zone
例如:euca-create-volume -s 1 -z nova
显示所有逻辑卷
euca-describe-volumes 绑定volume
euca-attach-volume -i, --instance instance_id -d, --device device [-h, --help] [--version] [--debug] volume_id
-i :实例 id
-d: 设备名字,在虚拟机中显示,如果虚拟机中有了/dev/vda,/dev/vdb,那么这里是/dev/vdc volume_id :创建的volume_id
例如:euca-attach-volume vol-00000009 -i i-00000008 -d /dev/vdc
解除绑定的volume id
euca-detach-volume
euca-delete-volume
service 管理
nova-manage service describe_resource 显示某主机开启的服务,及其状态 nova-manage update_resource
fixed 固定ip管理
列出某个主机上所有的固定ip
用法:nova-manage fixed list [hostname]
新版本的openstack还提供了nova-manage fixed reserve
openstack的dashboard利用的是Python Web 框架 Django来完成的,可以在此基础上再做深入开发,新版的dashboard增加更多功能。
当然可以开发自己的dashboard。