在CentOS上安装和配置OpenNebula入门实例
来源:Linux就该这么学
时间:2025-01-06 11:12:35 330浏览 收藏
从现在开始,我们要努力学习啦!今天我给大家带来《在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入门实例》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于Linux,Linux系统,红帽,Linux命令,linux认证,红帽linux,linux教程,linux视频的知识点!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
500 收藏
-
206 收藏
-
496 收藏
-
373 收藏
-
418 收藏
-
347 收藏
-
136 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习