Eucalyptus 安装与使用手册


Eucalyptus 安装与使用手册 cs2c 第一版 1.6.2 by chinacloud 2010.4.30 一、 Eucalyptus 简介 Eucalyptus 是加利福尼亚大学的 Daniel Nurmi 等人实现的,是一个用于实现云计算的开 源软件基础设施。Eucalyptus 是 Amazon EC2 的一个开源实现,它与 EC2 的商业服务接口兼 容。Eucalyptus 是一个面向研究社区的软件框架,它不同于其他的 IaaS 云计算系统,能够在 已有的常用资源上进行部署,Eucalyptus 采用模块化的设计,它的组件可以进行替换和升 级,为研究人员提供了一个进行云计算研究的很好的平台。Eucalyptus 的设计目标是容易扩 展、安装和维护。和 EC2 一样,Eucalyptus 依赖于 Linux 和 Xen 进行操作系统虚拟化。 Eucalyptus 的开源版与商业版的体系结构如图 1 和图 2 所示: 图 1. Eucalyptus 开源版拓扑结构 图 2. Eucalyptus 商业版拓扑结构 二、 Eucalyptus 的安装 Eucalyptus 的安装并不复杂,但对新事物的理解总是伴随着一个循序渐进的过程,在这 个过程中会遇到很多问题或困难。也正是如此,逐步加深了我们对 Eucalyptus 的认识。 1. 安装环境 我们的安装是在 RedHat 5.4 中进行的,虚拟机为 Xen 3.0,Eucalyptus 的版本为 1.6.2。Euca2tools 为 1.2。 环境中共两台物理主机,在一台物理主机上安装 CLC,CC,WC,SC 节点,在另一台物理主机 上安装 NC 节点。 2. 安装准备 在安装 Eucalyptus 前需要安装一些所需要的包,并配置好相应的文件。 a) 安装必备环境 b) 配置 Xen 脚本 这里需要注意的是,前端和后端节点的 Xen 都要进行配置,否则安装完 Eucalyptus 后前 端和后端节点是不能通信的。 c) 配置防火墙 推荐把防火墙和 Selinux 关掉,如果不关的话要打开相应端口。 d) 下载 Eucalyptus 安装包和 Euca2tool 管理工具 安装包和管理工具都可以到官网上下载。我是从如下网站下载的,上面包括可安装包和相 应的依赖包,非常方便。 yum install gcc yum install ntp ntpdate pool.ntp.org(有条件的可以同步前端和后端节点的时间) yum install -y java-1.6.0-openjdk ant ant-nodeps dhcp bridge-utils httpd 修改以下字段: (xend-http-server yes) (xend-unix-server yes) (xend-unix-path /var/lib/xend/xend-socket) (xend-address localhost) (network-script network-bridge) (vif-script vif-bridge) (dom0-min-mem 196) 文本模式: * run system-config-securitylevel * select Security Level: Disabled * select OK 图形模式: * run system-config-security-level * select 'Disabled' for 'Firewall' * select the 'SELinux' tab * select either 'Permissive' or 'Disabled' for SELinux Setting http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/ 3. 安装过程 a) Euca2tool 的安装 b) Eucalyptus 依赖包的安装 另外 Eucalyptus 依赖两个 python 包(官网文档中没有介绍),同样需要下载安装: c) 前端节点的安装 这里出于实验的目的我们把 CC、CLC、WC 和 SC 安装在了一台机器上。如果从健壮性角度 出发,可以把以上 4 部分分别安装在一台机器上。 d) 后端节点的安装 后端节点用来向用户提供计算资源,所以在后端节点只安装 euca、nc 以及 gl 包即可: e) 安装总结 至此,Eucalyptus 环境已经安装完了,我在安装过程中遇到了一些问题。一个是 python 依赖包的安装。由于官方文档没有介绍当时就没有安装。安装其他包的时候提示依赖 python 环境,于是自己就下载了需要的 python 版本,并进行了更新设置。但依赖问题仍然没有解 决。google 了一下才知道官网上有这两个包的下载,只是官网文档没有介绍而已。另一个是 java 环境的依赖,与 python 类似,只是需要自己安装 java-1.6.0-openjdk 即可,这在之前的安 装准备工作有所介绍。 4. 启动并设置 Eucalyptus rpm –ivh euca2ools-1.2-0.1.rc1.x86_64.rpm rpm -ivh aoetools-21-1.el4.x86_64.rpm euca-axis2c-1.6.0-1.x86_64.rpm euca-rampartc-1.3.0-1.x86_64.rpm vblade-14-1mdv2008.1.x86_64.rpm groovy-1.6.5-1.noarch.rpm \ vtun-3.0.2-1.el5.rf.x86_64.rpm lzo2-2.02-3.el5.rf.x86_64.rpm rpm –ivh python25-2.5.1-bashton1.x86_64.rpm python25-libs-2.5.1-bashton1.x86_64.rpm rpm -ivh eucalyptus-1.6.2-1.x86_64.rpm eucalyptus-common-java-1.6.2-1.x86_64.rpm eucalyptus-cloud-1.6.2-1.x86_64.rpm eucalyptus-walrus-1.6.2-1.x86_64.rpm eucalyptus-sc-1.6.2-1.x86_64.rpm eucalyptus-cc-1.6.2-1.x86_64.rpm eucalyptus-gl-1.6.2-1.x86_64.rpm rpm -ivh eucalyptus-1.6.2-1.x86_64.rpm eucalyptus-gl-1.6.2-1.x86_64.rpm eucalyptus-nc-1.6.2-1.x86_64.rpm Eucalyptus 安装好后,我们可以通过命令行启动前端和后端节点上的相应服务,然后通 过设置 Eucalyptus 的相应配置文件,可以选择网络管理模式等。初期我们选择的是最简单的 网络模式,即 VNET_MODE=SYSTEM。这个模式只能设置局域网中虚拟机的 ip 地址,如果需要设 置不同的外网及内网 ip,可以采取 STATIC 及 MANAGED 模式等。在后续的实验中我也会把这些 模式的使用方法补充上来。 a) 启动前端及后端节点服务 通过以下命令进行启动: 这里我曾经遇到一个问题,就是在后端节点启动后,提示如下内容: 提示找不到 xen 的虚拟网桥,所以 vm 就无法共享 domain 0 的网络了。以至于运行查看资 源的命令后所显示的资源数为零(此问题在后面说明)。原因在于当时我只设置了前端主机的 xen 配置文件,并没有相应的设置后端主机,因为粗心导致了这个错误。 启动完成后运行如下命令查看 xen 虚拟机连接: 我们应该看到如下显示: 说明连接成功,可以进行如下设置了。 b) 配置 Eucalyptus 脚本文件 编辑/etc/eucalyptus/eucalyptus.conf,前端节点设置为 VNET_MODE=SYSTEM 模式,后端 节点同样设置为 VNET_MODE=SYSTEM。然后在后端节点运行 brctl show,查看 xen 的桥接设 备。在这里我遇到了两个主要问题,困扰了很长时间。 一是执行 euca-describe-availability-zones verbose 后,显示如下: 这说明前端管理节点没有探测到后端计算节点的资源,所以显示的所有资源都为 0。后来 通过阅读配置文件并查看后端节点的桥接情况才发现,Eucalyptus 的配置文件中 /etc/init.d/eucalyptus-cloud start /etc/init.d/eucalytpsu-cc start /etc/rc.d/init.d/eucalyptus-nc start You should have at least 32 loop devices Starting Eucalyptus services: Warning! Cannot find bridge xenbr0: instances may be without net Enabling bridge netfiltering for eucalyptus. su eucalyptus -c "virsh list" Id Name State ----------------------------------------- 0 Domain-0 r AVAILABILITYZONE CloudServer 192.168.8.5 AVAILABILITYZONE |- vm types free / max cpu ram disk AVAILABILITYZONE |- m1.small 0000 / 0000 1 128 2 AVAILABILITYZONE |- c1.medium 0000 / 0000 1 256 5 AVAILABILITYZONE |- m1.large 0000 / 0000 2 512 10 AVAILABILITYZONE |- m1.xlarge 0000 / 0000 2 1024 20 AVAILABILITYZONE |- c1.xlarge 0000 / 0000 4 2048 20 VNET_BRIDGE 被设置为 xenbr0,而 brctl show 命令中只有 xenbr1 以及相应的 peth1,当然就 连不通了。将 xenbr1 改正后再运行以上命令,所显示的一切正常。 c) 注册控制机及节点 前后端服务启动及资源情况一切正常后,我们可以通过命令注册各个控制节点,并加入后 端计算节点。 通过以下命令可以进行验证,是否注册成功: 注册成功后会显示相应的自定义名字和 ip 地址。 然后注册后端节点格式如下: 同样可以运行 euca_conf --list-nodes 来进行验证是否注册成功。不过在 Eucalyptus 1.6.1 中是没有—list-nodes 命令选项的,应该是在 1.6.2 中新加入的。 至此,Eucalyptus 的启动及配置工作完成,下面就可以创建实例并登陆使用了。 5. 登陆 Eucalyptus 并上传镜像文件 我们可以通过 web 方式进入 Eucalyptus 的管理界面 euca_conf --register-walrus 192.168.8.2 //walrus 所在节点 ip euca_conf --register-cluster CloudServer 192.168.8.2 //IP地址前的是自定义的 CLC 的名字 euca_conf --register-sc CloudServer 192.168.8.2 //注册 storage control euca_conf --list-walruses euca_conf --list-clusters euca_conf --list-scs euca_conf --register-nodes " ... " euca_conf --register-nodes 192.168.8.6 //后端节点 ip https://192.168.8.2:8443 //管理节点的 ip 地址 默认管理帐号和密码都是 admin,第一次登陆需要强制修改。登陆进去之后会看到一个 Credentials ZIP-file 文件,如图所示: 下载该文件,然后把这个文件copy到客户端机器中,有了这个文件,你就可以使用eucalyp tus的管理工具euca2ool进行管理了,但还需要配置一下。 完成后我们就可以使用 euca2tool 的命令了,如 euca-describe-images 等。此时我们运行此 命令后结果为空,因为我们还没有上传并注册任何的镜像文件。下面我们就来做这件事。 我们可以通过以下网址下载现成的操作系统镜像文件: 我们也可以编辑上传自己的操作系统镜像,原理是一样的。下面以下载的 Ubuntu 9.04 镜 像为例,介绍如何上传并注册系统镜像。 其中$EKI 为注册的 kernel ID,$ERI 为注册的 ramdisk ID,$EMI 为注册的 img ID。上传 成功后,我们在 web 界面上就可以看到镜像文件了: # mkdir $HOME/eucalyptus # cp Credentias.ZIP (刚才下载的证书文件) $HOME/eucalyptus # cd $HOME/eucalyptus # mkdir .euca # cd .euca # unzip Credentias.ZIP # chmod 755 eucarc最後 # . ~/.euca/eucarc http://open.eucalyptus.com/wiki/EucalyptusUserImageCreatorGuide_v1.6 euca-bundle-image -i euca-ubuntu-9.04-x86_64/kvm-kernel/vmlinuz-2.6.28-11-generic --kernel true euca-upload-bundle -b ubuntu-kernel-bucket -m /tmp/vmlinuz-2.6.28-11-generic.manifest.xml euca-register ubuntu-kernel-bucket/vmlinuz-2.6.28-11-generic.manifest.xml (set the printed eki to $EKI) //长传并注册 kernel euca-bundle-image -i euca-ubuntu-9.04-x86_64/kvm-kernel/initrd.img-2.6.28-11-generic --ramdisk true euca-upload-bundle -b ubuntu-ramdisk-bucket -m /tmp/initrd.img-2.6.28-11-generic.manifest.xml euca-register ubuntu-ramdisk-bucket/initrd.img-2.6.28-11-generic.manifest.xml (set the printed eri to $ERI) //长传并注册 ramdisk(非必须) euca-bundle-image -i euca-ubuntu-9.04-x86_64/ubuntu.9-04.x86-64.img --kernel $EKI --ramdisk $ERI euca-upload-bundle –b ubuntu-image-bucket -m /tmp/ubuntu.9-04.x86-64.img.manifest.xml euca-register ubuntu-image-bucket/ubuntu.9-04.x86-64.img.manifest.xml //长传并注册 img 然后我们在前端节点运行 euca-describe-images 命令,会显示如下内容: 到这里我们就可以用这个系统镜像文件创建我们的 vm 了。不过我们需要创建自己的密钥 文件,方法如下: 接着运行创建实例命令: 其中 mykey 就是我们刚才加入的密钥,-n 指定有多少个虚拟实例,emi-id 就是之前注册 系统镜像时生成的 img ID,如下所示: 我们可以看到,Eucalyptus 为创建的虚拟实例分配了一个 domain name,即 i-383806FE。 开始时,vm 实例处于 pending 状态,并且内部和外部 ip 都为零。过一会 Eucalyptus 就会通过 dhcp 给 vm 分配 ip 地址了,并且 vm 变成了 running 状态: 上面所说的第二个问题就是在这里遇到的,困扰了我很长时间。也就是执行 euca-run- instances $EM 后 I,分配给 vm 的 ip 地址始终是 0.0.0.0 0.0.0.0,手动添加 ip 也不成功,问了很 多人都没有解决。其实这个问题也很简单,问题就出在网卡和公司的 dhcp 服务器上。 实验用的机器里有两块网卡,一块接集群间的局域网,一块接外网,分别是 eth0 和 eth1。在 RedHat 上安装 xen 内核后,xen 只虚拟出了 eth1 对应的网桥 xenbr1,而 eth0 所对应 的网桥并没有出现。虽然我在局域网机群上自己配置了 dhcp 脚本,并开启了 dhcp 服务,但 Eucalyptus 中的配置文件中设置的是 xenbr1(原因前面内容有说明),所以 Eucalyptus 使用的 应该是公司的 dhcp 服务器,但公司的 dhcp 如果没有 mac 地址的话是不会分配 ip 的,而我们 创建的虚拟机采用的是 domain 0 虚拟的 mac 地址,所以就无法从公司 dhcp 服务器获得 ip 地 址,于是导致其内外网 ip 始终为 0.0.0.0 0.0.0.0。 我们是这样解决这个问题的,首先把 eth1 这块网卡禁掉,编辑/etc/susconfig/network- script/ifcfg-eth1 文件,把其中的 ONBOOT=yes 改为 ONBOOT=no,然后重新启动。这是再运 行 brctl show 命令,会看到如下内容: IMAGE eri-8EAD16F0 ubuntu-ramdisk-bucket/initrd-2.6.27.21-0.1-xen.manifest.xml admin available public x86_64 ramdisk IMAGE emi-39E61616 ubuntu-image-bucket/ubuntu.9-04.x86-64.img.manifest.xmladmin available public x86_64 machine eri-8EAD16F0 eki-945E1714 IMAGE eki-945E1714 ubuntu-kernel-bucket/vmlinuz-2.6.27.21-0.1-xen.manifest.xml admin available public x86_64 kernel euca-add-keypair mykey >mykey.private chmod 0600 mykey.private euca-run-instances -k mykey -n # euca-run-instances -k mykey emi-39E61616 RESERVATION r-42E9078B admin admin-default INSTANCE i-383806FE emi-39E61616 0.0.0.0 0.0.0.0 pending mykey 2010-04-28T14:17:51.48Z eki-945E1714 eri- 8EAD16F0 RESERVATION r-30DC05B8 admin default INSTANCE i-4D8B0854 emi-39E61616 192.168.8.249 192.168.8.249 running mykey 0 m1.small 2010- 04-28T14:23:18.574Z cs eki-945E1714 eri-8EAD16F0 xen 生成了 peh0 对应的网桥 xenbr0,而为何两块网卡的时候只生成其中一个,后面我会 查一下资料弄明白。这样实验机就只使用机群中的 dhcp 服务了。这里需要注意的是,我们在 之前创建的.euca 目录中下载安装的 Credentials ZIP-file 文件需要更新为新文件,不然 euca- describe-instances 等命令执行后会停在那里,然后提示”connection time out”。 然后再创建虚拟实例,从 pending 状态变为 running 状态后,终于获得了自己的 ip 地址。 这样我们就可以通过 ssh 命令登陆这个 vm 了: 这里又遇到一个问题,就是登陆的时候提示需要输入 passphase,这里需要自己改一下。 改变 RSA passphrase:ssh-keygin –f id_rsa –p;而改变 DSApassphase 为:ssh-keygin –f id_dsa – p 6.总结 到此为止,Eucalyptus 的安装与登陆就介绍完了。其中还有很多的功能需要了解和实验。 在后续的工作中我会逐步完成,并补充进此文档。 三、 Eucalyptus 常用命令介绍 1. euca_conf:eucalyptus configuration bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes xenbr0 8000.feffffffffff no vif2.0 peth0 vif0.0 ssh -k mykey root@192.168.8.2 /usr/sbin/euca_conf [options] [] where is the configuration file (//etc/eucalyptus/eucalyptus.conf by default) --help this message -d point EUCALYPTUS to --no-rsync don't use rsync --no-scp don't use scp --skip-scp-hostcheck skip scp interactive host keycheck --get-credentials download credentials to --register-nodes "host host ..." add new nodes to EUCALYPTUS --deregister-nodes "host host ..." remove nodes from EUCALYPTUS --register-cluster add new cluster to EUCALYPTUS --deregister-cluster remove cluster from EUCALYPTUS --register-walrus add walrus to EUCALYPTUS --deregister-walrus remove walrus from EUCALYPTUS --register-sc add storage controller --deregister-sc remove storage controller from EUCALYPTUS --list-walruses list registered walrus(es) --list-clusters list registered CCs --list-nodes list registered NCs --list-scs list registered SCs --no-sync used only with --register-* to skip syncing 2. 启动、停止及重新启动 3. 系统查询 4. 创建密钥 5. 创建并登陆虚拟实例 6. 终止或重启虚拟实例 keys --cc-port set CC port --nc-port set NC port --instances set the INSTANCE path --hypervisor set hypervisor to use --user set the user to use --dhcpd set the dhcpd binary to --dhcp_user set the username to run dhcpd as --name returns the value or --import-conf import variables from into eucalyptus .conf --setup perform initial setup --enable {cloud|walrus|sc} enable service at next start --disable {cloud|walrus|sc} disable service at next start --check {nc|cc|cloud|sc|walrus} pre-flight checks --version eucalyptus version /etc/init.d/eucalyptus-cloud start /etc/init.d/eucalyptus-cc start /etc/init.d/eucalyptus-nc start /etc/init.d/eucalyptus-cloud stop /etc/init.d/eucalyptus-cc stop /etc/init.d/eucalyptus-nc stop /etc/init.d/eucalyptus-cloud restart /etc/init.d/eucalyptus-cc restart /etc/init.d/eucalyptus-nc restart euca-describe-availability-zones verbose //描述可用资源情况 euca-describe-images //描述可用系统镜像 euca-describe-keypairs //描述密钥 euca-describe-instances //查询实例状态 euca-add-keypair mykey >mykey.private chmod 0600 mykey.private euca-run-instances -k mykey -n ssh -i mykey.private root@ euca-terminate-instances ... euca-reboot-instances ... 7. 分配及回收 ip 地址 还有很多其他的命令,大家可以通过查询 eucalyptus user guide 来进行使用。 euca-allocate-address ADDRESS a.b.c.d euca-associate-address -i i-56785678 a.b.c.d euca-disassociate-address a.b.c.d euca-release-address a.b.c.d
还剩10页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

w_guiping

贡献于2012-03-12

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf