设为首页 收藏本站
查看: 1099|回复: 0

[经验分享] openstack 初步部署和测试

[复制链接]

尚未签到

发表于 2015-4-12 11:17:49 | 显示全部楼层 |阅读模式
openstack 初步部署和测试openstack 功能openstack 提供的是一个云平台实现方案,类似于其他的云实现,openstack 提供了基于 虚拟机的云计算服务(nova);云存储服务(swift),以及镜像服务(glance),在 openstack 的 新版本 diablo 中还引进了 openstack 一直缺乏的认证功能(代号为 keystone),还提供了改进的 web 界面管理 dashboard(Horizon)。我们这里已经安装的版本是 openstack 的上一版 cactus, 提供了一个简单的 dashboard 可以体验。 下面介绍 openstack 提供的云计算服务(nova) openstack 官方给出的框架如下:我们看到 openstack 的两个核心组件:一个是消息队列 Queue,使用的 Rabbitmq-serer, 另一个是数据库, 这里使用的是 mysql 数据库。 nova 的 5 个关键部分: nova-api, nova-compute, nova-network,nova-schedule 和 nova-volume 之间的消息传递都是通过消息队列服务器来完 成,它们之间并无数据的传递,并通过数据来记录相关状态。 对镜像服务 glance,openstack 专门提供了一个 glance-api 接口, 所有镜像服务都是通过这 个接口与镜像存储和相关数据库联系的。nova-api:提供命令接口, 包括 openstack 自身的用户命令 (以 nova-manage 开头的命令) , 和 EC2 中的相关命令(格式为 euca-********) ,其中 EC2 的命令实现的比较全面一些。 nova-compute:提供云计算的核心服务, 在计算节点上必须跑的服务, 而且可以在计算节 点上只跑 nova-compute 服务,来支持虚拟机的创建删除迁移等功能,该服务基本上就是对 所有虚拟机的相关操作。 nova-network: nova 提供的网络服务, 负责分配 ip 地址, 配置网关, 网桥, 修改 iptables, 创建路由等功能, 主要是要完成各个虚拟机之间的连通, 以及不同主机上的不同虚拟机的通 信问题。 nova-schedule:是 nova 的一个策略服务器,从消息队列中取出要创建虚拟机消息并决定 虚拟机要运行在那个位置上。 nova-volume:nova 的逻辑卷管理服务,openstack 使用 LVM 来管理磁盘,并能够把分 区挂载到虚拟机上当做一个硬盘使用。 dashboard:openstack 提供了一个简易的 web 界面。dashboard 把请求转化为 nova-api 能接受的命令。 nova 提供的功能主要有以下几个方面: 1.用户管理 提供用户账户的管理,包括管理员账户和普通用户账户的管理,这些账户 可以创建自己的工程,并创建虚拟机,发布应用等 2.权 限 管 理 openstack 提 供 的 权 限 有 Cloud Administrator , IT Security , SystemAdministrator,Network Administrator,Developer,Project Manager(创建工程时的默认角 色)六种,可以给用户添加或者删除某个角色,但不能创建新的角色3.项目管理 用户可以创建删除项目,添加可访问用户,创建压缩用户证书和环境变量等 4.网络管理 给虚拟机提供 DHCP 或者 VLan 等网络管理,并能对虚拟机绑定外网 ip,实现外网ip 的分配回收等管理。5.镜像管理 提供虚拟机镜像上传,存储,注册 6.虚拟机管理 提供虚拟机的创建,删除,重启,迁移等操作, 7.虚拟机类型管理 创建虚拟机时需要制定虚拟机类型,虚拟机类型规定了内存,cpu,硬盘等信息。8.逻辑卷管理 使用 LVM 创建逻辑卷,并绑定到虚拟机上,显示为增加的硬盘。openstack 安装过程 中心控制节点上的安装: 中心控制节点上的安装:安装有脚本安装和手动安装,这里进行手动安装,系统 ubuntu10.04 LTS 首先要配置 nova 包仓库,需要先安装 python-software-properties,才能添加 apt 仓库, 如果是用 PXE 方式安装的系统,那么 ubuntu 源配置的应该都不对,需要重新配置, /etc/apt/sources.list 文件,并 apt-get update sudo apt-get install python-software-properties 添加 nova 包源 sudo add-apt-repository ppa:nova-core/release 再更新sudo apt-get update 安装消息队列服务器,Rabbitmq sudo apt-get install -y rabbitmq-server 安装 python 依赖文件,这里需要 python 版本在 2.7 一下,否则会报错。ubuntu11.10 默 认安装的 python3.0,版本过高。 sudo apt-get install -y python-greenlet python-mysqldb 安装 nova 包,其中需要的一些依赖文件将被自动安装 sudo apt-get install -y nova-common nova-doc python-nova nova-api sudo apt-get install -y nova-network nova-objectstore nova-scheduler nova-compute 安装工具支持,euca2ools 和 unzip sudo apt-get install -y euca2ools unzip 重启机器,因为安装过程中出现过系统崩溃的情况,还不明原因,所以安装还是要谨慎 一些。 安装数据库 mysql,期间需要输入访问密码。 sudo apt-get install -y mysql-server 编辑/etc/mysql/my.cnf,修改‘bind-address' 从 127.0.0.1 到 0.0.0.0,就是不仅仅只有本机 能登陆该 mysql 服务器,并重启 mysql 服务 sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf sudo service mysql restart 创 建 数 据 库 'nova' , 数 据 库 名 字 要 和 /etc/nova/nova.conf 中 配 置 的 数 据 库 连 接 --sql_connection 一致。 sudo mysql -uroot -pmysql -e 'CREATE DATABASE nova;' 创建用户 nova 并授权其对数据库全部控制权 sudo mysql -uroot -pnova -e "GRANT ALL PRIVILEGES ON *.* TO 'nova'@'%' WITH GRANT OPTION;" 给用户 nova 设置密码例如:novapass sudo mysql -uroot -pnova -e "SET PASSWORD FOR 'nova'@'%' =PASSWORD('novapass');" 使用用户名 nova 和密码 novapass 可以登录数据库 配置网络,这里配置了两块网卡。但用到的就只有 eth0,而 eth1 就做一个备选的网口。 在安装的 openstack 中并没有用到, openstack 支持双网卡配置, 但 修改 /etc/network/interface 如下: auto br100 iface br100 inet static bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.253auto eth1 iface eth1 inet static address 192.168.1.17 netmask 255.255.255.0 gateway 192.168.1.253 重启网络服务 /etc/init.d/networking restart 修改 openstack 配置文件/etc/nova/nova.conf 如下: -dhcpbridge_flagfile=/etc/nova/nova.conf --dhcpbridge=/usr/bin/nova-dhcpbridge --logdir=/var/log/nova --state_path=/var/lib/nova --lock_path=/var/lock/nova --verbose=1 --s3_host=192.168.1.10 --rabbit_host=192.168.1.10 --osapi_host=192.168.1.10 --cc_host=192.168.1.10 --FAKE_subdomain=ec2 --ec2_host=192.168.1.10 --ec2_url=http://192.168.1.10:8773/services/Cloud --sql_connection=mysql://nova:novapass@192.168.1.10/nova #--image_service=nova.image.glance.GlanceImageService #--glance_host=192.168.1.10 #--glance_port=9292 --network_manager=nova.network.manager.FlatDHCPManager --flat_network_dhcp_start=172.16.0.2 --fixed_range=172.16.0.0/24 --iscsi_ip_prefix=192.168.1 --bridge_interface=br100 --flat_network_bridge=br100 --flat_interface=eth0 --flat_injected=False --num_networks=100 #--public_interface=eth1 --network_size=256 --routing_source_ip=192.168.1.10 --libvirt_type=kvm --use_syslog=true --connection_type=libvirt 重启 nova 所有服务 restart libvirt-bin; restart nova-network; restart nova-compute;restart nova-api; restart nova-objectstore; restart nova-scheduler 查看 nova-network 是否启动起来了,安装过程中有时会起不来,查看 dnsmasq 是否启动 了, 它使用的端口是 53 端口, 一次安装过程中由于已经开启了 bind9 服务, 占用了 53 端口, 需要杀掉 bind9 进程。dnsmasq 服务是给虚拟机提供网络相关服务用的。 同步数据库 nova,openstack 会在 nova 数据库中建一些表 /usr/bin/nova-manage db sync 也可以) (直接用 nova-manage db sync 也可以) 创建管理员用户:nova (名字随意,参数 admin 表示是管理员账户 ) /usr/bin/nova-manage user admin nova 返回 EC2_ACCESS_KEY 和 EC2_SECRET_KEY 创建工程(项目) ,需要制定工程名字和创建者。 /usr/bin/nova-manage project create novaproject nova 创建虚拟机网络 /usr/bin/nova-manage network create 172.16.0.1/24 1 256 注意:其中 172.16.0.1/24 必须在 nova.conf 中配置的--fixed_range 的范围内,1 表 示创建 1 个网络,256 表示每个网络有多少个 ip。 上述创建的用户,工程和网络都会记录在数据库 nova 中。 创建证书 mkdir –p ~/creds 目录随意 nova-manage project zipfile novaproject nova ~/creds/novacert.zip 这个命令会在~/creds 文件夹中创建 novacert.zip 文件,里面压缩了记录用户认证和环 境变量的一些文件。解开这个文件 unzip ~/creds/novacert.zip -d ~/creds/ 在文件夹 creds 下会看到 cacert.pem cert.pem novarc pk.pem 这几个文件,其中 novarc 记录的是环境变量,其他的是一些认证文件 source ~/creds/novarc 就会注册该环境变量,当然也可以加到.bashrc 中。 授权对结算节点上的虚拟机的访问,要使用使用 euca-authorize 命令 euca-authorize -P icmp -t -1:-1 default 授权 ping euca-authorize -P tcp -p 22 default 授权 ssh 注意:如果 ping 不通虚拟机的话,需要看一下 dnsmasq 服务,当你有虚拟机在运 行的情况下, (当然,到现在为止,还没有开启一个虚拟机) ,要检查是否有两个 dnsmasq 服务在运行中,如果不是,运行下面命令: killall dnsmasq service nova-network restart在计算节点上安装 nova在 计 算 节 点 上 只 需 要 一 个 nova-compute 服 务 启 动 就 行 了 , 所 以 只 需 要 安 装 nova-compute 服务。 修改/etc/nova/nova.conf 文件(基本上与控制节点上的一样) ,当然一些配置网络的 参数就不需要了。必须要配置消息队列服务器地址,网络服务器地址,数据库地址,控 制中心地址等再配置网桥, 因为 nova 使用的是 br100 作为网桥, 所以/etc/network/interfaces 如下: # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto br100 iface br100 inet static bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx 重启网络服务 /etc/init.d/networking restart 配置完 nova.conf ,和网络之后,重启 nova-compute 和 libvirt-bin restart libvirt-bin; service nova-compute restart 为了避免 KVM 的问题和 nova 的访问权限,修改下面权限 chgrp kvm /dev/kvm chmod g+rwx /dev/kvm 在计算节点上要配置一个 iptables ,因为在计算节点上没有启动 nova-api 服务, 配置一个 nat,跳转到 nova-api 上,这样 UEC 镜像才能取得正确的数据。 # iptables -t nat -A PREROUTING -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination $NOVA_API_IP:8773 测试计算节点服务是否已经在控制节点上生效,运行下面命令 nova-manage service list ubuntu10 nova-scheduler enabled :-) 2011-11-04 08:47:56 ubuntu10 nova-network enabled :-) 2011-11-04 08:48:00 ubuntu10 nova-compute enabled :-) 2011-11-04 08:47:59 ubuntu10 nova-volume enabled :-) 2011-11-04 08:47:57 ubuntu12 nova-compute enabled :-) 2011-11-04 08:48:02 ubuntu12 nova-scheduler disabled XXX 2011-11-02 04:50:16 这里不仅需要服务是 enabled,而且需要 :-) +时间, 这个时间表示最近的一次服务是否开 启测试的时间(最后一次心跳时间) 如果一切正常,那么两台机器之间的通信就没有问题了在 openstack 上开启虚拟机发布镜像 uec-publish-tarball ubuntu-10.10-server-uec-i386.tar.gz mybucket返回三个值,ami,aki,ari 创建一个 ssh 登录 keypair,在这之前需要先 source ~/creds/novarc 也就是要把环境变量配 置好,因为这个命令要把一些环境变量配置为 ssh 登录 keypair。 euca-add-keypair mykey > mykey.priv 名字随意 修改 keypair.priv 权限,太高权限出错 chmod 600 mykey.priv 开启一个虚拟机 euca-run-instances ami-g06qbntt -k mykey -t m1.tiny 查看虚拟机列表 euca-describe-instances 找到刚建的虚拟机,如果已经授权过了对虚拟机的访问,则 ping 其 ip ,ssh 登录测试, 一般都会失败,可能是程序 bug,但也有正常的时候,这时要检查一下 dnsmasq 是否开启了 两个服务,若不是 killall dnsmasq ;service nova-network restart。 可以查看/var/lib/nova/instances/instance-******/console.log 一般还不行,查看 ip ad sh,查看 br100 中两个 ip 的位置,如果物理机 ip 在第一位,那 么一般都不会 ping 通虚拟机,这时要删掉这两个 ip,在分别加上,先加虚拟机网络的网关 ip, 再加物理机 ip。 先删掉 br100 上的两个 ip 地址 删掉 172 的网段 ip addr del 172.16.0.1 dev br100 再删掉 br100 上的 192 网段 ip addr del 192.168.1.10 dev br100 然后再添加 172 网段, (先添加的显示在第一位) ip addr add 172.168.0.1/24 brd 172.16.0.255 dev br100 然后再添加 192 网段,通过 ip ad sh 显示 :172 在 192 的前面 ip addr add 192.168.1.10/24 brd 192.168.1.255 dev br100 然后检查 ip ad sh ,虚拟机网段要在第一位 重启服务 再次新建个虚拟机,基本上就能 ping 通,也能 ssh 登录上了,这个问题太让人费解了 当然在删除 ip 的过程中,会把一些默认路由也删掉了。 停止一个虚拟机命令: euca-terminate-instances i-1b0bh8n手动分配 ip 地址开启一个虚拟机后,openstack 会自动为其分配一个 ip 地址,可以理解为固定 ip 地址 (fixed_ips),openstack 中还存在浮动 ip 地址(floating_ips),利用浮动 ip,可以手动给虚拟 机分配 ip 地址,内网和外网的都可以,同样要使用浮动 ip 地址也是要先建立浮动 ip 的地址 池。 nova-manage floating create [hostname] [cidr]:为特定主机创建特定的浮动地址,可以 是一个 ip 地址,也可以是一个子网。 nova-manage floating destroy [hostname] [cidr]:删除特定主机上的某浮动 ip nova-manage floating list 显示浮动 ip 列表创建好浮动 ip 地址池后可以用下面命令从池中获取一个 ip 地址。 euca-allocate-address 返回一个浮动 ip 地址池中的 ip 地址,然后就能分配这个 ip 地址给虚拟机 euca-associate-address -i [instance_id] [floating_ip] 这样就绑定 floating_ip 到 instance_id,可以 ping 和 ssh 测试一下 当要把这个 ip 地址与虚拟机解除绑定时,运行 euca-disassociate-address[floating_ip] 解除浮动 ip 和虚拟机的绑定。 euca-deallocate-address [floating_ip] 返回一个 ip,这个 ip 返回到 ip 池里,而且 euca-allocate-addressk 可以再次分配这 个 ip 给其他虚拟机使用。配置逻辑卷 配置逻辑卷安装 lvm,openstack 使用 lvm 管理逻辑卷,建立的逻辑卷可以分给虚拟机,在虚拟机看 来是一块硬盘。openstack 需要 nova-volume 服务。 安装 lvm2 和nova-volume apt-get install lvm2 nova-volume 可以用一块单独的分区, 也可以用一个回环设备做个测试, 这里使用的是回环设备测试 dd if=/dev/zero of=/tmp/nova-volumes.img bs=1M seek=10000 count=0 losetup --show -f /tmp/nova-volumes.img vgcreate nova-volumes /dev/loop0 这里创建 nova-volume 逻辑卷组 逻辑卷组,openstack 默认 接下来需要开启 iscsitarget 服务,安装 iscsitarget 时,默认并没有启动,做如下两步: sed -i ‘s/false/true/g’ /etc/default/iscsitarget ’ service iscsitarget start 查看 iscsitarget 服务有没有启动起来,有时就启动不起来,可以试一试下面的命令: /etc/init.d/open-iscsi start 一次排错,在运行完这条命令之后就可以启动 iscsitarget 服务了。。 。。 继续配置 nova-volume,重启 nova-volume 服务。 service nova-volume restart nova-manage service list 可以看到 nova-volume 服务已经启动成功 由于前面已经用 LVM 建立了一个逻辑卷组 nova-volumes,这里直接用这个卷组创建逻 辑 卷 , 并 绑 定 到 虚 拟 机 上 ,euca2ools 命 令 : euca-create-volume euca-attach-volume euca-detach-volume euca-delete-volume euca-describe-volumes euca-create-volume -s 1 -z nova -s:大小 单位 G, -z 区域,一般是 nova 区域, : euca-describe-volumes 可以显示创建的逻辑卷 给虚拟机绑定磁盘(逻辑卷) euca-attach-volume vol-0000000e -i i-00000027 -d /dev/vdb vol-0000000e :逻辑卷 id -i 实例 id,也就是虚拟机 id -d 显示在虚拟机中的设备名称,如果虚拟机已经有了 vda 、vdb ,那么这里就是 /dev/vdc 然后登录虚拟机 i-00000027 用命令 fdisk -l ,发现多了块磁盘 /dev/vdbeuca-detach-volume euca-delete-volume 分别用来解绑逻辑卷,和删除逻辑卷动态迁移更新系统,升级硬件等都需要用到动态迁移,文件夹: NOVA-INST-DIR/instances/ (一 般是/var/lib/nova/instances/)需要 mount 到共享存储上,这里用的是 NFS。 首先要保证主机之间 ping 主机名时能够相互 ping 通。 ping hostA ping hostB ping hostC 安装 nfs: apt-get install nfs-kernel-server 在中心机上 配置 /etc/exports,添加内容如下: /var/lib/nova/instances ubuntu10/255.255.255.0(rw,sync,fsid=0,no_root_squash) /etc/init.d/nfs-kernel-server restart 修改文件 /etc/default/nfs-common 设置 NEED_IDMAPD =yes 重启 /etc/init.d/nfs-kernel-server restart /etc/init.d/idmapd restart 这里用到了 idmapd 这个进程,如果不配置该进程的话,那么共享目录里的在客户端看 不到共享文件的所属主和组,也不是 nogroup,而是一个很大的数字,这样在 nfs 客户端是 改不了文件所属主和组的,必须要配置 idmapd 这个进程,并开启该服务,如果这个服务没 配置好开启,那么会出现"unable to set user and group to 107:114 on /var/lib/nova/instanc***" Remote I/O error"。 配置 nfs 客户端 修改文件 /etc/fstab添加内容如下: ubuntu10:/ /var/lib/nova/instances nfs4 defaults 0 0 配置了 nfs4,所以 ubuntu10 后面直接用 "/" 在两台机器上配置 libvirt-bin 点 10 上 修改/etc/libvirt/libvirtd.conf 文件如下: 改前 : #listen_tls = 0 改后: listen_tls = 0 改前 : #listen_tcp = 1 改后: listen_tcp = 1 添加: auth_tcp = "none" 修改 /etc/init/libvirt-bin.conf 改前 : exec /usr/sbin/libvirtd $libvirtd_opts 改后 : exec /usr/sbin/libvirtd -d -l 修改 /etc/default/libvirt-bin 改前 :libvirtd_opts=" -d"改后 :libvirtd_opts=" -d -l" 然后重启 libvirt-bin 在客户机上挂载 # mount -a -v 如果失败可以试着关一下防火墙 ls -ld NOVA-INST-DIR/instances/ 挂载成功就可以试着迁移一下了,运行下面命令,查看各个机器上服务状态,需要是 enable +":-)"都存在。 nova-manage service list ubuntu10 nova-scheduler enabled :-) 2011-11-04 08:47:56 ubuntu10 nova-network enabled :-) 2011-11-04 08:48:00 ubuntu10 nova-compute enabled :-) 2011-11-04 08:47:59 ubuntu10 nova-volume enabled :-) 2011-11-04 08:47:57 ubuntu12 nova-compute enabled :-) 2011-11-04 08:48:02 ubuntu12 nova-scheduler disabled XXX 2011-11-02 04:50:16 前 5 个服务是正常的 如果 ubuntu10 和 ubuntu12 上的 compute 服务都开启, 并且中心控制机 ubuntu10 上的其 他服务都正常,查看一下 compute 节点上的资源情况 nova-manage service update_resource ubuntu12 迁移虚拟机 nova-manage vm live_migration i-00000003 ubuntu12 顺利的话迁移成功。 否则,查看 nova-scheduler.log 和 nova-manage.log 以及 ubuntu12 上的 nova-compute.log 日志,看哪里出错了。 首先在测试共享目录的时候在客户机上 nova-compute.log 可能会出现, permission denied '/var/lib/nova/instance/tmp_OXirt' 而在 nfs 服务器上的 nova-scheduler.log RemoteError: UnboundLocalError local variable 'filename' referenced before assignment 那么权限问题,修改目录权限 共享目录中把权限改了 chmod 777 /var/lib/nova/instances 再次运行迁移命令,出现下面但是 euca-describe-instances 时,发现可能并没有迁移 继续查看 compute 节点上的 nova-compute.log unable to set user and group to 107:114 on /var/lib/nova/instanc***" Remote I/O error"。 。 依然是权限问题,不能够修改文件所属主, 解决这个问题就是要配置好 idmap 服务。 然后迁移,又出现错误直接把 console.log(/var/lib/nova/instances/instance-****/console.log)文件权限改为 777, 再次迁移,安装过程中在这一步就可以迁移了。 所以这里遗留的问题就是,每次迁移都要修改 console.log 权限。 同属于这一个问题的另一个现象是,当在 compute 节点上直接开启一个虚拟机时,直接 失败,日志中的问题和上面一样。同样更改 console.log 权限为 666,再次 reboot 该虚拟机, 发现虚拟机正常启动起来了。所以这两个问题应该都是权限问题。 论坛中也说这是两台机器中用户 nova 的 uid 不一样造成的,说是在装 openstack 时,先 安装 nova,再安装 mysql 和 rabbitmq 就行了,应该是要求两台机器安装的顺序必须是一样的 才行。镜像管理openstack 提供了自己的镜像服务器 glance。 这里没有使用 glance, 用的是默认的镜像服 务存储 objectstore openstack 支持自己新建虚拟机镜像,并支持 windows 镜像,制作镜像目前没有做过任 何镜像。openstack 的 apiopenstack 提供了两套 api,一个是 openstack 自己的 api,大多都以 nova-manage 开头,另 一个是 euca2ools 提供的 Api,大多以"euca-"为前缀。 输入 nova-manage ,会看到还有下面这些二级命令 user account project role shell vpn fixed floating network vm service db volume instance_type image flavor 从这些命令中,我们可以看到 nova-manage 都管理了哪些功能。 再看一下 euca2ools 命令: euca-add-group euca-describe-images euca-add-keypair euca-describe-instances euca-allocate-address euca-describe-keypairseuca-associate-address euca-describe-regions euca-attach-volume euca-describe-snapshots euca-authorize euca-describe-volumes euca-bundle-image euca-detach-volume euca-bundle-vol euca-disassociate-address euca-confirm-product-instance euca-download-bundle euca-create-snapshot euca-get-console-output euca-create-volume euca-modify-image-attribute euca-delete-bundle euca-reboot-instances euca-delete-group euca-register euca-delete-keypair euca-release-address euca-delete-snapshot euca-reset-image-attribute euca-delete-volume euca-revoke euca-deregister euca-run-instances euca-describe-addresses euca-terminate-instances euca-describe-availability-zones euca-unbundle euca-describe-groups euca-upload-bundle euca-describe-image-attribute euca-version 另外在发布镜像的时候,用到 uec 的命令。 uec-publish-tarball $image [bucket-name] [hardware-arch]用户管理创建管理员用户 用法: 用法: nova-manage user admin name [access] [secret] 其中 access 和 secret 可选,没有的话系统会自动生成一个。创建普通用户 用法:nova用法:nova-manage user create name[access] [secret]access 和 secret 可选 删除一个存在的用户 用法: nova用法: nova-manage user delete username显示一个用户的 accesskey 和 secretkey 用法:nova用法:nova-manage user exports username 显示所有用户 用法:nova用法:nova-manage user list 修改用户的 secretkey,accesskey,和管理员标志 用法:nova用法:nova-manage user modify name access secret is_admin is_admin:是否改为管理员 ,取值 'T' 或者'F' 任何参数留空(表示为'')就会忽略掉这个参数的修改 例如:nova-manage user modify 废除一个用户证书 用法:nova用法:nova-manage user revoke userid  test1 '' secret '' 表示修改 test1 的密码为 secretproject 管理添加一个用户到一个 project用法:nova用法:nova-manage project add project_id user_id 创建一个 project 用法:novacreate 用法:nova-manage project create name project_manager [description] nama : project id project_manager :一个 user id,作为 project 管理者 [description] :可选,描述信息 删掉一个存在的 project 用法:nova-manage project delete projectname novanova 获取一个用户和它对应的 project 的环境变量,返回一个 novarc(默认)文件 用法:nova用法:nova-manage project environment project_id user_id [filename='novarc] project 列表 用法:nova用法:nova-manage project list 修改一个 project 用法:nova用法:nova-manage project modify name project_manager [description] 修改该 project 的 project 管理员为新的 user,使新的用户拥有 projectmanager 角色 显示一个 project 的相关信息 novanova-manage project quota project_id [key] [value] 例如:root@ubuntu10:~# nova-manage project metadata_items: 128 gigabytes: 1000 floating_ips: 10 instances: 10 volumes: 10 cores: 20 从一个 project 中移除一个 user 用法:nova用法:nova-manage project remove project_id user_id 删除与某个 project 相关的数据(如网络地址等) 用法:nova用法:nova-manage project scrub project_id 把用户的 userid 和 projectid 及其相关证书,压缩到一个文件中 用法:nova用法:nova-manage project zipfile project_id user_id [filename='nova.zip'] 例如:nova-manage project zipfile testproject test1 creds/novatest1.zip quota testprojectaccount 管理功能类似于 project 管理,不太明白它们之间的区别nova-manage account add nova-manage account create nova-manage account delete nova-manage account list 添加用户到 project 创建一个新的 project 删除 project 生成一个环境变量文件 显示 projectnova-manage account environmentnova-manage account modify nova-manage account quota nova-manage account remove nova-manage account scrub nova-manage account zipfile修改一个 project 的管理员 设置或者显示定额 从一个 project 中删除某个用户 删除与一个 project 相关的数据,例如网络等。 。 把登录 project 的用户证书压缩到.ziprole 管理openstack 的用户角色有六种,分别是 Cloud Administrator(cloudadmin 云管理员) ,ITSecurity(itsec , it 安 全 管 理 ) , System Administrator (sysadmin , 系 统 管 理 ) , Network Administrator netadmin, ( 网络管理员)Developer 开发者)Project Manager(projectmanager, , ( , 创建工程时的默认角色,工程管理员) 给一个用户添加某个角色 用法:nova用法:nova-manage role add user role [project] 若指定 project,那么就是添加 project 上的角色 判断一个用户是否有某个角色 用法:nova用法:nova-manage role has user role [project]判断 user 是否具有 role 角色,如果指定了 project,那么只有当 user 拥有全局角 色和 project 角色时,才返回真,对于判断角色 projectmanager,必须指定 project. 删除一个用户的角色 用法: 用法:nova-manage role remove user role [project]若指定 project,那么就是删除 user 在 project 上的这个角色network 管理创建用于分配的 ip 地址池,类似于虚拟机内网。 用法: 用法:nova-manage network create fixed_range=FLAG, [num_networks=FLAG], [network_size=FLAG], [vlan_start=FLAG], [vpn_start=FLAG], [fixed_range_v6=FLAG]例如:nova-manage network create 172.16.0.1/24 1 256 创建 172.16.0.1/24 内的 1 个网络,256 个 ip 地址 其他的参数目前还没用过。 显示创建的网络 用法:nova用法:nova-manage network list 删除一个网络 用法:nova用法:nova-manage network delete network fixed_range :就是上面 list 时显示的 例如:nova-manage network delete 172.16.0.1/24 注意:如果删除网络, fixed_ips 地址删掉,需要手动删除。 注意:如果删除网络,并不会把数据库中的 fixed_ips 表的 ip 地址删掉,需要手动删除。 上面是固定 ip 的管理,下面是 floating ip(浮动 ip?)的管理 创建一定范围内的浮动 ip,可以是一个,也可以是一组。 用法:nova用法:nova-manage floating create host ip_range例如: nova-manage floating create 删除一个浮动 ip,或者一组浮动 ipubuntu10 192.168.1.20/32用法:nova用法:nova-manage floating delete ip_range 列出所有浮动 ip 用法:nova用法:nova-manage floating list 分配并关联 ip 到实例 ,基本上要用 Euca2ools 命令 能手动分配的 ip 都是放在 floating ip 地址池中中,通过 create 命令创建,之后就可以分配一 个浮动 ip 给你的 project,并自动从可用 floating ip 地址池中移除,使用 euca-allocate-address 这个命令,可以获得一个在地址池中的 ip,然后就可以绑定它到一个虚拟机上。 获得一个可绑定的 ip 地址 用法:euca-allocate-address 用法:euca-allocate-address 返回一个浮动 ip 地址池中的 ip 关联一个 floating ip 到 instance 用法:euca-associate用法:euca-associate-address -i instance_id floating_ip 当你想把一个 floating ip 从虚拟机中收回,并放回到浮动 ip 地址池中时,要先来解除 ip 与实 例的关联,然后用再收回到地址池中以便其他虚拟机使用。 解除浮动 ip 与虚拟机的绑定 用法:euca-disassociate用法:euca-disassociate-address floating_ip 把解除绑定的浮动 ip 放回地址池中 用法:euca- eallocatefloating_ip(文档中是这个命令,但是这个命令并不 用法:euca-deallocate-address floating_ip 存在,目前版本经试验用的是 euca-release-address)来把 ip 返回到 ip 池中,以便其他人用 用法:euca-release用法:euca-release-address floating_ip 地址,openstack compute 使用 NAT 来支持公网 ip。 分配公网 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,这个会自动完成。 nova-network--to to-A nova-network-OUTPUT -d 68.99.26.170/32 -j DNAT --to-destination 10.0.0.3 -A nova-networknova-network-PREROUTING -d 68.99.26.170/32 68.99.26.170/32 -j DNAT --to-destination10.0.0.3 --toto nova-network-floating--to to-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用法:nova-manage instance_type create name memory vcpus local_gb flavorid [swap] [rxtx_quota] [rxtx_cap] 列出一个所有创建的实例类型 用法:nova用法:nova-manage instance_type list 删掉一个实例类型 用法:nova用法: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-addeuca-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[- --instance instance[- --group [euca-run-instances [-n, --instance-count count] [-g, --group group_name] [-k, --key [---addressing [- --instance instance[--key keyname] [--addressing addressing] [-t, --instance-type instance_type] [-z, --availability[---kernel [---ramdisk [- --help] --availability-zone zone] [--kernel kernel_id] [--ramdisk ramdisk_id] [-h, --help] availability --debug] [--version] [--debug] image_id --version] [--n: 要运行实例的数量 -g; 实例运行的的安全组 -k: keypair 名字 --addressing -t : 实例类型 -z: 实例可以运行的 zone --kernel :发布实例时使用的 kernel ID --ramdisk :发布实例时使用的 ramdisk image_id :必须填的,上传的镜像 id ID 寻址方式(例如 private)例如:euca-run-instances ami-0000000c -k mykey -t m1.small mykey 就是上面创建的 keypair,m1.small 是一个 instance_type 列出运行的虚拟机实例 euca-describeeuca-describe-instances novanova-manage vm list 登录虚拟机实例,需要先授权端口 euca1:euca-authorize -P icmp -t -1:-1 default 授权 ping eucaeuca-authorize -P tcp -p 22 default root@172.16.0.4 ssh -i mykey.priv root@172.16.0.4 mykey.priv:就是前面生成的 mykey,priv,记录的是 keypair 如果 ping 不通或者 ssh 登录不上, 可以检查一下 dnsmasq 这个进程, 在有虚拟机开启的 情况下,有两个 dnsmasq 进程,如果不是这么回事,那么运行: killall dnsmasq novaservice nova-network restart 停掉一个虚拟机实例: euca-terminateieuca-terminate-instance i-00000027 授权访问 22 端口volume 逻辑卷管理对于逻辑卷管理,openstack 只提供了两个命令 novavolume nova-manage volume delete  删掉这个 id 的 volume novanova-manage volume reattach  重新绑定这个 volume 到先前的那台 虚拟机,一般是在主机重启后运行这个命令 其他的都是用 euca2ools 命令,而且基本上用 euca2ools 命令也就足够了。 Nova-volume 是 openstack 在 linux 上使用 LVM 的 iSCSI 解决方案,注意一个 volume 一 次只能绑定到一个实例。 首先使用 LVM 创建一个逻辑卷组:nova-volumes,这是 nova 默认使用的逻辑卷组,创建逻 辑卷等操作,都是操作的这个逻辑卷组。创建这个逻辑卷组已在安装过程中说明。 创建一个 volumeeuca-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 ideuca-detach-volume  删除一个 volume euca-delete-volume service 管理novadescribe_resource nova-manage service describe_resource  显示某主机资源(vcpu/memery/disk) novanova-manage service disable   nova-manage service enable nova  novanova-manage service list  停止某服务 开始某服务显示某主机开启的服务,及其状态nova nova-manage update_resource  更新主机资源(vcpu/memery/disk)fixed 固定 ip 管理列出某个主机上所有的固定 ip 用法:nova用法:nova-manage fixed list [hostname] 新 版 本 的 openstack 还 提 供 了 nova-manage fixed reserve  命 令 和 unreserve 命令,reserve ip 就是把该 ip 地址 reserved 位置 1,这样在分配 ip 时,就不会分配该 ip 地址。目前安装的版本需要到数据库中手动更改 fixed_ip 表中的 reserved 位。 openstack 的 dashboard 利用的是 Python Web 框架 Django 来完成的,可以在此基础上再 做深入开发,新版的 dashboard 增加更多功能。 当然可以开发自己的 dashboard。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56240-1-1.html 上篇帖子: Openstack Quantum project 更名为 Neuron 下篇帖子: 【openstack报错】【因更新包而致】IncompatibleObjectVersion: Version 1.9 of Instance is not s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表