• 云虚拟化


    http://www.aikaiyuan.com/4889.html

    http://downloads.opennebula.org/packages/

    我们提到的云计算一般有三种类型:软件即服务(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 服务,类似的开源产品还有 Eucalyptus, openQRM 等。以下的安装过程在 VPSee 的两台装有 CentOS 5.5 系统的服务器上完成,一台服务器做 OpenNubula 前端(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 = 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 的虚拟机实例。

  • 相关阅读:
    刷题总结——射箭(bzoj2732)
    算法复习——半平面交(bzoj2618凸多边形)
    刷题总结——spoj1812(后缀自动机+DP)
    刷题总结:最长公共字串(spoj1811)(后缀自动机)
    算法复习——后缀自动机
    算法复习——splay+启发式合并(bzoj2733-永无乡)
    北京集训TEST13——PA(Goodness)
    linux命令学习笔记(46):vmstat命令
    linux命令学习笔记(45):free 命令
    linux命令学习笔记(44):top命令
  • 原文地址:https://www.cnblogs.com/ruiy/p/cloudVirtual.html
Copyright © 2020-2023  润新知