在 CentOS 上安装和配置 OpenNebula

我们提到的云计算一般有三种类型:软件即服务(Software as a Service, SaaS),平台即服务(Platform as a Service, PaaS)和基础架构即服务(Infrastructure as a Service, IaaS)。云概念刚出来的时候被人说的云里雾里摸不着头,现在云技术已经深入人心,也许你正在使用云而自己没有察觉呢,比如每天使用的 Gmail 就在 Google 大云上。为了更好理解这三种不同的云,我们可以拿 Google 来举例,刚好这家公司提供了三种形式的云服务,首先看 SaaS,Google Gmail/Docs/Gtalk/Maps 这些 Apps 都运行在 Google 云上,所以他们为普通用户提供了 “软件即服务”;Google 同时提供面向开发人员的 AppEngine,可以让开发人员在他们的平台(Platform)上使用 Python, Java 等语言和他们提供的 API 开发软件和服务,所以他们为开发人员提供了 “平台即服务”;Google 自己内部构建了基于 GFS, BigTable, MapReduce 之上的庞大基础云设施,为自己内部人员提供了 “基础架构即服务”,这就是三种不同类型的云。

OpenNebula 是一套开源的云计算基础管理工具,用来方便管理员在数据中心统一部署、创建、分配和管理大量的虚拟机,企业数据中心可以利用这套工具搭建自己的私有云,为自己内部提供 IaaS 服务,类似的开源产品还有 OpenStack, CloudStack, Eucalyptus, openQRM 等等。以下的安装过程在 VPSee 的两台装有 CentOS 5.5 系统的服务器上完成,一台服务器做 OpenNebula 前端(node00),另一台服务器用来做节点(node01),搭建一个最小的 “云”,如果想扩展这个云的话,只需要逐步增加节点(node02, node03, …)就可以了。如果对其他类似的开源云计算平台感兴趣的话可以看看:在 Ubuntu 上安装和配置 OpenStack Nova,最新的 OpenNebula 4.0 安装看这里:在 CentOS 6.4 上安装和配置 OpenNebula 4.0.

安装和配置前端(Front-End)

增加 CentOS Karan 源:

# cd /etc/yum.repos.d
# wget http://centos.karan.org/kbsingh-CentOS-Extras.repo
# yum update

安装 OpenNebula 需要的软件包以及编译 OpenNebula 源代码所需的工具:

# yum install gcc gcc-c++ make openssl-devel flex bison

# yum install ruby ruby-devel ruby-docs ruby-ri ruby-irb ruby-rdoc
# yum install rubygems
# gem install nokogiri rake xmlparser

# yum install scons
# yum install xmlrpc-c xmlrpc-c-devel

CentOS 自带的 sqlite 版本不行,需要下载和编译 sqlite 3.6.17 版本:

# wget http://www.sqlite.org/sqlite-amalgamation-3.6.17.tar.gz
# tar xvzf sqlite-amalgamation-3.6.17.tar.gz
# cd sqlite-3.6.17/
# ./configure; make; make install

下载和编译 opennebula 2.0.1 源码包后,解压、编译和安装:

# tar zxvf opennebula-2.0.1.tar.gz
# cd opennebula-2.0.1
# scons
# ./install.sh -d /srv/cloud/one

# ls /srv/cloud/one/
bin  etc  include  lib  share  var

启动 OpenNebula 前需要配置 ONE_AUTH 环境变量,这个环境变量从 $HOME/.one/one_auth 这个文件读取,所以要先创建 one_auth 这个文件后再启动 one(OpenNebula 服务程序):

# cd /root/
# mkdir .one
# cd .one/
# echo "oneadmin:password" > one_auth

# one start

OpenNebula 支持 KVM, Xen 和 VMware 三种虚拟技术,我们还需要告诉 OpenNebula 我们想用哪种,并重启 one 以便配置生效:

# vi /etc/one/oned.conf
...
IM_MAD = [
    name       = "im_xen",
    executable = "one_im_ssh",
    arguments  = "xen" ]

VM_MAD = [
    name       = "vmm_xen",
    executable = "one_vmm_ssh",
    arguments  = "xen",
    default    = "vmm_ssh/vmm_ssh_xen.conf",
    type       = "xen" ]
...

# one stop
# one start

安装和配置节点(Compute Node)

需要在每个 node 上都安装 Xen 或 KVM 的虚拟环境,具体请参考:在 CentOS 上安装和配置 Xen在 CentOS 上安装和配置 KVM,还需要 ruby 运行环境:

# yum install ruby 

交换 SSH Key

因为 OpenNebula Front 和 Nodes 之间是通过 SSH 通讯的,所以 front 和 nodes 之间要设置成 SSH 无密码登录避免 front 运行 node 上脚本或克隆镜像的时候输入密码,首先在 front 和 nodes 上配置 sshd:

# vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes

# /etc/init.d/sshd restart

在 front (node00) 上创建 key 后拷贝到 node (node01):

# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub node01

在1个 node (node01) 上创建 key 后拷贝到 front (node00):

# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub node00

onehost

front 和 每个 node 都能无密码 ssh 沟通后,就可以在 front 上 onehost create 命令来逐个加入 node,并用 onehost list 来查看是否创建成功:

# onehost create node01 im_xen vmm_xen tm_ssh

# onehost list
  ID NAME              CLUSTER  RVM   TCPU   FCPU   ACPU    TMEM    FMEM STAT
  1 node01     default    0    400    400    400    3.8G    383M   on

如果执行 onehost create 报错,查看 oned.log 日志发现 sudo: sorry, you must have a tty to run sudo 字样,原因则是 OpenNebula 需要远程 ssh/sudo 执行命令,而 CentOS 的 sudo 选项 requiretty 是默认打开的,ssh 需要一个 tty 才能执行,所以远程 sudo 就会出错,:

# onehost create node01 im_xen vmm_xen tm_ssh

# tail /var/log/one/oned.log 
Tue Feb 22 11:08:58 2011 [InM][I]: Command execution fail: 'if [ -x "/var/tmp/one/im/run_probes" ]; then /var/tmp/one/im/run_probes xen 172.16.39.111; else                              exit 42; fi'
Tue Feb 22 11:08:58 2011 [InM][I]: STDERR follows.
Tue Feb 22 11:08:58 2011 [InM][I]: sudo: sorry, you must have a tty to run sudo
Tue Feb 22 11:08:58 2011 [InM][I]: Error executing xen.rb
...

解决办法就是关闭(注释掉) requiretty 这行:

# chmod 600 /etc/sudoers
# vi /etc/sudoers
#Defaults    requiretty

因为 VPSee 的这两台服务器使用了 HTTP 代理上网,所以 OpenNebula 读取了系统的 http_proxy 环境变量,在 sched.log 日志里发现了 HTTP response 错误,这时候需要关闭 http_proxy:

# cat /var/log/one/sched.log
Tue Feb 22 14:27:39 2011 [HOST][E]: Exception raised: Unable to transport XML to server and get XML response back.  HTTP response: 504
Tue Feb 22 14:27:39 2011 [POOL][E]: Could not retrieve pool info from ONE

# unset http_proxy

onevnet

创建和编辑虚拟网络配置文件,然后创建一个 OpenNebula 虚拟网络:

# vi small_network.net
NAME = "Small network"
TYPE = FIXED

BRIDGE = br0
LEASES = [ IP="192.168.0.5"]
LEASES = [ IP="192.168.0.6"]
LEASES = [ IP="192.168.0.7"]

# onevnet create small_network.net 

# onevnet list
  ID USER     NAME              TYPE BRIDGE P #LEASES
   0 oneadmin Small network    Fixed    br0 N       0

onevm

创建和编辑虚拟机的启动配置文件,这里的 centos.5.5.x86.img 可以从 http://stacklet.com/ 下载(收费)或者自己利用 Xen 工具创建一个:

