利用Ubuntu搭建私有云

-

这一段时间大家都在谈云计算,Ubuntu也是在它的server版本中增加了Eucalyptus软件包,用以支持一个与亚马逊EC2兼容的企业云。作为一个弹性扩展方式,Cloud的确很方便。

闲来无事,测试了一下。报下配置,理论上用虚拟机是完全可以的:
1台Dell 台式机,用以安装Cluster,双核+2G+250G;一台Asus本本,用以安装Node,双核+2G+160G;当然,我的测试中还有我自己的ubuntu本本充当客户端,这台机器可以省略,将客户端放在上述主机中的任何一台——前提是只要不是生产环境。

 

1. 安装Cluster主机

貌似这里没什么好说的,我用的是Ubuntu 910 x86_64 server,我的网络已经开启了DHCP(ip:192.168.103.223),没有太多的配置。安装的最后,系统会询问你安装的软件包。选择 Install Ubuntu Enterprise Cloud Cluster。系统会要求配置postfix以发送验证邮件,internet Site选项即可。Name your cluster 也没什么特别,我就用了My Cloud。
a list of available IP addresses on your network 选项是用于虚拟机的IP段,这里用一个空的Ip段即可。

2. 安装Node主机

同样没什么可以多说的,但要求Node主机跟Cluster在同一个网段内即可(ip:192.168.103.233)。选择 Install Ubuntu Enterprise Cloud Node。由于Cluster主机已经启动了,向导直接就通过了。

3. 调试Cloud

在Cluster上执行 sudo euca_conf –no-rsync –discover-nodes ,系统会提示发现Node并将Node加如Cloud。
用客户端访问https://192.168.103.223:8443 (建议使用Linux+Firefox),默认的用户名和密码都是admin,比较汗。登录后在Credentials选项卡中download Credentials下载打包好的验证文件。我的文件名~/euca2-admin-x509.zip

4. 配置客户端

据说有一个基于Firefox插件的图形化客户端,没有测试过,各位可以测试下。我还是比较笨的用命令行。

sudo apt-get install ec2-api-tools euca2ools

mkdir ~/.euca
cd ~/.euca
unzip ~/euca2-admin-x509.zip
chmod -R 0700 ~/.euca
~/.euca/eucarc
echo ”[ -r ~/.euca/eucarc ] && . ~/.euca/eucarc” >> ~/.bashrc

重新开一个终端,让配置生效,或者。。。重启吧。

5. 上传虚拟机文件

还是访问上面https://192.168.103.223:8443

Extras选项卡里面,我下载了euca-ubuntu-9.04-x86_64.tar.gz,你当然可以选择其它的,方法类似。

比较乱,我贴操作过程了

litrin@test001:~$ euca-describe-availability-zones verbose #这条命令是查看可用的资源
AVAILABILITYZONE test002 192.168.103.233
AVAILABILITYZONE |- vm types free / max cpu ram disk
AVAILABILITYZONE |- m1.xlarge 0000 / 0000 1 256 5
AVAILABILITYZONE |- m1.small 0000 / 0000 1 256 5
AVAILABILITYZONE |- m1.large 0000 / 0000 1 256 5
AVAILABILITYZONE |- c1.xlarge 0000 / 0000 1 256 5
AVAILABILITYZONE |- c1.medium 0000 / 0000 1 256 5

litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ tar vzxf euca-ubuntu-9.04-x86_64.tar.gz
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ cd euca-ubuntu-9.04-x86_64/xen-kernel/
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ euca-bundle-p_w_picpath -i ./vmlinuz-2.6.27.21-0.1-xen –kernel true #上传核心
Checking p_w_picpath
Tarring p_w_picpath
Encrypting p_w_picpath
Splitting p_w_picpath…
Part: vmlinuz-2.6.27.21-0.1-xen.part.0
Generating manifest
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ euca-upload-bundle -b kernel -m /tmp/vmlinuz-2.6.27.21-0.1-xen.manifest.xml #绑定核心
Checking bucket: kernel
Creating bucket: kernel
Uploading manifest file
Uploading part: vmlinuz-2.6.27.21-0.1-xen.part.0
Uploaded p_w_picpath as kernel/vmlinuz-2.6.27.21-0.1-xen.manifest.xml
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ euca-register kernel/vmlinuz-2.6.27.21-0.1-xen.manifest.xml
IMAGE eki-2AB51173 #注意此ID
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$

