CC (Neha) PDF
CC (Neha) PDF
Introduction
Platform as a Service (PaaS) oCloud computing service which provides a computing platform and a
solution stack as a service.
o Consumer creates the software using tools and/or libraries from the provider. o
Provider provides the networks, servers, storage, etc.
o Google App Engine was first released as a beta version in April 2008.
o It is a is a Platform as a Service (PaaS) cloud computing platform for developing and hosting web
applications in Google-managed data centers.
o Google‘s App Engine opens Google‘s production to any person in the world at no charge.
o Google App Engine is software that facilitates the user to run his web applications on Google
infrastructure.
o It is more reliable because failure of any server will not affect either the performance of the end user or
the service of the Google.
o It virtualizes applications across multiple servers and data centers.
Other cloud-based platforms include offerings such as Amazon Web Services
and Microsoft's Azure Services Platform.
Introduction of Google App Engine
• Google App Engine lets you run your web applications on Google's infrastructure. App Engine
applications are easy to build, easy to maintain,and easy to scale as your traffic and data storage
needs grow. With App Engine, there are no servers to maintain: You just upload your application,
and it's ready to serve your users.
• You can serve your app from your own domain name (such as https://www.example.com/)using
Google Apps. Or, you can serve your app using a free name on the appspot.com domain. You can
share your application with the world, or limit access to members of your organization.
• Google App Engine supports apps written in several programming languages. With App Engine's
Java runtime environment, you can build your app using standard Java technologies, including the
JVM, Java servlets, and the Java programming language—or any other language using a JVM-
based interpreter or compiler, such as JavaScript or Ruby. App Engine also features a dedicated
Python runtime environment, which includes a fast Python interpreter and the Python standard
library. The Java and Python runtime environments are built to ensure that your application runs
quickly, securely, and without interference from other apps on the system.
• With App Engine, you only pay for what you use. There are no set-up costs and no recurring fees.
The resources your application uses, such as storage and bandwidth, are measured by the gigabyte,
and billed at competitive rates. You control the maximum amounts of resources your app can
consume, so it always stays within your budget. App Engine costs nothing to get started. All
applications can use up to 500 MB of storage and enough CPU and bandwidth to support an
efficient app serving around 5 million page views a month, absolutely free. When you enable
billing for your application, your free limits are raised, and you only pay for resources you use
above the free levels.
• Architecture of Google App Engine
• Google App Engine makes it easy to build an application that runs reliably, even under heavy load and
with large amounts of data. App Engine includes the following features:
• Persistent storage with queries, sorting and transactions
• Automatic scaling and load balancing
• APIs for authenticating users and sending email using Google Accounts
• Task queues for performing work outside of the scope of a web request
• Scheduled tasks for triggering events at specified times and regular intervals
• Dynamic web serving, with full support for common web technologies
You can develop your application for the Java runtime environment using common Java web
development tools and API standards. Your app interacts with the environment using the Java Servlets
standard, and can use common web application technologies such as Java Server Pages
• The Java runtime environment uses Java 6. The App Engine Java SDK supports developing apps using
either Java 5 or 6. The environment includes the Java SE Runtime Environment (JRE) 6 platform and
libraries. The restrictions of the sandbox environment are implemented in the JVM. An app can use any
JVM byte code or library feature, as long as it does not exceed the sandbox restrictions. For instance,
byte code that attempts to open a socket or write to a file will throw a runtime exception.
• Your app accesses most App Engine services using Java standard APIs. For the
App Engine data store, the Java SDK includes implementations of the Java Data Objects (JDO) and Java
Persistence API (JPA) interfaces. Your app can use the JavaMail API to send email messages with the
App Engine Mail service. The java.net HTTP APIs accesses the App Engine URL fetch service.
• App Engine also includes low-level APIs for its services to implement additional adapters, or to use
directly from the application. See the documentation for the data store, memcache, URL fetch, mail,
images and Google Accounts APIs. Typically, Java developers use the Java programming language and
APIs to implement web applications for the JVM. With the use of JVM-compatible compilers or
interpreters, you can also use other languages to develop web applications, such as JavaScript, Ruby.
Workflow of Google App Engine
Step
Step
14 : Create requirements.txt
Step 15 : Move to Cloud Shell Environment to run the application Syntax : gcloud app deploy
Step 16: Deployment of Application
Thus the Google App Engine is installed successfully and a web application to display hello
world using python is developed and deployed in the GAE and used GAE Launcher to launch the web
applications.
Ex No. 3 a Simulate a cloud scenario using CloudSim
Introduction:
CloudSim
A Framework for modeling and simulation of Cloud Computing
Infrastructures and services
Originally built at the Cloud Computing Distributed Systems (CLOUDS)
Laboratory, The University of Melbourne, Australia
It is completely written in JAVA
Main Features of CloudSiM
o Modeling and simulation
o Data centre network topologies and message-passing applications
o Dynamic insertion of simulation elements
o Stop and resume of simulation
o Policies for allocation of hosts and virtual machines
Cloudsim – Essentials
JDK 1.6 or above http://tinyurl.com/JNU-JAVA
Eclipse 4.2 or above http://tinyurl.com/JNU-Eclipse
Alternatively NetBeanshttps://netbeans.org/downloads
Up & Running with cloudsim guide: https://goo.gl/TPL7Zh
Cloudsim-Directory structure
cloudsim/ -- top level CloudSim directory
docs/ -- CloudSim API Documentation
examples/ -- CloudSim examples
jars/ -- CloudSim jar archives
sources/ -- CloudSim source code
Cloudsim - Layered Architecture
Cloudsim - Component model classes
o CloudInformationService.java
o Datacenter.java,Host.java,Pe.java
o Vm.java,Cloudlet.java
o DatacenterBroker.java
o Storage.java,HarddriveStorage.java, SanStorage.java
Step 1: Link to download Eclipse and download Eclipse for Windows 64bit into your Local
machine
https://www.eclipse.org/downloads/packages/release/kepler/sr1/eclipse-ide-
java-developers
Step 2: Download cloudsim-3.0.3 from git hub repository in your local machine
https://github.com/Cloudslab/cloudsim/releases/tag/cloudsim-3.0.3
Step 3: Download commons-maths3-3.6.1 from git hub repository in your local machine
https://commons.apache.org/proper/commons-math/download_math.cgi
Step 4: Downloaded Eclipse, cloudsim-code-master and Apache Commons Math 3.6.1 in
your local machine and extract cloudsim-3.0.3 and Apache Commons Math 3.6.1
Step 5: First of all, navigate to the folder where you have unzipped the eclipse folder and
open Eclipse.exe
Step 6: Now within Eclipse window navigate the menu: File -> New -> Project, to open the
new project wizard
Step 7: A ‗New Project‗ wizard should open. There are a number of options displayed and
you have to find & select the ‗Java Project‗ option, once done click ‘Next‗
Step 8: Now a detailed new project window will open, here you will provide the project name
and the path of CloudSim project source code, which will be done as follows:
Step 9: Unselect the ‘Use default location’ option and then click on ‘Browse’ to open the path
where you have unzipped the Cloudsim project and finally click Next to set project settings.
Step 10: Make sure you navigate the path till you can see the bin, docs, examplesetc folder in
the navigation plane.
Step 11: Once done finally, click ‗Next‘ to go to the next step i.e. setting up of project
settings
Step 12: Now open ‘Libraries’ tab and if you do not find commons-math3-3.x.jar (here ‘x’
means the minor version release of the library which could be 2 or greater) in the list then
simply click on ‗Add External Jar’ (commons-math3-3.x.jar will be included in the project
from this step)
Step 13: Once you have clicked on ‗Add External JAR’s‗ Open the path where you have
unzipped the commons-math binaries and select ‗Commons-math3-3.x.jar‘ and click on open.
Step 14: Ensure external jar that you opened in the previous step is displayed in the list and
then click on ‗Finish‘ (your system may take 2-3 minutes to configure the project)
Step 15: Once the project is configured you can open the ‗Project Explorer‗and start exploring
the Cloudsim project. Also for the first time eclipse automatically start building the workspace
for newly configured Cloudsim project, which may take some time depending on the
configuration of the computer system.
Following is the final screen which you will see after Cloudsim is configured.
Step 16: Now just to check you within the ‗Project Explorer‗, you should navigate to the
‗examples‗ folder, then expand the package ‗org.cloudbus.cloudsim.examples‗ and double
click to open the ‗CloudsimExample1.java‗
Step 17: Now navigate to the Eclipse menu ‗Run ->Run‗ or directly use a keyboard
shortcut ‘Ctrl + F11’ to execute the ‗CloudsimExample1.java‗.
Step 18: If it is successfully executed it should be displaying the following type to output in
the console window of the Eclipse IDE.
Conclusion:
Step 1: Link to download Eclipse and download Eclipse for Windows 64bit into your Local
machine
https://www.eclipse.org/downloads/packages/release/kepler/sr1/eclipse-ide-
java-developers
Step 2: Download scheduling source code cloudsim-code-master from git hub repository in
your local machine
https://github.com/shiro873/Cloudsim-Code
Step 3: Download commons-maths3-3.6.1 from git hub repository in your local machine
https://commons.apache.org/proper/commons-math/download_math.cgi
Step 4: Downloaded Eclipse, cloudsim-3.0.3 and Apache Commons Math 3.6.1 in your local
machine and extract cloudsim-3.0.3 and Apache Commons Math 3.6.1
Step 5: First of all, navigate to the folder where you have unzipped the eclipse folder and
open Eclipse.exe
Step 6: Now within Eclipse window navigate the menu: File -> New -> Project, to open the
new project wizard
Step 7: A ‗New Project‗ wizard should open. There are a number of options displayed and
you have to find & select the ‗Java Project‗ option, once done click ‘Next‗
Step 8: Now a detailed new project window will open, here you will provide the project name
and the path of CloudSim-master-code project source code, which will be done as follows:
Step 10: Make sure you navigate the path till you can see the bin, docs, examplesetc folder in
the navigation plane.
Step 11: Once done finally, click ‗Next‘ to go to the next step i.e. setting up of project
settings
Step 12: Once the project is configured you can open the ‗Project Explorer‗ and start
exploring the Cloudsim project. Also for the first time eclipse automatically start building the
workspace for newly configured Cloudsim project, which may take some time depending on
the configuration of the computer system.
Following is the final screen which you will see after Cloudsim is configured.
Step 13: Now just to check you within the ‗Project Explorer‗, you should navigate to the
‗src‗ folder, then expand the package ‗default package‗ and double click to open the
‗RoundRobin.java‗.
Step 14: Now navigate to the Eclipse menu ‗Run ->Run‗ or directly use a keyboard shortcut
‘Ctrl + F11’ to execute the ‘RoundRobin.java‘. If it is successfully executed it should be
displaying the following type to output in the console window of the Eclipse IDE.
Conclusion:
Aim:
To procedure File Transfer in Client & Server using virtual machine
Steps:
Steps to perform File Transfer in Client & Server using virtual machine.
Source Code:
FtpClient.java
import java.io.*;
import java.net.*;
import java.util.*;
public class FtpClient{
public static void main(String args[])throws IOException{
try {
int number;
Socket s=new Socket("127.0.0.1",10087);
Scanner sc=new Scanner(System.in);
System.out.println("Enter the file name:");
String fn=sc.next();
DataOutputStream dos=new DataOutputStream(s.getOutputStream());
dos.writeUTF(fn);
DataInputStream dis=new DataInputStream(s.getInputStream());
String input=(String)dis.readUTF();
FileInputStream fis=new FileInputStream(input);
System.out.println("Even Numbers in the " +fn+" are:");
int i=0;
while((i=fis.read())!=-1)
{
System.out.println((char)i);
}
s.close();
}
catch(Exception e){
System.out.println("Port not available "+e);
}
}
}
FTPServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class FTPServer{
public static void main(String args[])throws IOException{
try{
int num;
Scanner sc=new Scanner(System.in);
ServerSocket ss=new ServerSocket(10087);
Socket s=ss.accept(); System.out.println("Waiting. ");
DataInputStream dis=new DataInputStream(s.getInputStream());
String input=(String)dis.readUTF();
DataOutputStream dos=new DataOutputStream(s.getOutputStream());
FileInputStream fis = new FileInputStream("demo.txt");
FileOutputStream fos = new FileOutputStream(input);
while((num=fis.read())!= -1) {
if(num%2==0) {
fos.write(num);
}
}
dos.writeUTF(input);
System.out.println("File is sent to client");
ss.close();
s.close();
}
catch(Exception e) {
System.out.println("Port not available"+e);
}
}
}
demo.txt
1
2
3
4
5
6
7
8
9
Output:
Conclusion:
Thus the program to the File transfer operation using virtual machine was
successfully executed and verified.
Ex No. 5 Find a procedure to launch virtual machine using Openstack
Introduction:
OpenStack was introduced by Rackspace and NASA in July 2010.
OpenStack is an Infrastructure as a Service known as Cloud Operating System, that
take resources such as Compute, Storage, Network and Virtualization Technologies and
control those resources at a data center level
The project is building an open source community - to share resources and technologies
with the goal of creating a massively scalable and secure cloud infrastructure.
The software is open source and limited to just open source APIs such as Amazon.
OpenStack architecture
It is modular architecture
Designed to easily scale out
Based on (growing) set of core services
The major components are
1. Keystone
2. Nova
3. Glance
4. Swift
5. Quantum
6. Cinder
KEYSTONE :
o Identity service
o Common authorization framework
o Manage users, tenants and roles
o Pluggable backends (SQL,PAM,LDAP, IDM etc)
NOVA
o Core compute service comprised of
Compute Nodes – hypervisors that run virtual machines
Supports multiple hypervisors KVM,Xen,LXC,Hyper-V
and ESX
Distributed controllers that handle scheduling, API calls, etc
Native OpenStack API and Amazon EC2 compatible
API
GLANCE
o Image service
o Stores and retrieves disk images (Virtual machine templates)
o Supports RAW,QCOW,VHD,ISO,OVF & AMI/AKI
o Backend Storage : File System, Swift, Gluster, Amazon S3
SWIFT
o Object Storage service
o Modeled after Amazon‘s Service
o Provides simple service for storing and retrieving arbitrary data
o Native API and S3 compatible API
NEUTRON
o Network service
o Provides framework for Software Defined Network
o Plugin architecture
Allows intergration of hardware and software based network
solutions
Open vSwitch, Cisco UCS,Standard Linux
Bridge,NiCira NVP
CINDER
o Block Storage (Volume) service
o Provides block storage for Virtual machines(persistent disks)
o Similar to Amazon EBS service
o Plugin architecture for vendor extensions
NetApp driver for cinder
HORIZON
o Dashboard
o Provides simple self service UI for end-users
o Basic cloud administrator functions
Define users, tenants and quotas
No infrastructure management
HEAT OpenStack Orchestration
o Provides template driven cloud application orchestration
o Modeled after AWS Cloud Formation
o Targeted to provide advanced functionality such as high availability
and auto scaling
o Introduced by Redhat
CEILOMETER – OpenStack Monitoring and Metering
o Goal: To Provide a single infrastructure to collect measurements from
an entire OpenStack Infrastructure; Eliminate need for multiple agents
attaching to multiple OpenStack Projects
o Primary targets metering and monitoring: Provided extensibility
Step 2:
Download CentOS 7 OVA(Open Virtual Appliance) from
o Link : https://linuxvmimages.com/images/centos-7
Import CentOS 7 OVA(Open Virtual Appliance) into Oracle Virtual Box
Step 3:Login into CentOS 7
Login Details
o User name : Neha
o Password : Neha@2001
To change into root user in Terminal
#sudosu–
#yum update –y
Step 10:Install OpenStack Release for CentOS
#packstak --allinone
#cat keystonerc_admin
Step 13: Click the URL and enter the user name and password to start OpenStack
Note: If you don't plan to keep the resources you create in this tutorial, create a new project
instead of selecting an existing project. After you finish, you can delete the project, removing all
resources associated with the project and tutorial.
If you have already installed and initialized the SDK to a different project, set the gcloud project
to the App Engine project ID you're using for Firenotes. See Managing Cloud SDK
Configurations for specific commands to update a project with the gcloud tool.
Alternatively, you can download the sample as a zip file and extract it.
Navigate to the directory that contains the sample code:
cd python-docs-samples/appengine/standard/firebase/firenotes
If you have an existing Firebase project that you'd like to use, select that project from the
console.
b. From the project overview page, click Add Firebase to your web app. If your project already
has an app, select Add App from the project overview page.
c. Use the Initialize Firebase section of your project's customized code snippet to fill out the
following section of the frontend/main.js file:
// [START gae_python_firenotes_config]
// Obtain the following from the "Add Firebase to your web app" dialogue
// Initialize Firebase
var config = {
apiKey: "<API_KEY>",
authDomain: "<PROJECT_ID>.firebaseapp.com",
databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
projectId: "<PROJECT_ID>",
storageBucket: "<BUCKET>.appspot.com",
messagingSenderId: "<MESSAGING_SENDER_ID>"
};
Edit the backend/app.yaml file and enter your Firebase project ID in the environment
variables:
runtime: python27
api_version: 1
threadsafe: true
service: backend
handlers:
- url: /.*
script: main.app
env_variables:
GAE_USE_SOCKETS_HTTPLIB : 'true'
FIREBASE_PROJECT_ID: "1:16911437084:web:60b2f616ad42fde641fed9"
In the frontend/main.js file, configure the FirebaseUI login widget by selecting which
providers you want to offer your users.
// [START gae_python_firebase_login]
// Firebase log-in widget
function configureFirebaseLoginWidget() {
var uiConfig = {
'signInSuccessUrl': '/',
'signInOptions': [
// Leave the lines as is for the providers you want to offer your users.
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.TwitterAuthProvider.PROVIDER_ID,
firebase.auth.GithubAuthProvider.PROVIDER_ID,
firebase.auth.EmailAuthProvider.PROVIDER_ID
],
// Terms of service url
'tosUrl': '<your-tos-url>',
};
Enable the providers you have chosen to keep in the Firebase console by clicking Authentication
> Sign-in method. Then, under Sign-in providers, hover the cursor over a provider and click the
pencil icon.
Toggle the Enable button and, for third-party identity providers, enter the provider ID and
secret from the provider's developer site. The Firebase docs give specific instructions in the
"Before you begin" sections of theFacebook, Twitter, and GitHub guides. After enabling a
provider, click Save.
Conclusion:
Thus we have retrieve, verify, and store user credentials using Firebase Authentication.