当前位置: 代码网 > it编程>前端脚本>Ruby > 在CentOS上安装和配置OpenNebula入门实例

在CentOS上安装和配置OpenNebula入门实例

2025年03月29日 Ruby 我要评论
为了更好理解这三种不同的云,我们可以拿 google 来举例,刚好这家公司提供了三种形式的云服务,首先看 saas,google gmail/docs/gtalk/maps 这些 apps 都运行在

在centos上安装和配置opennebula入门实例

为了更好理解这三种不同的云,我们可以拿 google 来举例,刚好这家公司提供了三种形式的云服务,首先看 saas,google gmail/docs/gtalk/maps 这些 apps 都运行在 google 云上,所以他们为普通用户提供了 “软件即服务”;google 同时提供面向开发人员的 appengine,可以让开发人员在他们的平台(platform)上使用 python, java 等语言和他们提供的 api 开发软件和服务,所以他们为开发人员提供了 “平台即服务”;google 自己内部构建了基于 gfs, bigtable, mapreduce 之上的庞大基础云设施,为自己内部人员提供了 “基础架构即服务”,这就是三种不同类型的云。

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

安装和配置前端(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 = xenbr0 ]

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 的虚拟机实例。

以上就是在centos上安装和配置opennebula入门实例的详细内容,更多请关注代码网其它相关文章!

(0)

相关文章:

  • 科幻剧《神秘博士》新一季预告 2025年播出

    科幻巨制《神秘博士》回归!今日(12月26日),官方发布新一季前导预告片,宣布2025年强势回归。 舒提·盖特瓦和米莉·吉布森继续饰演神秘博士和ruby,而来自《安多》的瓦拉达·…

    2025年03月29日 前端脚本
  • 全栈 JavaScript 开发人员

    全栈 JavaScript 开发人员

    寻找全栈 react 开发人员来帮助构建和维护我们的数据库、后端/中间件和前端。必须精通 react。您将接受一项考试来挑战您的 react 编码技能。不允许有... [阅读全文]
  • 币安API怎么设定?币安API申请与操作步骤教学

    目录什么是api?在加密货币交易中,api 有什么用途?币安api 的特色与优势币安api 的类型rest apiwebsocket api币安api 的项目币安api 设定步骤币…

    2025年03月29日 前端脚本
  • OOP-Camp:原始类型的秘密生活

    OOP-Camp:原始类型的秘密生活

    一开始,书呆子们做了 1 和 0 并且发现它很好我曾经告诉我的高中生,程序员所做的就是字面意义上的魔法:我们在岩石上刻下符文,将光线穿过它,结果,我可能会被孟加... [阅读全文]
  • 今天的课程-状态,数据类型

    今天的课程-状态,数据类型

    面向对象编程中的对象:状态、行为和标识面向对象编程(oop)的核心概念是“对象”,它包含三个关键要素:状态、行为和标识。状态: 对象的当前属性集合。例如,一辆... [阅读全文]
  • 顶级自动化测试工具可提高效率

    测试自动化涉及使用专门的工具来自动执行原本由人类手动执行的软件测试。这种方法通过使其更快、更准确且更具成本效益来增强测试过程,最终节省资源。 自动化测试的好处自动化测试具…

    2025年03月29日 前端脚本

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com