同样的,上传ramdisk文件

litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ euca-bundle-p_w_picpath -i ./initrd-2.6.27.21-0.1-xen –ramdisk true
Checking p_w_picpath
Tarring p_w_picpath
Encrypting p_w_picpath
Splitting p_w_picpath…
Part: initrd-2.6.27.21-0.1-xen.part.0
Generating manifest
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ euca-upload-bundle -b ramdisk -m /tmp/initrd-2.6.27.21-0.1-xen.manifest.xml
Checking bucket: ramdisk
Creating bucket: ramdisk
Uploading manifest file
Uploading part: initrd-2.6.27.21-0.1-xen.part.0
Uploaded p_w_picpath as ramdisk/initrd-2.6.27.21-0.1-xen.manifest.xml
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$ euca-register ramdisk/initrd-2.6.27.21-0.1-xen.manifest.xml
IMAGE eri-24EC1157 #注意此ID
litrin@test001:~/euca-ubuntu-9.04-x86_64/xen-kernel$

还有最后一个磁盘镜像文件

litrin@test001:~/euca-ubuntu-9.04-x86_64$ euca-bundle-p_w_picpath -i ubuntu.9-04.x86-64.img –kernel eki-2AB51173 –ramdisk eri-24EC1157 #与上面的ID一一对应
Checking p_w_picpath
Tarring p_w_picpath
Encrypting p_w_picpath
Splitting p_w_picpath…
Part: ubuntu.9-04.x86-64.img.part.0
Part: ubuntu.9-04.x86-64.img.part.1
Part: ubuntu.9-04.x86-64.img.part.2
Part: ubuntu.9-04.x86-64.img.part.3
Part: ubuntu.9-04.x86-64.img.part.4
Part: ubuntu.9-04.x86-64.img.part.5
Part: ubuntu.9-04.x86-64.img.part.6
Part: ubuntu.9-04.x86-64.img.part.7
Part: ubuntu.9-04.x86-64.img.part.8
Part: ubuntu.9-04.x86-64.img.part.9
Part: ubuntu.9-04.x86-64.img.part.10
Part: ubuntu.9-04.x86-64.img.part.11
Part: ubuntu.9-04.x86-64.img.part.12
Part: ubuntu.9-04.x86-64.img.part.13
Generating manifest
litrin@test001:~/euca-ubuntu-9.04-x86_64$ euca-upload-bundle -b p_w_picpaths -m /tmp/ubuntu.9-04.x86-64.img.manifest.xml
Checking bucket: p_w_picpaths
Uploading manifest file
Uploading part: ubuntu.9-04.x86-64.img.part.0
Uploading part: ubuntu.9-04.x86-64.img.part.1
Uploading part: ubuntu.9-04.x86-64.img.part.2
Uploading part: ubuntu.9-04.x86-64.img.part.3
Uploading part: ubuntu.9-04.x86-64.img.part.4
Uploading part: ubuntu.9-04.x86-64.img.part.5
Uploading part: ubuntu.9-04.x86-64.img.part.6
Uploading part: ubuntu.9-04.x86-64.img.part.7
Uploading part: ubuntu.9-04.x86-64.img.part.8
Uploading part: ubuntu.9-04.x86-64.img.part.9
Uploading part: ubuntu.9-04.x86-64.img.part.10
Uploading part: ubuntu.9-04.x86-64.img.part.11
Uploading part: ubuntu.9-04.x86-64.img.part.12
Uploading part: ubuntu.9-04.x86-64.img.part.13
Uploaded p_w_picpath as p_w_picpaths/ubuntu.9-04.x86-64.img.manifest.xml
litrin@test001:~/euca-ubuntu-9.04-x86_64$ euca-register p_w_picpaths/ubuntu.9-04.x86-64.img.manifest.xml
IMAGE emi-FFAD10FF #最后一个ID,此ID为虚拟机的ID

虚拟机上传OK,可以在https://192.168.103.223:8443/?page=1#p_w_picpaths检查是否正确,

6. 启动主机

在客户机上执行

ec2-add-keypair mykey >private.key
chmod 0644 private.key
euca-run-instances -k mykey -n 1 emi-FFAD10FF #euca-terminate-instances emi-FFAD10FF则是关机
ca-describe-instances #获取IP

ssh -i private.key root@192.168.103.11

呵呵,用3台Linux模拟1台Linux的操作,成功!