一台托管在外的服务器,环境为CentOS5.5,跑LAMP。由于运行环境和成本控制的考虑,需要同时配置PHP4+Mysql和PHP5+Mysql两种环境。起初计划采用两个apache环境,不同的端口来解决。考虑到目前Xen技术上已经成熟,于是考虑在真实主机上安装ngnix和mysql。通过xen安装两套虚拟环境分别配置不同的Php版本,前端使用ngnix代理的方式实现多个虚拟主机合并到同一个80号的目的。
真实主机(主机名:www)上配置Xen
CentOS的Xen还是比较容易设置的
#yum install kernel-xen xen等待安装,安装结束后,修改grub配置,确保主机通过xen内核启动后,重启主机。
主机启动后,首先确认
#uname -r ,内核版本号后面应该跟随一个xen标记,如:2.6.18-194.11.3.el5xen
需要解释的是,由于这台主机的要求网络结构是“一个出口”,即逻辑上虚拟主机的网络拓扑应该是路由方式,而Centos默认Xen的结构是网桥模式,这里需要修改下相应的配置。
/etc/xen/xend-config.sxp文件中
(network-script network-bridge)
(vif-script vif-bridge)
注释掉
(network-script network-route)
(vif-script vif-route)
去掉注释
重启xen服务使设置生效,/etc/init.d/xend restart
配置虚拟主机
相比之前参考的很多文档,Centos的虚拟主机配置相对比较容易,至少没有那么复杂,因为Centos提供了一个比较方便的工具virt-install
我准备给虚拟主机都安装CentOS5.5,为了方便,我将光盘挂装到了 /mnt并设置了ngnix可以直接通过方式访问光盘中的文件,如果您之前通过http或者其他方式网络安装过操作系统,这一步应该很好理解。
正题来了:
virt-install -n CentOSVM1 -r 512 -f /xen/CentOSVM1.img -l –network=network:default -p -s 10 –nographics –vcpus=2
解释:
-n CentOSVM1 设置虚拟服务器名称
-r 512 设置内存大小
-f /xen/CentOSVM1.img 虚拟磁盘文件的保存路径,如果有重名可以使用–force参数强制重建。
-l 安装文件的访问方式,支持nfs http ftp smb等多种方式。如果你对你的带宽比较自信,可以使用网易的镜像站
–network=network:default 网络连接方式,我选择的是route中的default
-p 我的机器不支持硬件虚拟化,-p参数不使用类似技术。现在新的CPU连Atom这样的都支持了,-p可以不加。
-s 10磁盘文件的大小,单位是G
–nographics 不使用图形界面,可以不加此参数,然后加入–vnc看看图形效果
–vcpus=2 虚拟CPU的个数
剩下的就是等待安装的过程,由于之前的设置,网络这块直接DHCP就可以通过了。安装过程中报错找不到安装媒体的大多都是网络设置错误。
整个过程中可以通过ctrl+]回到真实主机,通过在真实主机中使用xm console CentOSVM1回到CentOSVM1的控制台。
OK,可以开始第二台主机的安装了,照旧吧:
virt-install -n CentOSVM2 -r 512 -f /xen/CentOSVM2.img -l –network=network:default -p -s 10 –nographics –vcpus=1
部分操作
xm console <NAME> 连接到虚拟机控制台
xm create <NAME> 根据配置文件创建主机,如果您一直follow之前的操作并且完成了虚拟主机的安装,这条命令实际上等于启动一台虚拟机
xm shutdown <NAME> 关机
xm reboot <NAME> 重启
xm destroy <NAME> 删除主机
xentop 各主机之前的资源占用情况
关于Ubuntu的xen
记得Ubuntu 8.04的时候,通过apt-get install ubuntu-xen-server xen的方式可以搭建起xen的环境,但不知出于什么目的,9.04以后,apt源里面移出了linux-xen内核的安装包。你当然可以下载到类似的替代安装包,但这无疑给安装带来了麻烦。
ubunt desktop和server的安装盘都无法通过网络安装程序,如果需要部署Ubuntu的虚拟机,你需要下载alternate安装盘。