# wget http://stacklet.com/sites/default/files/centos/
centos.5.5.x86.img.tar.bz2
# tar jxvf centos.5.5.x86.img.tar.bz2
# mv centos.5.5.x86.img /srv/cloud/one/var/images/

# vi centos.one 
NAME   = centos
CPU    = 1
MEMORY = 256

DISK = [
  source   = "/srv/cloud/one/var/images/centos.5.5.x86.img",
  target   = "sda1",
  clone    = "yes",
  readonly = "no" ]

NIC = [ MAC = "00:16:3E:00:02:64", bridge = br0 ]

OS = [ bootloader     = "/usr/bin/pygrub" ]

用 onevm create 命令启动上面的 VM 配置文件,就会在 node01 上创建一个虚拟机,用 onevm list 查看会看到 prol 状态,表示正在创建过程中,创建完毕后状态会变成 runn:

# onevm create centos.one

# onevm list
   ID     USER     NAME STAT CPU     MEM  HOSTNAME        TIME
    1 oneadmin   centos prol   0      0K  node01   00 00:09:09

# onevm list
   ID     USER     NAME STAT CPU     MEM  HOSTNAME        TIME
    1 oneadmin   centos runn   0      0K  node01   00 00:22:17

就这样,我们在 node00 (front) 和 node01 (node) 这两台服务器上部署了一个最小的云,并且在 node01 上运行了一个基于 Xen 的虚拟机实例。

