Trên CloudSim người dùng có thể tự tạo ra hiện trang mạng phù hợp với môi trường điện toán đám mây của mình. Hiện nay, người ta sử dung công cụ BRITE để tạo ra hiện trạng mạng, công cụ này được tạo ra bởi trường đại học Boston, bao gồm các thành phần như chỉ ra ở hình 4 và 5.
Hình 4. Các thành phần trong BRITE
Hình 5. Các lớp trong BRITE.
Thực chất, BRITE là một phần mềm người sử dụng chỉ cần chạy phần mềm (với giao diện như hình 6), người dùng cấu hình mạng như số router, số nút mạng, loại mạng, băng thông trên từng nút, …Sau khi cấu hình xong phần mềm này sẽ tạo ra 1 file topology.brite, sử dụng file này để tạo ra hiện trạng mạng trên cloudSim.
Hình 6. Giao diện của BRITE
Trong phần 1, chúng ta có được file hiện trạng mạng, phần này sẽ sử dụng các API của cloudSim để tạo ra hiện trạng mạng trên điện toán đám mây.
Các bước để tạo ra một mô phỏng mạng trên điện toán đám mây:
Từ bước 1 đến bước 7 giống như trong phần VIII.
Bước 8:Tạo ra hiện trạng mạng sử dụng API : buildNetworkTopology của CloudSim để đọc file cấu hình từ BRITE
public static void buildNetworkTopology(String fileName) : Trong đó fileName chứa cấu hình mạng tạo ra bằng công cụ BRITE.
Bước 9: Ánh xạ 1 thực thể của CloudSim vào 1 nút mạng:
NetworkTopology.mapNode(ID của 1 thực thể trong CloudSim , ID của nút mạng trong BRITE);
Trên điện toán đám mây tạo ra 2 trung tâm dữ liệu , mỗi trung tâm dữ liệu có 1 host vật lý và có hai người dùng trên đám mây. Ví dụ này sử dụng hiện trạng mạng có sẵn của CloudSim với file cấu hình topology.brite:
public class ViDu {
/** Tạo mảng để lưu yêu cầu người dùng */ private static List<Cloudlet> cloudletList1; private static List<Cloudlet> cloudletList2; /** Tạo mảng để lưu các máy ảo. */ private static List<Vm> vmlist1; private static List<Vm> vmlist2; public static void main(String[] args) { Log.printLine("Bắt đàu ví dụ..."); try { int num_user = 2; // số người dùng Calendar calendar = Calendar.getInstance(); boolean trace_flag = false; // mean trace events // Khởi tạo thư viện CloudSim CloudSim.init(num_user, calendar, trace_flag); //Tạo trung tâm dữ liệu Datacenter datacenter0 = createDatacenter("Datacenter_0"); Datacenter datacenter1 = createDatacenter("Datacenter_1"); DatacenterBroker broker1 = createBroker(1);//Tạo bộ môi giới int brokerId1 = broker1.getId(); DatacenterBroker broker2 = createBroker(2); int brokerId2 = broker2.getId();
vmlist1 = new ArrayList<Vm>();//Tạo máy ảo vmlist2 = new ArrayList<Vm>(); //Mô tả mấy ảo int vmid = 0; long size = 10000; int mips = 250; int ram = 512; long bw = 1000; int pesNumber = 1; String vmm = "Xen"; Vm vm1 = new Vm(vmid, brokerId1, mips, pesNumber, ram, bw, size, vmm, new CloudletSchedulerTimeShared()); Vm vm2 = new Vm(vmid, brokerId2, mips, pesNumber, ram, bw, size, vmm, new CloudletSchedulerTimeShared()); vmlist1.add(vm1); vmlist2.add(vm2); broker1.submitVmList(vmlist1); broker2.submitVmList(vmlist2); //Tạo tác vụ người dùng cloudletList1 = new ArrayList<Cloudlet>(); cloudletList2 = new ArrayList<Cloudlet>(); int id = 0; long length = 40000; long fileSize = 300; long outputSize = 300; UtilizationModel utilizationModel = new UtilizationModelFull(); Cloudlet cloudlet1 = new Cloudlet(id, length, pesNumber, fileSize, outputSize, utilizationModel, utilizationModel, utilizationModel); cloudlet1.setUserId(brokerId1); Cloudlet cloudlet2 = new Cloudlet(id, length, pesNumber, fileSize, outputSize, utilizationModel, utilizationModel, utilizationModel); cloudlet2.setUserId(brokerId2); cloudletList1.add(cloudlet1); cloudletList2.add(cloudlet2); //Gởi tác vụ lên bộ môi giới broker1.submitCloudletList(cloudletList1); broker2.submitCloudletList(cloudletList2); //Cấu hình mạng NetworkTopology.buildNetworkTopology("topology.brite");//Nạp file cấu hình //Ánh xạ thự thể CloudSim vào BRITE int briteNode=0; NetworkTopology.mapNode(datacenter0.getId(),briteNode); briteNode=2; NetworkTopology.mapNode(datacenter1.getId(),briteNode);
briteNode=3; NetworkTopology.mapNode(broker1.getId(),briteNode); briteNode=4; NetworkTopology.mapNode(broker2.getId(),briteNode); CloudSim.startSimulation();//Bắt đầu mô phỏng //In kết quả mô phỏng List<Cloudlet> newList1 = broker1.getCloudletReceivedList(); List<Cloudlet> newList2 = broker2.getCloudletReceivedList(); CloudSim.stopSimulation(); } catch (Exception e) { e.printStackTrace(); Log.printLine("Không thể mô phỏng"); } } private static Datacenter createDatacenter(String name){ List<Host> hostList = new ArrayList<Host>(); List<Pe> peList = new ArrayList<Pe>(); int mips = 1000; peList.add(new Pe(0, new PeProvisionerSimple(mips))); int hostId=0; int ram = 2048; //host memory (MB) long storage = 1000000; //host storage int bw = 10000; hostList.add( new Host( hostId, new RamProvisionerSimple(ram), new BwProvisionerSimple(bw), storage, peList, new VmSchedulerSpaceShared(peList) ) ); }
|
» Tin mới nhất:
» Các tin khác: