当今,云计算应用日趋流行,各大型企业、组织纷纷加入云计算的热潮。作为研发组织,以虚拟化技术为基石的云计算技术为我们的组织管理和研发提供了便利。
Eucalyptus是一款基本开源的云计算应用平台,现已集成到ubuntu的企业版。由于笔者搭建centos系统较为便利,所以本文在centos的平台上以xen为基础搭建eucalyputs系统。
由于起初笔者对于linux系统管理基本处于“文盲”阶段,所以在最初搭建的过程中走了很多弯路,付出了很多努力,但同时笔者也在这个艰辛的过程中学到很多,从“文盲”-->"小菜“。希望我的这篇文章能够为同样在Eucalyptus搭建中遇到问题的小菜们提供一些帮助。
在Eucalyptus的社区网站中有对centos搭建Eucalyptus的详细讲述。<点击查看>
作为测试,笔者以三台服务器节点来完成平台搭建。其中将CLC,CC安装在一台前端节点<front-end>上作为控制节点,另外两台作为Node。
笔者的网络配置情况如下:
(1)三台节点通过eth1局域网互连
(2)网段: 10.10.0.0, netmask:255.255.0.0
(3)<front-end> IP:10.10.x.9
(4)<node1> IP: 10.10.x.10
(5)<node2> IP:10.10.x.11
下面是笔者安装的详细步骤
- Front-end
- //安装ntp用来实现front-end和nod
- yum install -y ntp
- ntpdate pool.ntp.org
- //front-end需要java,dhcp服务器二进制代码
- yum install -y java-1.6.0-openjdk ant ant-nodeps dhcp bridge-utils perl-Convert-ASN1.noarch scsi-target-utils httpd
- //配置防火墙,port 8443,8773,8774必须打开,或者直接关闭防火墙
- run system-config-securitylevel-tui
- Select Security Level:Disable
- Select OK;
- //安装Eucalyptus,关于源码安装请参看Eucalyptus社区的文档
- //创建/etc/yum.repos.d/euca.repo文件,文件内容如下:
- [euca]
- name=Eucalyptus
- baseurl=http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/$VERSION/yum/centos/
- enabled=1
- 其中$VERSION文版本号,比如笔者所安装的版本为2.0.1,则将该字段替换为2.0.1
- 安装命令:
- yum install eucalyptus-cloud.$ARCH eucalyptus-cc.$ARCH eucalyptus-walrus.$ARCH eucalyptus-sc.$ARCH --nogpgcheck
- 其中$ARCH为主机的体系结构,比如笔者的位x86_64.(通常为i386或x86_64)
- //配置/etc/eucalyp/eucalyputs.conf文件,这里是笔者出错最多的地方,后面将给出如何配置的详细说明,请读者阅读后根据自己的实际情况配置,一下只是笔者配置的一个实例
- HYPERVISOR="xen"
- VNET_PUBINTERFACE="eth1"
- VNET_PRIVINTERFACE="eth1"
- VNET_MODE="STATIC"
- VNET_SUBNET="10.10.0.0"
- VNET_NETMASK="255.255.0.0"
- VNET_BROADCAST="10.10.255.255"
- VNET_ROUTER="10.10.x.9"
- VNET_DNS="8.8.8.8"
- VNET_MACMAP="AA:DD:11:CE:FF:ED=10.10.x.32 AA:DD:11:CE:FF:EE=10.10.x.33 AA:DD:11:CE:FF:EF=10.10.x.34"
- 文件中其他可以保持默认
- Node
- //安装ntp用来实现front-end和nod
yum install -y ntp- ntpdate pool.ntp.org
- yum install -y java-1.6.0-openjdk ant ant-nodeps dhcp bridge-utils perl-Convert-ASN1.noarch scsi-target-utils httpd
- //Node需要安装xen并且配置xen允许通过HTTP从localhost控制hypervisor
- yum install -y xen*
- yum install -y kernel-xen*
- sed --in-place 's/#(xend-http-server no)/(xend-http-server yes)/' /etc/xen/xend-config.sxp
- sed --in-place 's/#(xend-address localhost)/(xend-address localhost)/' /etc/xen/xend-config.sxp
- 修改/etc/boot/grub.conf中的启动项,是其启动xen,重启节点。
- //配置防火墙,port 8775必须打开,或者直接关闭防火墙
- run system-config-securitylevel-tui
- Select Security Level:Disable
- Select OK;
/安装Eucalyptus,关于源码安装请参看Eucalyptus社区的文档
- //创建/etc/yum.repos.d/euca.repo文件,文件内容如下:
- [euca]
- name=Eucalyptus
- baseurl=http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/$VERSION/yum/centos/
- enabled=1
- 其中$VERSION文版本号,比如笔者所安装的版本为2.0.1,则将该字段替换为2.0.1
- 安装命令:
- yum install eucalyptus-nc.$ARCH --nogpgcheck
- //Post-Install Steps
- 在每台node节点上,查看/etc/libvirt/libvirtd.conf文件,确认一下行未被注释:
- #unix_sock_group = "libvirt" => unix_sock_group = "libvirt"
- #unix_sock_ro_perms = "0777" => unix_sock_ro_perms = "0777"
- #unix_sock_rw_perms = "0770" => unix_sock_rw_perms = "0770"
- //确保libvirt运行正常并可与hypervisor正常通信,在Node节点运行如下命令:
- $: virsh list
- 如果上述命令的输出包括Domain-0,则配置正确。
- 配置/etc/eucalyptus/eucalyptus.conf文件
- HYPERVISOR="xen"
- VNET_PUBINTERFACE="xenbr1"
VNET_PRIVINTERFACE="xenbr1"- VNET_BRIDGE="xenbr1"
- VNET_MODE="STATIC"
- 启动Eucalyptus
- //front-end
- /etc/init.d/eucalyptus-cloud start
- /etc/init.d/eucalyputs-cc start
- //Node
- /etc/init.d/eucalyputs-nc start
- 注册Eucalyputs组件
- //front-end
- euca_conf --register-walrus <front-end IP address> //如笔者的euca_conf --register-walrus 10.10.x.9
- euca_conf --register-cluster <clustername> <front-end IP address> //clustername 为自定义的名字
- euca_conf --register-sc <clustername> <front-end IP address>
- //在front-end上注册nodes
- euca_conf --register-nodes <Node 0 IP address> <Node 1 IP address> ... <Node N IP address>
- 如笔者:euca_conf --register-nodes 10.10.x.10 10.10.x.11
- 初始配置
- 登陆管理主页http://front-end-ip:8443
- 默认用户名密码为admin
- 登陆后修改密码
- 设置管理员邮箱
- 确认CC的IP地址
- 在Credentials主页点击Download Credentials按钮下载
- 创建目录存储下载的文件并解压
- mkdir $HOME/.euca
- unzip euca2-admin-x509.zip -d $HOME/.euca
- . $HOME/.euca/eucarc //注册eucarc环境
- 安装Euca2ools
- 创建/etc/yum.repos.d/euca.repo文件
-
[euca2ools] name=Euca2ools baseurl=http://www.eucalyptussoftware.com/downloads/repo/euca2ools/$VERSION/yum/centos/ enabled=1
- 其中$VERSION为版本号,如1.2
- yum install euca2ools.$ARCH --nogpgcheck
- 上传镜像文件
- //增加镜像<查看可下载镜像>
-
euca-bundle-image -i <kernel file> --kernel true euca-upload-bundle -b <kernel bucket> -m /tmp/<kernel file>.manifest.xml euca-register <kernel-bucket>/<kernel file>.manifest.xml
-
euca-bundle-image -i <vm image file> euca-upload-bundle -b <image bucket> -m /tmp/<vm image file>.manifest.xml euca-register <image bucket>/<vm image file>.manifest.xml
-
euca-bundle-image -i <initrd file> --ramdisk true euca-upload-bundle -b <initrd bucket> -m /tmp/<initrd file>.manifest.xml euca-register <initrd bucket>/<initrd file>.manifest.xml
- //关联kernels和ramdisks到instances
-
euca-bundle-image -i <vm image file> --kernel <eki-XXXXXXXX> --ramdisk <eri-XXXXXXXX>
-
eki-XXXXXXXX eri-XXXXXXXX均为上面步骤产生,请注意记录,也可以通过web管理页面进行查看
-
下面是一个传镜像实例
-
tar zxvf euca-ubuntu-9.04-x86_64.tar.gz euca-bundle-image -i euca-ubuntu-9.04-x86_64/xen-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) euca-bundle-image -i euca-ubuntu-9.04-x86_64/xen-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) 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
-
创建自己的密钥文件
-
euca-add-keypair mykey | tee mykey.priv
-
chmod 0600 mykey.priv
- 通过euca-describe-images查看有哪些镜像
-
运行实例
-
euca-run-instances -k mykey <emi-id> -t <type> -n <number of instances to start>
-
其中mykey和mykey.priv可以命名为自己的文件,emi-id为可查看到的镜像
-
如euca-run-instances -k mykey emi-39E1892
-
可以过euca-describe-instances查看instances运行状态
-
运行状态由pending变为running后即可登录如
-
RESERVATION r-38390699 admin default INSTANCE i-3BC30777 emi-1C88159B 10.10.103.33 10.10.103.33 running key 0 m1.small 2011-02-18T12:07:14.623Z mycluster eki-8DAF16EB eri-882616CD RESERVATION r-3C9007FC admin default INSTANCE i-3BDD0719 emi-1C88159B 10.10.103.32 10.10.103.32 running key 0 m1.small 2011-02-18T08:59:33.67Z mycluster eki-8DAF16EB eri-882616CD
- //登录
- ssh -k mykey root@10.10.103.32
- 注意这里登录时提示需要输入passphase,这里需要自己修改一下,改变RSA passphase:ssh-keygen -fid_rsa -p
- 至此我们登上instances开始我们的云端之旅了
- FAQ
问:front-end中
VNET_PUBINTERFACE="eth1"
VNET_PRIVINTERFACE="eth1"如何配置
答:VNET_PUBINTERFACE设置成front-end与外网连接的网卡接口
VNET_PRIVINTERFACE设置成与Node节点互连的网卡接口
问front-end中如何配置Mode
答:eucalyputs中有四种可选模式,这里笔者选择了static模式,其他模式可以参考官方文档。下面对static模式配置进行简单描述
- VNET_MODE="STATIC" //设置为static模式
- VNET_SUBNET="10.10.0.0" //网段
- VNET_NETMASK="255.255.0.0" //netmask
- VNET_BROADCAST="10.10.255.255" //广播地址
- VNET_ROUTER="10.10.x.9" //route
- VNET_DNS="8.8.8.8" //dns服务器
- VNET_MACMAP="AA:DD:11:CE:FF:ED=10.10.x.32 AA:DD:11:CE:FF:EE=10.10.x.33 AA:DD:11:CE:FF:EF=10.10.x.34" //mac:ip映射,用来管理ip
注意在上面的设置中,网段一定要设置成instance和nodes以及连接nodes的front-end的网卡接口在同一网段,否则无法实现通信。笔者在这一点上犯了很多错误,花费了大量的时间
问:node节点VNET_PUBINTERFACE="xenbr1",VNET_PRIVINTERFACE="xenbr1"如何设置
答:设置为xen自动建立的网桥。这里网桥为xenbr1
问:VNET_BRIDGE="xenbr1"如何设置:
答:设置为xen自动建立的网桥。这里网桥为xenbr1。关于如何确定网桥,可以通过
brctl show命令来查看。
对于整个的搭建过程,笔者进行了上述陈述,有些地方可能陈述的不是很清楚,如果读者有什么疑问可以和笔者联系