CloudSim安装与测试用例运行
0、CloudSim简介
- CloudSim是由澳大利亚墨尔本大学的网格实验室和Gridbus项目共同推出的开源云计算仿真平台;
- CloudSim是基于Java语言开发的,可实现跨平台运行;
- CloudSim有助于加快面向云计算平台的算法设计与测试速度,可降低开发的成本;
- 用户可以通过CloudSim提供的众多核心类来进行大规模的云计算基础设施的建模与仿真。
1、准备工作
一台Windows操作系统的电脑
Java配置
Maven下载与配置
工具下载(下面两个都可以,二选一即可)
- Eclipse
- IDEA(推荐)
CloudSim下载(本次实验使用CloudSim 5.0)
注:以上所有软件的安装包均可在百度网盘中下载
链接:https://pan.baidu.com/s/12JT4gDKbOLvHIeqyGbgE6A
提取码:3fd5
1.1 Java配置
首先需要再本地配置好Java的环境,这里不过多赘述,可以参考下面的教程
注:本文中使用的是jdk8的版本
1.1.1 安装Java8
双击下载好百度网盘中的文件,选择你的安装路径即可
1.1.2 配置环境变量
在“计算机”图标上点击鼠标右键,点击“属性”命令,单击高级系统设置
注意 配置不要照抄,要按照你自己本地的文件夹路径来
在“系统变量”中找到Path变量,点击“编辑”,添加一个 你所安装的jdk/bin目录
1.2.3 确认环境变量配置是否正确
安装完成后在本地cmd中输入java -version
能够显示下面的内容即为安装成功
1.2 Maven下载与配置
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具 软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较 高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方 法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
1.2.1 下载
打开Maven官网下载界面,下载bin文件,该文件为编译后的Maven,无需在本地进行编译直接使用。
下载完成后,保存到本地的一个可靠的路径。
然后在本地的环境变量中添加一个MAVEN_HOME
同时在系统变量的Path
中添加一行:
1.2.2 配置本地仓库
注意下面开始修改settings.xml
文件的时候,切记不要将你的内容添加在注释当中,xml是一种类似于html的标记语言,不要将其中的结尾标记给错误的删除了。
在Maven安装的同级目录下创建maven-repository文件夹,用作maven的本地库。
在路径apache-maven-3.9.5/conf文件夹下找到settings.xml
文件。
在该文件中找到节点localRepository,在注释外添加。此处的路径需要修改为你自己创建的路径!!!切勿照抄复制
1 | <localRepository>你自己创建的maven仓库路径</localRepository> |
localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:Users用户名.m2。
当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。
此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。
1.2.3 配置镜像
- 在settings.xml配置文件中找到mirrors节点(XML文件的标签对要注意!!)
- 添加如下配置(注意要添加在和两个标签之间,其它配置同理)
1 | <!-- 阿里云仓库 --> |
因为国外的服务器下载jar包很慢所以我们改为阿里云服务器
虽然mirrors可以配置多个子节点,但是它只会使用其中的一个节点,即默认情况下配置多个mirror的情况下,只有第一个生效,只有当前一个mirror无法连接的时候,才会去找后一个;而我们想要的效果是:当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载,但是maven不会这样做。
1.2.4 配置JDK
- 在settings.xml配置文件中找到profiles节点
- 添加如下配置
1 | <!-- java版本 --> |
配置完成,win+R运行CMD,输入mvn help:system 命令进行测试,配置成功则本地仓库(maven-repository)中会出现一些文件。
输出以下内容即为Maven安装成功:
首次执行 mvn help:system 命令,Maven相关工具自动帮我们到Maven中央仓库下载缺省的或者Maven中央仓库更新的各种配置文件和类库(jar包)到Maven本地仓库中。
下载完各种文件后, mvn help:system 命令会打印出所有的Java系统属性和环境变量,这些信息对我们日常的编程工作很有帮助。
1.3 集成开发环境安装
这里推荐使用IDEA,后续在工作中也多数会使用IDEA
安装教程参考:https://blog.csdn.net/rbx508780/article/details/126647849
注:可以直接从官网下载专业版IDEA,利用校园邮箱免费激活。
1.4 CloudSim下载
去github中下载CloudSim https://github.com/Cloudslab/cloudsim/releases
本实验中使用的是CloudSim5.0
下载后解压缩,然后在IDEA中打开项目,Maven会自动根据pom.xml下载一些配置文件,等待下载完成后即可。
点击open project,选择解压缩的CloudSim文件夹
在IDEA的设置中,设置之前的Maven仓库
然后找到example,右击运行,出现如下效果即为安装成功。
CloudSim介绍
CloudSim仿真的核心类
CloudSim仿真的核心类如下
类 | 说明 |
---|---|
DataCenter | 数据中心,提供虚拟化网络资源 |
DataCenterBroker | 代理,用于提交虚拟机的任务和云任务列表 |
Host | 主机,扩展虚拟机的参数分配策略,一台Host可以对应多台VM |
VM | 虚拟机类,运行在Host上,与其他虚拟机共享资源 |
Cloudlet | 云任务类,构建云环境任务 |
CloudSim仿真流程
- 初始化CloudSim
- 创建数据中心DataCenter
- 创建用户代理Broker
- 创建虚拟机VM,添加至Broker
- 创建应用Cloudlet,添加至Broker
- 开启仿真
- 结束模拟仿真
- 打印输出
CloudSim应用
CloudSim5.0安装包中提供了8个示例代码,后续的实验任务可以参考其中的部分。
CloudSimExample1
:展示了如何通过一台主机创建一个云数据中心并在其上运行一个Cloudlet。
CloudSimExample2
:展示了如何创建一个包含一个主机的数据中心,并在其上运行两个云任务。这些云任务在具有相同MIPS需求的虚拟机中运行。这些云任务将花费相同的时间来完成执行。
CloudSimExample3
:展示了如何创建一个包含两个主机的数据中心,并在其上运行两个Cloudlet云任务。这些云任务在具有不同MIPS需求的虚拟机中运行。云任务将会根据所请求的虚拟机性能,花费不同的时间来完成执行。
CloudSimExample4
:展示了如何创建两个包含一个主机的数据中心,并在它们上运行两个云任务。
CloudSimExample5
:展示了如何如何创建两个数据中心,每个数据中心包含一个主机,并在它们上运行两个用户的云任务。
CloudSimExample6
:展示了如何创建可伸缩的实例。
CloudSimExample7
:展示了如何暂停和恢复模拟,以及动态地创建模拟实例(在这个例子中是一个 DatacenterBroker)。
CloudSimExample8
:展示了。如何在运行时使用一个全局管理实体(GlobalBroker)创建模拟实体(在这个例子中是一个 DatacenterBroker)。
仿真步骤
进行CloudSim仿真前的准备工作包括:首先初始化CloudSim的工具包,创建云数据中心DataCenter和代理DataCenterBroker;然后创建虚拟机列表VmList,将虚拟机列表提交到云数据中心和代理;接着创建云任务列表CloudletList;最后将云任务列表提交给云数据中心和代理。
在进行CloudSim仿真时,首先需要对CloudSim的核心类参数进行初始化,主要有4个核心类,分别是主机类Host、云数据中心类DataCenter、虚拟机类VirtualMachine和云任务列表类Cloudlet。
Host参数包括ID、CPU、内存、带宽、外存等,Host参数的定义及初始化代码如下:
1 | int hostId = 0; |
DataCenter参数包括主机架构、操作系统、虚拟机监视器种类、时区、CPU的使用费用、内存的使用费用、外存的使用费用、带宽的使用费用等。DataCenter参数的定义及初始化代码如下:
1 | String arch = "x86"; //system architecture |
VirtualMachine参数包括ID、MIPS、镜像大小、内存大小、带宽、CPU数、虚拟机命名等。VirtualMachine参数的定义及初始化代码如下:
1 | //VirtualMachine properties |
Cloudlet参数包括编号、执行时的应用长度、用到的CPU数量、提交应用前的文件大小、应用执行完成后的文件大小、CPU和内存的使用模型/策略、网络带宽的使用模型/策略等。Cloudlet参数的定义及初始化代码如下:
1 | //Cloudlet properties |
实验任务
现在需要仿真:在2个云数据中心上分别各配置2台虚拟机,每台虚拟机运行1个用户的4个Cloudlet,总计4个用户16个Cloudlet,请进行实验,并给出实验结果截图附在实验报告中。