为云测试环境创建镜像
这一部分我们将介绍如何创建前面列出的三种镜像,包含必要的步骤和相关脚本。你可以从任意CentOS 5.2机器创建镜像,在开始之前,我们需要一个预封装的CentOS 5.2镜像。
创建Tomcat镜像
预封装的CentOS镜像已经挂载到本地目录,第一步是创建一个挂载镜像的目录,打开命令提示符窗口,执行下面的命令:
# 创建目录 mkdir /mnt/Mount接下来将预封装的CentOS 5.2镜像挂载到创建的目录上。
# 挂载镜像 mount -o loop /mnt/Mount # 挂载Proc mount -t proc none /mnt/Mount/proc/将Tomcat安装到挂载目录中(例如,将Tomcat文件夹放入/mnt/Mount/home),为了确保Tomcat随系统自动启动,请执行以下步骤:
1、在/etc/rc.local文件(/mnt/Mount/etc/rc.local)中包含Java_HOME和PATH变量;
2、在/etc/rc.local文件中添加Tomcat的启动脚本;
rc.local文件最终看起来如下:
#!/bin/sh # 本脚本将在所有其他init脚本执行 之后 执行 touch /var/lock/subsys/local export JAVA_HOME=/home/jdk1.6.0_13 export PATH=/home/jdk1.6.0_13/bin:$PATH:$HOME/bin /home/apache-Tomcat-6.0.18/bin/startup.sh我们用于测试的Web应用程序是JPetStore,将jpetstore.war放入/webapps/文件夹,现在镜像包含所有必要的软件和脚本了。
接下来卸载镜像,切换到命令提示符窗口,执行下面的命令:
# 卸载proc umount /mnt/Mount/proc # 卸载镜像 umount -d /mnt/Mount现在得到的镜像包含Tomcat 6和Web应用程序,我们可以将它上传到云中了,关于上传和运行镜像的说明,请参考Eucalyptus镜像管理文档。
创建JMeter镜像
创建JMeter镜像的步骤和前面创建Tomcat镜像的步骤一样,将预封装的CentOS 5.2镜像挂载到指定文件夹:
# 挂载镜像 mount -o loop /mnt/Mount # 挂载Proc mount -t proc none /mnt/Mount/proc/将JMeter 2.3.2文件移动到/mnt/Mount/home文件夹下。JMeter主服务器安装在一台物理Linux机器上,JMeter实例作为从服务器。首先,将主服务器添加到从服务器的“已知主机”列表中;然后为主服务器生成一个无密码密钥,并将其添加到从镜像,将主服务器上产生的id_dsa放在从镜像的指定文件夹中(如/mnt/Mount/home)。每当从实例启动时,在已知主机列表中就会有主服务器的IP。
当JMeter从实例启动时,主服务器的jmeter.properties文件需要更新它的IP地址,为了自动添加IP地址,我们使用了一个Shell脚本,在挂载文件夹中创建一个脚本文件(/mnt/Mount/home):
#---------- 找到slave的IP地址 ----- OS=`uname`IP="" # store IP
JMETER_Prop_File=""
Master=""
KeyPath="/id_dsa" # Master's Passphrase less key.
case $OS in
Linux) IP=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`;;
FreeBSD|OpenBSD) IP=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'` ;;
SunOS) IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2} '` ;;
*) IP="Unknown";;
esac
#---------------- 将slave的IP写入master的属性文件 -----
ssh -i $KeyPath root@$Master "sed -e 's/remote_hosts=/remote_hosts=$IP,/1' $JMETER_Prop_File/jmeter.properties>$JMETER_Prop_File/test.chk"
ssh -i $KeyPath root@$Master "cp $JMETER_Prop_File/test.chk $JMETER_Prop_File/jmeter.properties"
ssh -i $KeyPath root@$Master "rm -rf $JMETER_Prop_File/test.chk"
将上面的代码保存为.sh文件,在rc.local文件中添加实例启动时需要自动启动的服务路径。
#!/bin/sh # 本脚本将会在其他init脚本之后执行 touch /var/lock/subsys/local chmod 600 //id_dsa / export JAVA_HOME=//java export PATH=//java/bin:$PATH:$HOME/bin //jmeter2.3.2/bin/jmeter-server service vsftpd start接下来卸载掉镜像,方法和前面一样。