在CentOS上安装和配置 OpenNebula

系统 Linux
OpenNebula 是一套开源的云计算基础管理工具,用来方便管理员在数据中心统一部署、创建、分配和管理大量的虚拟机。以下的安装过程在 VPSee 的两台装有 CentOS 5.5 系统的服务器上完成,一台服务器做 OpenNubula 前端(node00),另一台服务器用来做节点(node01),搭建一个最小的 “云”。

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

 我们提到的云计算一般有三种类型:软件即服务(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 之上的庞大基础云设施,为自己内部人员提供了 “基础架构即服务”,这就是三种不同类型的云。

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

# cat "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#p#

安装和配置节点(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/ssh 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 node01

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#p#

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

原文链接:http://www.vpsee.com/2011/02/install-opennebula-on-centos/

【编辑推荐】

  1. CentOS 5.5下rsync使用技巧与权限问题解读
  2. 使用GFS和DRBD在CentOS 5.5上进行Samba CTDB集群部署
  3. 使用Eucalyptus打造自己的云测试平台(CentOS+Apache+MySQL)
责任编辑:黄丹 来源: vpsee.com
相关推荐

2011-08-17 10:19:30

CentOSOpenStack N

2014-02-19 14:54:58

CentOS 6.5Xen

2011-01-20 10:27:39

2024-02-19 16:28:24

2015-07-14 09:48:33

2011-03-23 16:08:15

openSUSELAMP

2011-12-01 10:15:26

Ubuntu 11.0OpenNebula

2011-05-24 09:33:40

UbuntuOpenStackNova

2011-04-08 10:10:23

2013-12-24 13:35:47

2012-10-29 16:45:07

CentOS 6.2Puppet

2017-06-26 18:30:01

PythonLinuxCentos

2017-03-21 15:51:57

LinuxCentOS 7MariaDB 10

2022-09-14 11:31:37

MySQL数据库管理系统

2020-08-28 11:20:01

CentOS7RocketMQ 4.运维

2010-03-29 14:48:58

CentOS系统

2019-11-14 09:20:15

CentOS 8RHEL 8Nagios Core

2016-11-08 08:51:43

GitLinux开源

2011-10-28 16:05:56

Node.js

2022-12-02 11:37:47

点赞
收藏

51CTO技术栈公众号