评论 (129 Comments)

  1. 今天入手人生中第一个VPS,三个月不到5美元,256MB/VZ的。
    LNMP从头学起啊。

  2. 請問你為什麼沒有選擇使用OpenQRM?

  3. 请问,你如果你手上有一个vps,给他安装系统得时候,你的第一反应是安装哪个发行版?还请你看下bxwz点康目这个vz的vps练手学习应该够了吧?
    谢谢。

  4. OpenQRM 的官方安装文档是2008年的,没有更新,开源项目人气和活力很重要。

  5. @阳光不锈
    呵呵,恭喜恭喜,玩 VPS 容易上瘾哦!

  6. @阳光不锈
    第一反应是问客户需要哪个操作系统啊~~
    练手只要便宜就行,加上每天备份⋯⋯

  7. @vpsee
    呃,我的意思是,我这个新人面对众多的发行版,手足无措,虽然大同,但仍然小异。
    所以问下你这种资深人士,如果是你自己用的话,首选那个发行版,这对我很有参考意义的。

  8. 老哥,加一下qq2399258 或者加一下msn laoas@msn.com 想和老哥多沟通一下

  9. @阳光不锈:
    个人觉得小内存用Debian,大内存用CentOS。共同特点都是非常稳定。
    经验上看CentOS的内存管理貌似要好一点

  10. @tony
    内存的小和大如何界定?

  11. @alfie
    256M及以上就用CentOS

  12. @tony
    我在一台IBM X3501上面装了centos5.5,该服务器的内存是2G,当时给dom0分配的是256M,安装了默认的Gnome图形界面,但是在dom0中开启firefox有些卡。

  13. @alfie
    额……我从来不在VPS里面开X Window的……太慢

  14. 最近有个项目想要使用opennebula来管理大量的xen虚拟机,不过貌似现在网上的文档和使用的经验还不算太多。请问vpsee是否已经采用了opennebula来做虚拟机管理了?稳定性和安全性如何,是否值得使用呢?

    另外官方文档中并非直接使用root用户来连接front-end与node,而是用oneadmin用户。直接用root用户的话安全性不足,一般来说我们的服务器并不建议root用户可以远程登录。

    最后挑一个小毛病,在“交换ssh key“这一段中,根据我的理解,应该只需要在front(node00)上创建key,拷贝public key到各个node上面就可以了,而不需要在“node (node01) 上创建 key 后拷贝到 front (node00)“。

  15. @joecen
    我们考虑 opennebula 主要是因为 opennebula 可以建构在我们已有的基础 xen 架构上不用推倒重来,我们只是在小规模试用 opennebula,没有应用到生产环境。opennebula 作为一个小规模的私有云计算平台应该够了,但是要大规模管理虚拟机还需要另做考虑。

    对,最好用 oneadmin 来管理。

    对的,只需要 front 创建 key 分布到各个 node 上就可以了,但是我需要每个 node 上都能访问 front(为了方便自己管理和维护),所以我在 node 上创建 key 并拷贝到 front.

  16. 请问,除了下载之外,如何创建自己的镜像?是不是只要在kvm上可以运行的镜像都可以拿到opennebula上跑?

  17. cloud的最大好处就是service on demand.这需要相应的管理软件来实现.代表地,一般使用是IBM或VMware.其他技术实现的还真的少见.但市场呢?一般人需要vps是用来做网站的,希望7*24小时运行,不太可能存在on demand的需求.当然,为了管理方便使用cloud也很必要.

    amazon和rackspace的共同特点就是价格太贵,同样的价格可以买3-4个vpsee的vps啦.就算比较便宜的atlantic的价格都能买2个vpsee的vps.为什么贵?主要贵在软件成本上,ibm和vmware可不是吃素的主.

    如果vpsee能用其他第三方的软件来是实现cloud,把基于cloud的xen vps成本维持在目前水平,就大有可为(性能增加不了多少,但管理上去了,有cloud的噱头品牌也提升不少).

    vpsee的技术是值得信赖的,但市场营销做的不是很出色,再有就是管理还不到位.如果能做到象linode一样的vps image迁移或auto backup等管理就好了.service is king,这是后internet的主要特点.希望vpsee越来越好.

  18. 如果有兴趣,请研究一下vr.org和virpus.com,这两家基于cloud的xen vps价格根vpsee差不多.可以借鉴一下它们用的cloud技术.

    我理想的vps供应商是:
    1.能提供多机房的vps瞬间迁移服务;
    2.能提供可选择的vps auto backup服务;
    3.能提供主流的类似LAMP/LNMP下的wordpress等安装或优化服务;
    4.能提供主流的seo优化服务.

    当然,服务就代表着要收费,只要收费合理,我想大多数人做网站的人都是希望得到这样的服务的.

  19. @Jeff
    嗯,KVM 镜像可以直接用。

  20. @jackie
    你的建议非常好,谢谢:)事实上我们了解一些主流 vps/cloud 服务商的技术,比如你提到的 virpus 用的是 onapp 产品,按照 onapp 的价格,50台四核服务器每个月的价格是2100美元每月,而且 cloud 最低硬件要求比单独的 xen vps 架构要求多,比如:oneapp 要求至少要5台服务器才能工作,1 x Control Panel Server + 2 x Hypervisor servers + 1 x Data store + 1 x Backup store,而且这些服务器配置也要求很高,这些都意味着硬件成本会加倍,我粗略算了一下,50台服务器组成的 onapp 云比简单的50台 xen 服务器大概每个月多花5000美元,如果把这部分成本转嫁到客户头上可能会有困难,毕竟大部分客户只是要求一个简单、稳定、便宜的 VPS 而已。

    管理大量的 xen vps 不是什么问题,我们内部的脚本和 OpenNebula 有点类似,管理起来很容易,只是这些工具没有弄成 web 那样的控制面板让客户使用。我们的市场营销的确做的不好,貌似没有市场营销:(,我们采用口碑式营销(word-of-mouth marketing),希望做到质量和信誉的口碑传播,所以在网上不会看到我们的广告:)

  21. quote:
    我理想的vps供应商是:
    1.能提供多机房的vps瞬间迁移服务;
    2.能提供可选择的vps auto backup服务;
    3.能提供主流的类似LAMP/LNMP下的wordpress等安装或优化服务;
    4.能提供主流的seo优化服务.

    说的很好啊,不过第4点 貌似不属于专业范围了.

  22. 想问一下,上述的步骤中在下载img镜像后,是放在node00节点,为何使用onevm create 会在node01上创建出一个虚拟机? 并且这个命令和运行的配置文件并没有指定虚拟机的创建位置,默认应该是在node00节点上创建,我认为。还有onevm create只是创建虚拟机,按官网上提供的说法应该还有onevm deploy 将虚拟机部署到指定节点,为什么创建后虚拟机就自动运行了呢?
    期待您的答复。

  23. @py8765
    node00 可以放镜像库(其实是个目录 /srv/cloud/one/var/images/,可以加不同的镜像在里面),这样 onevm create 的时候,就从镜像库里拷贝指定的镜像到 node01 上(因为只有一个 node01,所以不必指定具体部署到哪个 node 上,node00 其实不是 xen node 是 front-end)。

  24. 那是通过什么方式将镜像拷贝到node01上呢?是TransferManager指定的方式吗?那具体是拷贝到哪个路径下呢?
    官网上提供一个imageregister命令,通过该命令可以将镜像注册,但是这样注册后镜像并没有上传到 /srv/cloud/one/var/images/目录下,这样做完后创建虚拟机也会将镜像拷贝到子节点吗?

  25. 上述的问题我已经解决,但是如果选择使用ssh作为TransferManager,那么镜像都需要拷贝,耗费时间太久。并且在拷贝的时候会出现ssh key验证的问题,CLONE node00:/var/lib/one//images/ec918ad8fd8042eec8f33af876ef650f95301c0e node01:/srv/cloud/one/var/11/images/disk.0

    这个是在传输过程中的日志文件,如果用手动输入scp node00:/var/lib/one//images/ec918ad8fd8042eec8f33af876ef650f95301c0e node01:/srv/cloud/one/var/11/images/disk.0
    那么就会提示ssh key验证,所以在使用opennebula clone时镜像文件无法将镜像传输到node01节点。
    但是如果去掉node00:,手动输入scp /var/lib/one//images/ec918ad8fd8042eec8f33af876ef650f95301c0e node01:/srv/cloud/one/var/11/images/disk.0
    则可以正常传输。
    问题是如何让opennebula在使用clone命令时去掉前面的node00:?

  26. @py8765
    做 ssh key 的时候如果不用 passphrase 的话应该不会提示输入验证问题。你在 /etc/hosts 里指定了 node00 吗?直接 ssh node00 有没有问题?

  27. 嗯,现在问题解决了。不过好像网络还是出了点问题,在创建一个虚拟网络后,在局域网其它机器上能够ping到固定的虚拟网络地址,并且虚拟机已经获得相应的固定ip地址,但是在用ssh登陆虚拟机时,还是需要输入密码,并且就算输入正确的密码也无法登陆虚拟机。

  28. 请教大侠,在用opennebula构建“最小云”时,有个问题困扰已久,就是虚拟机的地位问题,我认为可能构建在host之下的虚拟网络中,类似于局域网,也可能构建在和host同一地位的网段中,类似于VirtualBox和VMWare的网桥。现在的问题是,host只有一个网卡,如何实现上诉两种类型网络?谢谢。

  29. @binny
    没有太明白你的意思。不过 xen/kvm 也有 virtualbox/vmware 的网桥概念,一样可以 “构建在host之下的虚拟网络中”,也可以 “构建在和host同一地位的网段中”。

  30. vpsee:
    你好,我刚接触linux系统测试网络服务器方面知识,现想请问:
    在查看CPU使用率时,执行TOP命令后,显示结果栏中的以下不同进程CPU占用率分别表示什么意思:
    CPU(s):0.8%us,0.2%sy,0.0%ni,7.9%id,0.0%wa,3.3%hi,87.8%si,0.0%st,尤其是3.3%hi,87.8%si,0.0%st一直搞不懂什么意思?谢谢了。
    另外,我想在这个网站注册用户,与大家交流学习更多Linux网络性能方面的知识,但想知道如何注册,谢谢。我的邮箱是:ljmdt@126.com。

  31. 您好,按照您的做法我完成了一个最小的云的搭建。
    但是自己用kvm做好一个镜像启动后,虚拟机无法连接网络。在节点机器(node01)中已经配置好一个网桥br0,并且vnet和eth0都是以网桥为接口。
    后来使用Opennebula官网上提供的ttylinux镜像,发现可以连接网络了,但不是很稳定,操作一会后,cpu占用率就很高且一直持续保持高位,接着就失去连接,再也无法连接该虚拟机。
    同样,我自己使用kvm制作的镜像启动后,虚拟机的cpu就一直保持在50%左右,且在局域网中一直无法ping到,不管是node00还是node01。所以我怀疑是不是虚拟机在启动时就卡住了,一直占用cpu,无法进行网络设置,所以导致网络不通。
    该问题困扰很久,希望得到您的解答,不胜感激。

  32. @田玥
    us -> user
    sy -> system
    ni -> nice
    id -> idle
    wa -> iowait
    hi -> h/w interrupt requests
    si -> s/w interrupt requests

  33. 您好,opennebula 是否支持虚拟机之间组成一个内部的局域网,有时情况需要,只想其中一台虚拟机暴露在网,如做代理或防火墙之内,其他虚拟机则隐藏在局域网中。另外,多台非相同节点的虚拟机能否设置在同一个局域网内,需要什么条件?

  34. @Oscar
    1、虚拟机之间可以组成一个内部局域网。2、多个非相同节点的虚拟机也可以设置在同一个局域往内,opennebula 通过虚拟网(vnet)来设置。

  35. 您好,请问一下如何自己创建image
    xen-create-image
    还是oneimage
    具体如何创建谢谢

  36. @Percy
    在 debian/ubuntu 下可用 xen-create-image 创建,在 fedora/centos/rhel 可用 virsh 或 virt-manager,也可以手动创建 image(如何快速创建 Xen 虚拟机镜像)。

  37. ID NAME CLUSTER RVM TCPU FCPU ACPU TMEM FMEM STAT
    3 node01 default 0 0 0 100 0K 0K on
    为什么我建立host是这种 0 0 0 100 OK OK On 的状态 oned.log没记录

  38. root@localhost ~]# onevm create centos.one
    Error: [VirtualMachineAllocate] Error trying to PARSE VM TEMPLATE Returned error code [1].. Reason: syntax error, unexpected VARIABLE, expecting COMMA or CBRACKET at line 7, columns 125:129
    您好,在创建时报这个错误是哪里出现了问题呢

  39. hi vpsee!
    i have install the ONE and when i start it i was telled that sed: can’t read /etc/one/oned.conf: No such file or directory any ideas?

  40. @Percy
    如果没有这个 oned.conf 文件,需要自己创建,或者从网上或者从源代码里拷贝一个例子文件然后修改。

  41. 发现没有这一行requiretty
    而是#Defaults env_reset
    还有我用的是debian opennebula 2.2

    Tue Jun 7 18:01:06 2011 [VMM][D]: Message received: LOG – 2 Command execution fail: ‘if [ -x “/var/tmp/one/vmm/xen/deploy” ]; then /var/tmp/one/vmm/xen/deploy /srv/cloud/one/var//2/images/deployment.0; else exit 42; fi’

    Tue Jun 7 18:01:06 2011 [VMM][D]: Message received: LOG – 2 STDERR follows.

    Tue Jun 7 18:01:06 2011 [VMM][D]: Message received: LOG – 2 Error: Device 0 (vif) could not be connected. Could not find bridge device br0

    Tue Jun 7 18:01:06 2011 [VMM][D]: Message received: LOG – 2 ExitCode: 1

    Tue Jun 7 18:01:06 2011 [VMM][D]: Message received: DEPLOY FAILURE 2 Error: Device 0 (vif) could not be connected. Could not find bridge device br0

    Tue Jun 7 18:01:06 2011 [VMM][D]: Message received: ExitCode: 1

    Tue Jun 7 18:01:07 2011 [TM][D]: Message received: LOG – 2 tm_delete.sh: Deleting /srv/cloud/one/var//2/images

    Tue Jun 7 18:01:07 2011 [TM][D]: Message received: LOG – 2 tm_delete.sh: Executed “/usr/bin/ssh debian rm -rf /srv/cloud/one/var//2/images”.

    Tue Jun 7 18:01:07 2011 [TM][D]: Message received: TRANSFER SUCCESS 2 –

  42. 我想请教一个image创建问题,我如何可以创建一个centos的基于vmware的虚拟机image。然后再openNebula上应用,请帮忙给出步骤好吗?
    谢谢了!

  43. 非常想请教一下如何设置VM的ip为DHCP?

    我们的VM都需要通过eth0 (通过公司的DHCP获得ip)来连接到公司的网络(Internet),并且所有的VM都需要通过已注册的MAC地址才可以正确地获得IP,请问在opennebula的network template中应该如何设置呢?

    我已经测试过单个的kvm实例,先通过bridge建立br0,然后桥接eth0和tap,这样vm可以正确地获得IP并连接internet,但是实在是摸不着头绪到底应该如何在opennebula中进行网络设置。

  44. @ou_ian
    你需要用 onevnet 创建和配置一个 public 的虚拟网络,配置文件大概如下,具体可参考官方文档。
    ———————————————————————
    NAME = “Public”
    TYPE = FIXED

    BRIDGE = vbr1

    LEASES = [IP=172.16.39.2, MAC=50:20:20:20:20:22]
    LEASES = [IP=172.16.39.3, MAC=50:20:20:20:20:23]
    ———————————————————————

  45. 多谢vpsee,但我的问题是,DHCP server不是我能控制的,因此无法在FIXED中去定义MAC地址和IP的组合。

    opennebula的文档很hopeless,请问能否定义如同ESX中的virtual switch?

  46. @ou_ian
    明白你的意思了,你的 DHCP Server 需要注册你的 MAC 地址吗?比如有些公司为了限制哪些电脑能连到公司的网络需要把 MAC 地址报告给管理员,然后管理员在 DHCP Server 里面绑定 MAC 和 IP。如果 DHCP Server 没有这个限制,没有绑定 IP 和 MAC 的话,那么你可以随意指定 OpenNebula VM 的 IP 啊,和普通 KVM VM 一样设置 IP、掩码、网关等。

    你也可以让 OpenNebula 不管理虚拟网络,这样每个 OpenNebula VM 就和普通的 KVM VM 一样从 DHCP 那里得到 IP。

  47. 多谢vpsee,这就是我的意思,那么如果这样来看的话,FIXED中所定义的LEASES并不是一个VLAN,然后这个VLAN通过br0桥接到eth0?

    如果是这样的话,Opennebula的networking也局限了,可否像ESX那样,使用virtual switch-所有的vm通过virtual switch和eth0桥接?

    此外想请教一下,如果不让opennebula管理虚拟网络,我尝试过在virtual machine 的template的NIC中,将target设置为tap,结果还是无法从DHCP获得IP,但如果我直接用qemu-kvm去运行vm镜像,只要将-net tap参数加上,IP获取没有任何问题。。。opennebula真是太让人伤脑筋了。。。无数封email发出去都没有得到过认真的回复。。。

    或许我该尝试一下openstack?

  48. 我想请教一个image创建问题,我如何可以创建一个centos的基于vmware的虚拟机image。然后再openNebula上应用,请帮忙给出步骤好吗?
    谢谢了!

  49. @vpsee
    还想请教一个问题,如果我现在配置openNebula使用kvm虚拟技术,等我试验完成后再用vmware做实验,只要把相应IM,VM,TM改为vmware就可以了吧。

  50. @siqilei@hotmail.com
    嗯,理论上是这样的,我还没试过 opennebula 和 vmware.

  51. 我在ubuntu上装opennebula的时候有一个问题没有解决,
    就是我自己创建一个虚拟机映像后,再把该映像加入和配置到指定节点的时候会显示加入的虚拟机状态为failed,能帮忙解释下吗,谢谢

  52. @Anonymous
    你可以看看日志,看看出错信息是什么,没有出错信息无法根据一个 failed 来判断什么问题。

  53. 请部一下。在centos.one中
    target是指什么?

  54. @Percy
    TARGET – device to map disk

  55. 文章写得比较清晰。先谢谢。

    @py8765
    node00 可以放镜像库(其实是个目录 /srv/cloud/one/var/images/,可以加不同的镜像在里面),这样 onevm create 的时候,就从镜像库里拷贝指定的镜像到 node01 上(因为只有一个 node01,所以不必指定具体部署到哪个 node 上,node00 其实不是 xen node 是 front-end)。

    我有两个疑问:
    1.如果有两个node(node01,node02),onevm create的时候,怎么指定是create到那个node上面呢?是不是@py8765说的:onevm create只是创建虚拟机,按官网上提供的说法应该还有onevm deploy 将虚拟机部署到指定节点。onevm deploy 。
    2.我怎么把一个node跟我得一个主机ip地址对应。比喻node02代表192.168.10.110。

  56. @zy19982004
    1. onevm CREATE 是创建一个新 VM 然后 deploy 到 node 上,one DEPLOY 是 deploy VM 到指定 node.
    2. 没太明白你的意思,你是说把某个 VM deploy 到某个 node 上?onevm deploy 102 node02 还是说在 /etc/hosts 里面匹配 IP 和主机名?

  57. @vpsee
    1.明白了。
    2.我的意思是这样。通过ifconfig查看到OpenNubula 前端(node00)为192.168.10.55,另一台服务器用来做节点(node01)为192.168.10.56。
    我是不是应该这样:onehost create 192.168.10.56 im_xen vmm_xen tm_ssh,它就去56机器上创建node了。如果是onehost create node01 im_xen vmm_xen tm_ssh,那我怎么知道node01被创建在ip为192.168.10.56主机上?

    新手刚刚学习linux,呵呵。

  58. @vpsee
    2已经清楚:在/etc/hosts 里面匹配 IP 和主机名。

  59. 另外一个问题
    oned.log错误如下
    Tue Sep 6 00:16:02 2011 [InM][I]: Command execution fail: ‘if [ -x “/var/tmp/one/im/run_probes” ]; then /var/tmp/one/im/run_probes xen node01; else exit 42; fi’
    Tue Sep 6 00:16:02 2011 [InM][I]: STDERR follows.
    Tue Sep 6 00:16:02 2011 [InM][I]: /usr/bin/env: ruby: No such file or directory
    Tue Sep 6 00:16:02 2011 [InM][I]: Error executing xen.rb
    Tue Sep 6 00:16:02 2011 [InM][I]: ExitCode: 127
    Tue Sep 6 00:16:02 2011 [InM][E]: Error monitoring host 40 : MONITOR FAILURE 40 Could not monitor host node01.

    我已经注释掉#Defaults requiretty,
    单独运行/var/tmp/one/im/run_probes xen node01是可以得到主机信息的:ARCH=i686 MODELNAME=”Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz” HOSTNAME=localhost.localdomain HYPERVISOR=xen TOTALCPU=100 CPUSPEED=2799 TOTALMEMORY=1047552 FREEMEMORY=126976 USEDMEMORY=920576 USEDCPU=6 FREECPU=95 NETTX=11799 NETRX=2401

    那上述错误是不是就该定位到/usr/bin/env: ruby: No such file or directory呢?xen.rb里面第一句#!/usr/bin/env ruby。

  60. @zy19982004
    貌似 ruby 环境或路径问题?

  61. 请教个问题:onehost中显示的TCPU FCPU ACPU是如何计算的? 比如创建两个虚拟机(虚拟机参数1个cpu 512M内存…)后,他的ACPU就可能剩下200了。
    # onehost create node01 im_xen vmm_xen tm_ssh

    # onehost list
    ID NAME CLUSTER RVM TCPU FCPU ACPU TMEM FMEM STAT
    1 node01 default 0 400 400 400 3.8G 383M on
    我想通过web应用,结合创建虚拟机参数(cpu个数 mem内存大小)去验证opennebula端host节点上能创建多少个虚拟机。但是不太明白他的ACPU是如何计算的?我测试过如果ACPU为0,FCPU还有很多,那么就不能在该节点上建虚拟机了。
    thanks

  62. @yottaa
    你可以在 opennebula 的源代码里 ./cli/one_helper/onehost_helper.rb 看看 ACPU, “Available cpu percentage (not reserved by VMs)” 是怎么计算的:

    column :ACPU, "Available cpu percentage (not reserved by VMs)",
           :size=>6 do |d|
            max_cpu=d["HOST_SHARE"]["MAX_CPU"].to_i
            max_cpu=100 if max_cpu==0
            max_cpu-d["HOST_SHARE"]["CPU_USAGE"].to_i
    end
    
  63. @vpsee
    貌似 ruby 环境或路径问题?

    是的
    重装了下ruby,解决了。

  64. 我是新手 系统是lucid 使用oneuser passwd oneadmin 12345678命令之后出现错误:Error: [UserPoolInfo] User couldn’t be authenticated, aborting call.
    怎么修改,又系统一直警告我LC_ALL错误 但是用locale命令查看后LC_ALL=C。
    上网查了许久,没有合适的解决方案,能不能提点一下。谢谢了。

  65. 请问有谁成功应用过xen虚机的?他能否直接应用.img磁盘文件,请问centos.one配置文件中os的kernel参数该如何配置呢?我修改成
    OS = [
    kernel = “/usr/lib/xen/boot/hvmloader”]
    报错为:
    Error: (2, ‘Invalid kernel’, “elf_xen_note_check: ERROR: Not a Xen-ELF image: No ELF notes or ‘__xen_guest’ section found.\n”);
    修改成
    OS = [ bootloader = “/usr/bin/pygrub” ]
    报错为: [VMM][I]: Using to parse /grub/menu.lst
    Tue Sep 27 15:35:14 2011 [VMM][I]: Error: (2, ‘Invalid kernel’, ‘xc_dom_parse_elf_kernel: ELF image has no shstrtab\n’)
    ,请高手指教!

  66. @lich
    可以直接用 img 文件,取决于你的 img 是如何做的,img 是否自带内核启动系统?还是需要借助外部内核启动?一般来说启动外部内核(内核在母机上)可以这样,
    OS = [
    kernel = “/boot/vmlinuz-2.6.18-4-xen-amd64”,
    initrd = “/boot/initrd.img-2.6.18-4-xen-amd64”,
    root = “sda1” ]

  67. @vpsee ,多谢vpsee,我用的是自带内核的img,好像是磁盘格式问题的,不知何故我发现那个虚拟机的磁盘分区竟然是hda1和hda2,所以这个在opennebula里面不支持吧!只能重装一个虚拟机了!
    另外我想请教一下,怎么从opennebula里面直接安装xen或者kvm的虚拟机呢,光盘应该是在opennebula服务端上挂载还是在xen或者kvm 的node节点服务器上挂呢,虚拟机配置文件改如何写,能否提供下格式,十分感谢!

  68. 请问各位有没遇到这个问题,我opennebula上同时管理有kvm和xen物理机,现在建立xen虚拟机发现被建立到kvm服务器上了(之前是好的),不知道这会是什么原因?在线等!多谢!

  69. @vpsee,你好,在gem安装xmlparser-0.6.81.gem的时候出现错误
    Building native extensions. This could take a while…
    ERROR: Error installing xmlparser:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby -rubygems /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.2/bin/rake RUBYARCHDIR=/usr/lib/ruby/gems/1.9.1/gems/xmlparser-0.6.81/lib RUBYLIBDIR=/usr/lib/ruby/gems/1.9.1/gems/xmlparser-0.6.81/lib
    rm -rf test/coverage
    /usr/bin/ruby mkrf_conf.rb
    (in /usr/lib/ruby/gems/1.9.1/gems/xmlparser-0.6.81)
    rake
    gcc -fPIC -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -fPIC -DHAVE_EXPAT_H -DNEW_EXPAT -DXML_DTD -I/usr/include/ruby-1.9.1 -I/usr/include/ruby-1.9.1/i686-linux -I/usr/lib/ruby/1.9.1/i686-linux -I/usr/lib/ruby/site_ruby/1.9.1 -I. -c xmlparser.c
    xmlparser.c:44:20: error: rubyio.h: No such file or directory
    希望能够得到解答,附上gem list列表
    *** LOCAL GEMS ***

    minitest (1.6.0)
    mkrf (0.2.3)
    nokogiri (1.5.0)
    rake (0.9.2, 0.8.7)
    rdoc (2.5.8)
    是否是缺少某个软件引起的问题

  70. @cuilk
    有些版本的 xmlparser 编译的时候有问题,试一下下面带参数的编译呢:
    # gem install xmlparser –no-ri –no-rdoc

  71. @vpsee,你好,虽然gem install xmlparser –no-ri –no-rdoc这个方法没有成功,但是借鉴了你的思路,将ruby的版本从1.92降低到1.87后xmlparser成功安装,但是接着出现一个很头疼的问题,在scons的时候出现Error searching for xmlrpc-c libraries这个错误,google了好久没找到相应的解决办法,求解决思路!

  72. 这是执行scons的错误输出
    [root@ceshi2 opennebula-2.0.1]# scons
    scons: Reading SConscript files …
    Testing recipe: pkg-config
    g++ .xmlrpc_test/xmlrpc_test.c9c244.cc -o .xmlrpc_test/xmlrpc_test.c9c244.cc.out -lxmlrpc_server_abyss++ -lxmlrpc_server++ -lxmlrpc_server_abyss -lxmlrpc++ -lxmlrpc_abyss -lxmlrpc_util 1>>.xmlrpc_test/xmlrpc_test.c9c244.cc.log 2>&1

    Testing recipe: xmlrpc-c-config
    g++ .xmlrpc_test/xmlrpc_test.5c7e84.cc -o .xmlrpc_test/xmlrpc_test.5c7e84.cc.out -lxmlrpc_server_abyss++ 1>>.xmlrpc_test/xmlrpc_test.5c7e84.cc.log 2>&1

    Testing recipe: mixed hardcoded libraries and xmlrpc-c-config (debian lenny)
    g++ .xmlrpc_test/xmlrpc_test.5c7e84.cc -o .xmlrpc_test/xmlrpc_test.5c7e84.cc.out -lxmlrpc_server_abyss++ 1>>.xmlrpc_test/xmlrpc_test.5c7e84.cc.log 2>&1

    Testing recipe: hardcoded libraries for Mac OS X (installed using port)
    g++ .xmlrpc_test/xmlrpc_test.5c7e84.cc -o .xmlrpc_test/xmlrpc_test.5c7e84.cc.out -I/opt/local/include -L/opt/local/lib -lwwwxml -lxmltok -lxmlparse -lwwwzip -lwwwinit -lwwwapp -lwwwtelnet -lwwwhtml -lwwwnews -lwwwhttp -lwwwmime -lwwwgopher -lwwwftp -lwwwfile -lwwwdir -lwwwcache -lwwwstream -lwwwmux -lwwwtrans -lwwwcore -lwwwutils -lmd5 -ldl -lz -lpthread -lxmlrpc_client++ -lxmlrpc_client -lxmlrpc++ -lxmlrpc -lxmlrpc_util -lxmlrpc_xmlparse -lxmlrpc_xmltok -lxmlrpc_server_abyss++ -lxmlrpc_server++ -lxmlrpc_server_abyss -lxmlrpc_server -lxmlrpc_abyss 1>>.xmlrpc_test/xmlrpc_test.5c7e84.cc.log 2>&1

    Error searching for xmlrpc-c libraries. Please check this things:

    * You have installed development libraries for xmlrpc-c. One way to check
    this is calling xmlrpc-c-config that is provided with the development
    package.
    * Check that the version of xmlrpc-c is at least 1.06. You can do this also
    calling:
    $ xmlrpc-c-config –version
    * If all this requirements are already met please send log files located in
    .xmlrpc_test to the mailing list.

    TypeError: ‘str’ object is not callable:
    File “/root/opennebula-2.0.1/SConstruct”, line 150:
    exit(-1)

  73. 官網已經有CentOS 6.0的版本了

  74. @VPsee你好
    # onevm list
    ID USER NAME STAT CPU MEM HOSTNAME TIME
    1 oneadmin centos pend 0 0K 00 00:09:09
    请问见过这种情况嘛 state一直是pend,看了官方站点已经把区域语言都改为en,但是还没有效果。

  75. @Anonymous
    看一下 log 有什么提示。

  76. @vpsee 你好,问题已经解决了,原因是在执行
    onehost create node01 im_xen vmm_xen tm_ssh的时候oned.conf中关于tm_ssh的那一段是被注释的,改回来就可以了,还有onevm create centos.one这个步骤的时候node00没升级xen内核的话启动会显示fail,升级后就running了。
    不过现在出现一个古怪的问题,node00执行onevm create centos.one后,image成功传送到node01,node00执行onevm list显示也是running,但是vm其实并没有启动,查看日志也无任何错误,就一直停止在那。

  77. @vpsee,你好
    我用openNebula创建的虚拟机没有网络设置,而我一旦加上网络的设置,虚拟机就无法正常启动,错误信息如下:Thu Oct 27 15:05:52 2011 [LCM][I]: New VM state is BOOT
    Thu Oct 27 15:05:52 2011 [VMM][I]: Generating deployment file: /var/lib/one/43/deployment.0
    Thu Oct 27 15:05:54 2011 [VMM][I]: Command execution fail: ‘if [ -x “/var/lib/one/remotes/vmm/kvm/deploy” ]; then /var/lib/one/remotes/vmm/kvm/deploy /var/lib/one/43/images/deployment.0 10.100.8.19 43 10.100.8.19; else exit 42; fi’
    Thu Oct 27 15:05:54 2011 [VMM][I]: error: Failed to create domain from /var/lib/one/43/images/deployment.0
    Thu Oct 27 15:05:54 2011 [VMM][I]: error: internal error Failed to add tap interface ‘vnet%d’ to bridge ‘vbr1’ : No such device

  78. 您好,我给OpenNebula的VM分配的IP始终没有生效(VM IP与host IP不在同一个网段),VM内部没有IP,我手动给VM设置IP后,VM能ping通自己,但是从外部host主机上不能ping通VM。

    我在host主机上用得bridge的方式,主机的IP是202网段,设置了tap,tap的IP是192.168.0.1,VM的IP是192.168.0.3,我用tap作为host与VM间的路由,但是host能ping通192.168.0.1,无法ping通192.168.0.3。

    之前我将VM的ip设置成与host一个网段,是可以从外网ssh登录VM的。
    请问你的VM IP是如何配置的?不甚感激!

  79. 您好!我現在在自己建置Opennebula2.2+KVM的環境,碰到了一些問題想請教您!
    1.當我使用onehost create加入node後,stat的地方都顯示on,但其他例如MEM和CPU的資料它都抓不到,而另外使用onevm create創建虛擬機則stat一直顯示pending,我去deploy他到指定node後就failed了,我有確認/etc/one/oned.conf檔裡的im vm tm都已經unmark掉了,請問這是甚麼原因呢?這個問題跟第37和第74則留言是一樣的!但我試著照他們的方法做也是沒有解決!

    2.我有裝opennebula的web介面”sunstone”已經可以開到登入畫面,但是輸入帳號密碼後它顯示”opennebula is not running”但是我one已經重啟過了為何還會發生這個情形?

    感謝!

  80. @Vincent
    1. 抓取需要不通过密码 ssh 到 host 上,确定你能从 Front-End node 不需要密码就可以成功 ssh 到 Compute Node 吗?
    2. 建议先解决上面的 opennebula 问题再弄 web 界面,opennebula 不工作的话 web 界面也不会正常工作的。

  81. @vpsee 兩個節點都已經互相確認ssh無須密碼就可以登入!問題還是一樣無解

  82. @vpsee 感謝問題解決了!果然是ssh的問題!不過現在創建虛擬機器的時候又碰到以下問題!
    Wed Nov 23 08:53:10 2011 [TM][I]: ERROR MESSAGE –88–
    Wed Nov 23 08:53:10 2011 [TM][I]: ExitCode: 127
    Wed Nov 23 08:53:10 2011 [TM][I]: tm_context.sh: Executed “mkdir -p /srv/cloud/one/var/b42ddce619317b8a1078a3002359bdcc/isofiles”.
    Wed Nov 23 08:53:10 2011 [TM][I]: tm_context.sh: Executed “cp -R /srv/cloud/one/var/11/context.sh /srv/cloud/one/var/b42ddce619317b8a1078a3002359bdcc/isofiles”.
    Wed Nov 23 08:53:10 2011 [TM][I]: tm_context.sh: Executed “cp -R /srv/cloud/one/images/init.sh /srv/cloud/one/var/b42ddce619317b8a1078a3002359bdcc/isofiles”.
    Wed Nov 23 08:53:10 2011 [TM][I]: tm_context.sh: Executed “cp -R /root/.ssh/id_rsa.pub /srv/cloud/one/var/b42ddce619317b8a1078a3002359bdcc/isofiles”.
    Wed Nov 23 08:53:10 2011 [TM][I]: tm_context.sh: ERROR: Command “/usr/bin/mkisofs -o /srv/cloud/one/var/b42ddce619317b8a1078a3002359bdcc/disk.1 -J -R /srv/cloud/one/var/b42ddce619317b8a1078a3002359bdcc/isofiles” failed.
    Wed Nov 23 08:53:10 2011 [TM][I]: tm_context.sh: ERROR: /srv/cloud/one/lib/mads/tm_common.sh: line 141: /usr/bin/mkisofs: No such file or directory
    Wed Nov 23 08:53:10 2011 [TM][E]: Error excuting image transfer script: /srv/cloud/one/lib/mads/tm_common.sh: line 141: /usr/bin/mkisofs: No such file or directory
    Wed Nov 23 08:53:10 2011 [DiM][I]: New VM state is FAILED

  83. @vincent
    看上面的提示 line 141: /usr/bin/mkisofs: No such file or directory 找不到 mkisofs 这个工具,你需要安装一下 yum install mkisofs

  84. 之前的操作一直没有问题
    但是在执行# one start时却提示bash: one: command not found
    环境变量也配了啊 不知道问题出在哪了

  85. @aufemercury
    one 的路径不在环境变量里,找找 one 装在哪个目录下然后加到 .bashrc 之类的环境配置文件里。

  86. vpsee.请问:
    1,每次启动VM都要把镜像传输到某个node.关闭时又把VM stat传回front-end.
    下次再运行又要传输一次镜像.是这样吗?
    这不是太没效率了?
    2,我把一个用LVM的xen虚拟机复制出来做为镜像.部署后在启动过程中报无法找到volgroup的错误,然后就kernel panic了.有解决的办法吗?不使用LVM的倒是可以正常运行.

  87. @cuilk,你好
    我也遇到了跟你一样的情况,你是否解决了?

  88. 您好,我按照上面方法出现这个问题
    Wed Mar 21 11:54:12 2012 [VMM][D]: Message received: LOG I 17 bash: line 2: /var/tmp/one/vnm/xens/pre: No such file or directory
    Wed Mar 21 11:54:12 2012 [VMM][D]: Message received: LOG I 17 ExitCode: 127

    Wed Mar 21 11:54:12 2012 [VMM][D]: Message received: LOG I 17 Failed to execute network driver operation: pre.

    Wed Mar 21 11:54:12 2012 [VMM][D]: Message received: DEPLOY FAILURE 17 –
    是怎么回事

  89. onehost create node01 im_xen vmm_xen tm_ssh 到这儿出错了。。。。

    一台IP是 192.168.1.2 (前端机) centos6.2 64位 mini安装

    另外一台是 192.168.1.3 (节点机) centos 5.6 64位 安装时直接选用的xen组件.

    我在前端机上安装了 OpenNubula 按你上面的教程 已经安装成功了!

    节点机也配置成功,

    前端机和节点机 SSH无密码登陆 都是配置好了!

    在前端机上执行命令:

    onehost list
    ID NAME CLUSTER RVM TCPU FCPU ACPU TMEM FMEM AMEM STAT

    显示空白..

    添加节点机

    按教程中的命令输入 提示错误

    现在问题就在这儿了

    onehost create node01 im_xen vmm_xen tm_ssh
    Wrong number of arguments
    The arguments should be:

    提示这个错误。

    我将 node01 换成其它名称也不可以 甚至还换了IP。。。

    查看日志内容是:

    Tue May 1 15:11:00 2012 [ReM][D]: HostPoolInfo method invoked
    Tue May 1 15:11:00 2012 [ReM][D]: VirtualMachinePoolInfo method invoked
    Tue May 1 15:11:00 2012 [ReM][D]: AclInfo method invoked

    希望您能给我指点一下.我安装的是最新的这个 OpenNebula 的最新 3.4版本

  90. @memory
    上面的提示错误很明显 Wrong number of arguments,你用的是新版本的 opennebula 3.x,新版本的 onehost create 后面应该跟5个参数,这篇文章用的是2011年的 opennebula 2.x,那个年代,onehost 后面只需要4个参数。

  91. @vpsee
    新版本怎么create呢?报错如下:
    onehost create node01 im_kvm vmm_kvm tm_ssh
    Wrong number of arguments
    The arguments should be:

  92. 找到方法了 3.4 如下:
    onehost create node01 –im im_kvm –vm vmm_kvm –net dummy

  93. 找到方法了 3.4 如下:
    onehost create node01 –im im_kvm –vm vmm_kvm –net dummy

  94. 请问楼主,可以在netbsd上安装node和front-end吗

  95. @toms
    理论上可以。

  96. vpsee你好,我的问题和@zy19982004的问题类似,我用一台物理机A作为计算节点,上面安装xen,另一台机器B上安装opennebula ,现在怎么在B上面创建以A为节点的node。其中A的ip地址为192.168.152.159,B的ip地址为192.168.152.138,我在B上面用onehost create node01 -i im_xen -v vmm_xen -n tm_ssh,没有连接上。

  97. Mon Apr 22 03:12:43 2013 [ReM][D]: Req:4592 UID:0 HostAllocate result SUCCESS, 20
    Mon Apr 22 03:12:44 2013 [InM][I]: Monitoring host node01 (20)
    Mon Apr 22 03:12:44 2013 [ReM][D]: Req:416 UID:0 HostPoolInfo invoked
    Mon Apr 22 03:12:44 2013 [ReM][D]: Req:416 UID:0 HostPoolInfo result SUCCESS, “<ID…"
    Mon Apr 22 03:12:44 2013 [ReM][D]: Req:4688 UID:0 VirtualMachinePoolInfo invoked, -2, -1, -1, -1
    Mon Apr 22 03:12:44 2013 [ReM][D]: Req:4688 UID:0 VirtualMachinePoolInfo result SUCCESS, "”
    Mon Apr 22 03:12:44 2013 [ReM][D]: Req:2680 UID:0 AclInfo invoked
    Mon Apr 22 03:12:44 2013 [ReM][D]: Req:2680 UID:0 AclInfo result SUCCESS, “0…”
    Mon Apr 22 03:12:44 2013 [InM][I]: ExitCode: 0
    Mon Apr 22 03:12:45 2013 [InM][I]: Command execution fail: ‘if [ -x “/srv/cloud/one/var/im/run_probes” ]; then /srv/cloud/one/var/im/run_probes xen 20 node01; else exit 42; fi’
    Mon Apr 22 03:12:45 2013 [InM][I]: sudo: sorry, you must have a tty to run sudo
    Mon Apr 22 03:12:45 2013 [InM][E]: Error executing xen.rb
    Mon Apr 22 03:12:45 2013 [InM][I]: ExitCode: 255
    Mon Apr 22 03:12:45 2013 [InM][E]: Error monitoring host 20 : MONITOR FAILURE 20 Error executing xen.rb

    Mon Apr 22 03:13:14 2013 [ReM][D]: Req:7616 UID:0 HostPoolInfo invoked
    Mon Apr 22 03:13:14 2013 [ReM][D]: Req:7616 UID:0 HostPoolInfo result SUCCESS, “<ID…"
    Mon Apr 22 03:13:14 2013 [ReM][D]: Req:8816 UID:0 VirtualMachinePoolInfo invoked, -2, -1, -1, -1
    Mon Apr 22 03:13:14 2013 [ReM][D]: Req:8816 UID:0 VirtualMachinePoolInfo result SUCCESS, "”
    Mon Apr 22 03:13:14 2013 [ReM][D]: Req:1624 UID:0 AclInfo invoked
    Mon Apr 22 03:13:14 2013 [ReM][D]: Req:1624 UID:0 AclInfo result SUCCESS, “0…”
    Mon Apr 22 03:13:17 2013 [ReM][D]: Req:9984 UID:0 HostPoolInfo invoked
    Mon Apr 22 03:13:17 2013 [ReM][D]: Req:9984 UID:0 HostPoolInfo result SUCCESS, “<ID…"
    Mon Apr 22 03:13:44 2013 [ReM][D]: Req:3328 UID:0 HostPoolInfo invoked
    Mon Apr 22 03:13:44 2013 [ReM][D]: Req:3328 UID:0 HostPoolInfo result SUCCESS, "<ID…"
    Mon Apr 22 03:13:44 2013 [ReM][D]: Req:176 UID:0 VirtualMachinePoolInfo invoked, -2, -1, -1, -1
    这是日志文件

  98. @vpsee
    你好,有个问题想请教下,我刚开始接触OpenNebula,在ubuntu上安装OpenNebula时,执行安装命令:
    ./install.sh -u oneadmin -g cloud -d /srv/cloud/one
    后出现如下问题:
    chown:changing ownership of ‘/srv/cloud/one/.gvfs’ :Function not implemented.
    自己在网上找了好久也没找到解决方案。请问这问题该如何解决?

  99. @young
    用 root 帐号安装或者 sudo 安装试试。

  100. 哈哈,楼主竟然回我了,多谢了,这个问题我已经解决了。用sudo是不管用的。我把这个文件umount之后rm了,然后重新建了一个同名文件,但权限设置为777,之后就没有问题了。多谢楼主了。
    不过现在有另一个问题,就是按你这个教程在centos上装完opennebula之后,在执行# one start时却提示bash: one: command not found
    这个和之前有个人问的问题一样的,你也回复了,但是我还是不懂应该怎么改。因为刚接触linux,这方面还是小白。。。

  101. @young
    你可能安装 one 在 /usr/local/bin 或者 /usr/local/sbin 下,这个目录不在系统默认 PATH 里。你需要把这两个目录放到 .bashrc 或者 .profile 的 PATH 环境变量里。

  102. 恩,多谢 @vpsee了,我现在在做另一个尝试:能不能将front-end和host装在同一台机器上?我试过几次,都出问题了,不确认是我的方法有问题还是不支持?

  103. @young
    嗯,可以装在同一台机器上

  104. 你好,我关注前面的答案,都没有我遇到的这个问题,麻烦楼主关注一下:
    Thu Jul 4 15:40:35 2013 [InM][I]: Command execution fail: ‘if [ -x “/cgsp/backup/scripts/im/run_probes” ]; then /cgsp/backup/scripts/im/run_probes kvm node11; else exit 42; fi’
    Thu Jul 4 15:40:35 2013 [InM][I]: STDERR follows.
    Thu Jul 4 15:40:35 2013 [InM][I]: Error executing kvm.rb
    Thu Jul 4 15:40:35 2013 [InM][I]: ExitCode: 255
    Thu Jul 4 15:40:35 2013 [InM][E]: Error monitoring host 0 : MONITOR FAILURE 0 Could not monitor host node11.

    谢谢~~

  105. onehost create node01 im_kvm vmm_kvm tm_ssh
    Wrong number of arguments
    The arguments should be:
    如果是 4.0 的该怎么写呢?

  106. [oneadmin@kvm ~]$ onehost list
    [HostPoolInfo] User couldn’t be authenticated, aborting call.

    还有这个问题 都是4.0 版本的

  107. @hansz
    opennebula 4.0 改了命令参数的用法,类似 onehost create node01 -i kvm -v kvm -n ovswitch,查看帮助文件即可。

    User couldn’t be authenticated, aborting call. 的问题是因为用户认证失败,确保 ~/.one/one_auth 里面的用户名和密码正确。

  108. 我用 oneadmin 账号 将~/.one/one_auth 内改为oneadmin:password 但是我登陆网页的时候,输入密码 password 还是登陆不成功,只有输入 安装程序时自动生成的那一长串字母是才能登陆,我如何就该 登陆密码呢 高手~ 求助啊

  109. 谢谢问题解决了

  110. 高手,我在网页上上传了image ,建立了模版,在 storage 中我选择了Image (选择了一个镜像)Volatile Disk(创建)了一块10G的空间, boot 选的cdrom。
    但是建立好模版后,创建虚拟机。但是系统进入引导后,redhat,会提示镜像文件在哪,这是找不到镜像文件吧,您觉得 是我在创建模版的时候哪里出了错误,您帮我发一个改如何通过页面建立虚拟机的流程么,谢谢 邮箱 hanshizhunjob@126.com 谢谢

  111. 您好,为什么在onevnet 中 指定的网桥名为br0,但在onevm 设定了“ bridge = xenbr0 ”?。我配置的是在计算节点使用KVM,设置了网桥 br0,在前端节点设置的网络模板中 可租IP:192.168.0.101~192.168.0.102,名称为“private”,创建虚拟机模板, nic 使用private,但实例化时,提示 cant get ip/mac for network 0,这是什么?谢谢

  112. @john
    不好意思,xenbr0 这个是笔误,已更正成 br0,谢谢~

  113. 上个问题,我配置的是在计算节点使用KVM,设置了网桥 br0,在前端节点设置的网络模板中 可租IP:192.168.0.101~192.168.0.102,名称为“private”,创建虚拟机模板, nic 使用private,但实例化时,提示 cant get ip/mac for network 0,这是为什么?谢谢

  114. @john
    你在创建实例(onevm create)前创建网络(onevnet create)了没?只有创建了网络才可以从 IP 池里面获得可用的 IP 地址。建议看一下日志,日志一般都有很重要的提示信息。

  115. @vpsee,谢谢您的回复。我是结合您的博客与 OPENNEBULA官方文档:http://wiki.centos.org/zh/Cloud/OpenNebula/QuickStart进行的,按照该链接中的“新增虚拟资源”,onevm create一个名为 mynetwork.one 的虚拟网络,其中提到了“请以主机网络内的空置 IP 取代上述租约”,日志中 内容为“[TemplateInstantiate] Error allocating a new virtual machine. Cannot get IP/MAC lease from virtual network 0.”

  116. 請問我的 VM running 之後,要以 VNC 連線時會出現
    VNC Failed to connect to server (code: 1006)
    的錯誤,我查了 novnc 的 log 紀錄,出現以下訊息:
    26: 140.133.9.118: Plain non-SSL (ws://) WebSocket connection
    26: 140.133.9.118: Version hybi-13, base64: ‘False’
    26: 140.133.9.118: Path: ‘/?token=69hjfhvuiiwrthv9phb6’
    26: connecting to: PC1:5900
    26: handler exception: [Errno 113] No route to host

    請問一下這問題如何解決呢?Thanks~

  117. @Johnny 檢查一下你node端的firewall是否沒開始對應的vnc port

  118. @jimmy
    真的是firewall的問題,後來直接把iptables關掉就可以VNC連線了!
    所以目前node端暫時都是chkconfig iptables off
    之後我對應好vnc port,會再把iptables啟動吧!謝謝!

  119. 请教前辈!我已经安装好了,并正常使用的sunstone,但是我在web上修改了oneadmin、serveradmin的密码之后,就登录不了web了。随后我关闭了sunstone-server,结果就再也启动不起来。log文件提示:
    oneadmin@cloud:~/.one$ cat /var/log/one/sunstone.log
    ————————————–
    Server configuration
    ————————————–
    {:vnc_proxy_path=>”/usr/share/one/noVNC/utils/websockify”,
    :auth=>”sunstone”,
    :vnc_proxy_key=>nil,
    :vnc_proxy_support_wss=>false,
    :debug_level=>3,
    :one_xmlrpc=>”http://localhost:2633/RPC2″,
    :vnc_proxy_base_port=>29876,
    :host=>”202.XXX.XXX.XXX”,
    :core_auth=>”cipher”,
    :port=>9869,
    :lang=>”en_US”,
    :vnc_proxy_cert=>nil}
    Tue Oct 28 23:12:59 2014 [E]: Error initializing authentication system
    Tue Oct 28 23:12:59 2014 [E]: [UserPoolInfo] User couldn’t be authenticated, aborting call.

  120. @hewitt
    貌似你在 sunstone web 改了密码后,密码没有同步更新到 sunstone_auth 这个文件导致 sunstone-server 启动失败。

    1. 重置 admin 的密码为 123
    $ oneuser passwd 1 123 –sha1

    2. 保存到 sunstone-server 认证文件 sunstone_auth
    $ echo “serveradmin:123” > /var/lib/one/.one/sunstone_auth

    3. 启动 sunstone-server
    $ sunstone-server start

  121. @vpsee
    谢谢你的回复,不过我的操作提示没有权限修改密码:
    root@cloud:~# oneuser passwd 1 123456 -sha1
    ambiguous option: -sha1
    root@cloud:~# oneuser passwd 1 123456
    [UserChangePassword] User couldn’t be authenticated, aborting call.

  122. @vpsee
    继续请教前辈,我的版本是3.4.1的,现在我已无法使用oneuser、onevm等任何命令,请问如何可以重置我的oneadmin、serveradmin的密码。很着急,谢谢!

  123. @hewitt
    那只能连上 opennebula 的数据库,找到相关表,徒手修改了~

  124. @vpsee
    谢谢,我找到sqlite的数据库了,不过里面存的是密文,我直接修改成明文吗?如果这样的话我还需要修改哪些设置,比如说验证的编码格式之类的。

  125. @hewitt
    肯定不能存明文啊,明文需要 hash 成密文,然后把密文更新到数据库:
    $ echo -n ‘mypassword’ | openssl sha1

  126. @vpsee
    谢谢!我已经用密文修改好了数据库,且/var/lib/one/.one/one_auth中的密码也分别用明文和密文试了,依然提示没有权限
    [UserPoolInfo] User couldn’t be authenticated, aborting call.

    请问是否需要重启one?因为我虚拟服务器上跑着正在使用的应用,所以不敢轻易重启

  127. @hewitt
    应该重启吧,一般重启可以让配置生效,这些配置信息可能在启动 one 的时候就已经预读到了内存里。

  128. 导入的模板没用,虚拟机没起来

  129. web端不显示硬盘信息是什么情况,命令可以查到挂载的盘存在

发表评论