CCS335 - Cloud Computing Lab Manual
CCS335 - Cloud Computing Lab Manual
Aim:
To Install Virtualbox / VMware Workstation with different flavours of linux or windows OS on top of
windows7 or 8.
PROCEDURE:
6. Then installation was completed..the show virtual box icon on desktop screen….
Steps to import Open nebula sandbox:
1. Open Virtual box
2. File import Appliance
3. Browse OpenNebula-Sandbox-5.0.ova file
4. Then go to setting, select Usb and choose USB 1.1
5. Then Start the Open Nebula
6. Login using username: root, password:opennebula
Steps to create Virtual Machine through opennebula
1. Open Browser, type localhost:9869
2. Login using username: oneadmin, password: opennebula
3. Click on instances, select VMs then follow the steps to create Virtaul machine
a. Expand the + symbol
b. Select user oneadmin
c. Then enter the VM name,no.of instance, cpu.
d. Then click on create button.
e. Repeat the steps the C,D for creating more than one VMs.
APPLICATIONS:
There are various applications of cloud computing in today’s network world. Many search engines
and social websites are using the concept of cloud computing like www.amazon.com, hotmail.com,
facebook.com, linkedln.com etc. the advantages of cloud computing in context to scalability is like reduced
risk , low cost testing ,ability to segment the customer base and auto-scaling based on application load.
RESULT:
Thus the procedure to run the virtual machine of different configuration.
EX.NO:2
Install a C compiler in the virtual machine created using virtual box and
execute Simple Programs
Aim:
To Install a C compiler in the virtual machine created using virtual box and execute Simple Programs`
PROCEDURE:
APPLICATIONS:
Simply running all programs in grid environment.
RESULT:
Aim:
To Install Google App Engine. Create hello world app and other simple web applications using
python/java.
Procedure:
3. Hello World
Review the generated project directory.
File : appengine-web.xml
</appengine-web-app>
Copy
4. Run it local
Right click on the project and run as “Web Application“.
Eclipse console :
//...
INFO: The server is running at http://localhost:8888/
30 Mac 2012 11:13:01 PM com.google.appengine.tools.development.DevAppServerImpl start INFO:
The admin console is running at http://localhost:8888/_ah/admin
Copy
Access URL http://localhost:8888/, see output
and also the hello world servlet – http://localhost:8888/helloworld
In this demonstration, I created an application ID, named “mkyong123”, and put it in appengine- web.xml.
File : appengine-web.xml
</appengine-web-app>
Copy
To deploy, see following steps:
Figure 1.2 – Sign in with your Google account and click on the Deploy button.
Figure 1.3 – If everything is fine, the hello world web application will be deployed to this URL –
http://mkyong123.appspot.com/
Result:
Aim:
To Simulate a cloud scenario using CloudSim and run a scheduling algorithm that is not
present in CloudSim.
Steps:
How to use CloudSim in Eclipse
CloudSim is written in Java. The knowledge you need to use CloudSim is basic Java programming and
some basics about cloud computing. Knowledge of programming IDEs such as Eclipse or NetBeans is
also helpful. It is a library and, hence, CloudSim does not have to be installed. Normally, you can
unpack the downloaded package in any directory, add it to the Java classpath and it is ready to be used.
Please verify whether Java is available on your system.
CloudSimExample1 finished!
RESULT:
Thus simulated a cloud scenario using CloudSim and run a scheduling algorithm that is not present in
CloudSim.
EX.NO:5 Use GAE launcher to launch the web applications.
Aim:
To Use GAE launcher to launch the web applications.
Steps:
Now you need to create a simple application. We could use the “+”option to have the
launcher make us an application – but instead we will do it by hand to get a better
sense of what is going on.
Make a folder for your Google App Engine applications. I am going to make
the Folder on my Desktop called “apps” – the path to this folder is:
Paste http://localhost:8080 into your browser and you should see your application as
follows:
Just for fun, edit the index.pytochange the name “Chuck” to you row
You can watch the internal log of the actions that the web server is performing when you
are interacting with your application in the browser. Select your application in the Launcher
and press the Logs button to bring up a log window:
Each time you press Refresh in your browser–you can see it retrieving the output
with a GET request.
Dealing With Errors
With two files to edit, there are two general categories of errors that you may encounter.
If youmake a mistake onthe app.yamlfile, the App Engine willnotstart and your launcher will show
a yellow icon near your application:
To get more detail on what is going wrong, take a look at the log for the application:
In this instance – the mistake is mis-‐indenting the last line in the app.yaml (line 8).
Ifyoumake asyntaxerror in the index.pyfile, a Pythontrace backerrorwillappear in yourbrowser.
The error you need to see is likely to be the last few lines of the output – in this case I made a
Python syntax error on line one of our one-•‐line application.
Reference: http://en.wikipedia.org/wiki/Stack_trace
When you make a mistake in the app.yaml file – you must the fix the mistake and attempt
to start the application again.
If you make a mistake in a file like index.py, you can simply fix the file and press refresh
in your browser – there is no need to restart the server.
Result:
Aim:
To Find a procedure to transfer the files from one virtual machine
to another virtual machine.
Steps:
1. You can copy few (or more) lines with copy & paste mechanism.
For this you need to share clipboard between host OS and guest OS, installing Guest
Addition on both the virtual machines (probably setting bidirectional and restarting
them). You copy from guest OS in the clipboard that is shared with the host OS.
Then you paste from the host OS to the second guest OS.
2. You can enable drag and drop too with the same method (Click on the
machine, settings, general, advanced, drag and drop: set to bidirectional )
3. You can have common Shared Folders on both virtual machines and use one of the directory
shared as buffer to copy.
Installing Guest Additions you have the possibility to set Shared Folders too. As you put
a file in a shared folder from host OS or from guest OS, is immediately visible to the
other. (Keep in mind that can arise some problems for date/time of the files when there
are different clock settings on the different virtual machines).
If you use the same folder shared on more machines you can exchange files directly copying
them in this folder.
4. You can use usual method to copy files between 2 different computer with client-server
application. (e.g. scp with sshd active for linux, winscp... you can get some info about
SSH servers e.g. here)
You need an active server (sshd) on the receiving machine and a client on the sending
machine. Of course you need to have the authorization setted (via password or, better, via an
automatic authentication method).
Note: many Linux/Ubuntu distribution install sshd by default: you can see if it is running
with pgrep sshd from a shell. You can install with sudo apt-get install openssh-server.
5. You can mount part of the file system of a virtual machine via NFS or SSHFS on the other,
or you can share file and directory with Samba. You may find interesting the article Sharing
files between guest and host without VirtualBox shared folders with detailed step by step
instructions.
You should remember that you are dialling with a little network of machines with different operative
systems, and in particular:
• Each virtual machine has its own operative system running on and acts as a physical machine.
• Each virtual machine is an instance of a program owned by an user in the hosting
operative system and should undergo the restrictions of the user in the hosting
OS.
E.g Let we say that Hastur and Meow are users of the hosting machine, but they did not allow
each other to see their directories (no read/write/execute authorization). When each of them run
a virtual machine, for the hosting OS those virtual machine are two normal programs owned by
Hastur and Meow and cannot see the private directory of the other user. This is a restriction due
to the hosting OS. It's easy to overcame it: it's enough to give authorization to read/write/execute
to a directory or to chose a different directory in which both users can read/write/execute.
• Windows likes mouse and Linux fingers. :-)
I mean I suggest you to enable Drag & drop to be cosy with the Windows machines and the
Shared folders or to be cosy with Linux.
When you will need to be fast with Linux you will feel the need of ssh-keygen and to Generate once
SSH Keys to copy files on/from a remote machine without writing password anymore. In this way it
functions bash auto-completion remotely too!
PROCEDURE:
Steps:
1. Open Browser, type localhost:9869
2. Login using username: oneadmin, password: opennebula
3. Then follow the steps to migrate VMs
a. Click on infrastructure
b. Select clusters and enter the cluster name
c. Then select host tab, and select all host
d. Then select Vnets tab, and select all vnet
e. Then select datastores tab, and select all datastores
f. And then choose host under infrastructure tab
g. Click on + symbol to add new host, name the host then click on create.
4. on instances, select VMs to migrate then follow the stpes
a. Click on 8th icon ,the drop down list display
b. Select migrate on that ,the popup window display
c. On that select the target host to migrate then click on migrate.
Before migration
Host:SACET
Host:one-sandbox
After Migration:
Host:one-sandbox
Host:SACET
APPLICATIONS:
Easily migrate your virtual machine from one pc to another.
Result:
Thus the file transfer between VM was successfully completed.
EXP.NO: 7 Creating and Executing Your First Container Using Docker.
AIM:
To Creating and Executing Your First Container Using Docker.
PROCEDURE:
1. *Install Docker*: First, you need to install Docker on your system. You can find
installation instructions for various operating systems on the Docker website.
2. *Pull a Docker Image*: Docker containers are created from Docker images. You can pull an
existing Docker image from Docker Hub or another container registry. For example, you can pull
the official Ubuntu image by running the command: docker pull ubuntu.
3. *Run a Container*: Once you have the Docker image, you can run a container based on that image
using the docker run command. For example, to run a basic Ubuntu container, you can use: docker
run
-it ubuntu.
4. *Explore the Container*: Once the container is running, you can explore its file system, install
software, or perform any other actions you need. For example, you can run commands inside the
container's shell, install packages, create files, etc.
5. *Exit the Container*: Once you're done working with the container, you can exit the
container's shell by typing exit.
6. *Stop and Remove the Container*: After exiting the container, you can stop and remove it using the
docker stop and docker rm commands, respectively. For example, you can stop a container by
running: docker stop <container_id> and then remove it with docker rm <container_id>.
7. *(Optional) Create Your Own Dockerfile*: If you want to create your own custom Docker image,
you can do so by writing a Dockerfile. A Dockerfile is a text file that contains instructions on how to
build a Docker image. You can specify the base image, install dependencies, copy files, and more in a
Dockerfile.
8. *Build Your Docker Image*: Once you have written your Dockerfile, you can build your
Docker image using the docker build command. For example: docker build -t my-custom-image .
9. *Run a Container from Your Custom Image*: After building your custom Docker image, you
can run a container based on that image just like you did with the pre-built images.
RESULT:
Thus created and executed first container using docker.
Install Hadoop single node cluster and
EX NO:8 run simpleapplications like wordcount.
Aim:
To Install Hadoop single node cluster and run simple applications like wordcount.
Steps:
Install Hadoop
Step 1: Click here to download the Java 8 Package. Save this file in your home directory.
Step 2: Extract the Java Tar File.
Command: tar -xvf jdk-8u101-linux-i586.tar.gz
Command: vi .bashrc
For applying all these changes to the current Terminal, execute the source command.
Command: source .bashrc
To make sure that Java and Hadoop have been properly installed on your system and can be
accessed through the Terminal, execute the java -version and hadoop version commands.
Command: cd hadoop-2.7.3/etc/hadoop/
Command: ls
All the Hadoop configuration files are located in hadoop-2.7.3/etc/hadoop directory as you can
see in the snapshot below:
core-site.xml informs Hadoop daemon where NameNode runs in the cluster. It contains
configuration settings of Hadoop core such as I/O settings that are common to HDFS &
MapReduce.
Command: vi core-site.xml
Step 8: Edit hdfs-site.xml and edit the property mentioned below inside
configuration tag:
In some cases, mapred-site.xml file is not available. So, we have to create the mapred- site.xml
file using mapred-site.xml template.
Command: vi mapred-site.xml.
Step 10: Edit yarn-site.xml and edit the property mentioned below inside
configuration tag:
yarn-site.xml contains configuration settings of ResourceManager and NodeManager like
application memory management size, the operation needed on program & algorithm, etc.
Command: vi yarn-site.xml
hadoop-env.sh contains the environment variables that are used in the script to run Hadoop
like Java home path, etc.
Command: vi hadoop–env.sh
Command: cd
Command: cd hadoop-2.7.3
This formats the HDFS via NameNode. This command is only executed for the first time.
Formatting the file system means initializing the directory specified by the dfs.name.dir
variable.
Never format, up and running Hadoop filesystem. You will lose all your data stored in the
HDFS.
Step 13: Once the NameNode is formatted, go to hadoop-2.7.3/sbin directory and start all the daemons.
Command: cd hadoop-2.7.3/sbin
Either you can start all daemons with a single command or do it individually.
Command: ./start-all.sh
The NameNode is the centerpiece of an HDFS file system. It keeps the directory tree of all
files stored in the HDFS and tracks all the file stored across the cluster.
Start ResourceManager:
ResourceManager is the master that arbitrates all the available cluster resources and
thus helps in managing the distributed applications running on the YARN system. Its
work is to manage each NodeManagers and the each application’s ApplicationMaster.
Start NodeManager:
The NodeManager in each machine framework is the agent which is responsible for
managing containers, monitoring their resource usage and reporting the same to the
ResourceManager.
Start JobHistoryServer:
JobHistoryServer is responsible for servicing all job history related requests from client.
Step 14: To check that all the Hadoop services are up and running, run the
below command.
Command: jps
Result:
Thus the Hadoop one cluster was installed and simple applications executed successfully.
Ex. No:9 Run a Container from Docker Hub
AIM:
To write a program to run a container from Docker hub.
PROCEDURE:
Run a container from
$ docker -h
Flag shorthand -h has been deprecated, please use --help Usage:
...
Management Commands:
builderManage builds
config Manage Docker configs
container Manage containers
engine
Manage the docker
engineimage Manage images
network
Manage networks
node Manage Swarm nodes
plugin Manage
plugins
secret Manage Docker
secrets service Manage
services
stack Manage Docker
stacks swarm Manage
Swarm system
Manage Docker
trust Manage trust on Docker images
volume Manage
volumes
The Docker command line can be used to manage several features of the Docker Engine. In this lab, we
willmainly focus on the container command.
If podman is installed, you can run the alternative command for comparison.
sudopodman -h
docker version
Client:
Version: 19.03.6
...
We are going to use the Docker CLI to run our first container.
KiB Mem : 2046768 total, 173308 free, 117248 used, 1756212 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1548356 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND 1 root 20 0 36636 3072 2640 R 0.3 0.2 0:00.04
top
Inspect the container with docker container exec
The docker container exec command is a way to "enter" a running container's namespaces with a new
process.
Open a new terminal. On cognitiveclass.ai, select Terminal > New Terminal.
Using play-with-docker.com, to open a new terminal connected to node1, click "Add New Instance" on
the lefthand side, then ssh from node2 into node1 using the IP that is listed by 'node1 '. For example:
[node2] (local) [email protected] ~
$ ssh 192.168.0.18
[node1] (local) [email protected] ~
$
In the new terminal, use the docker container ls command to get the ID of the running container you just
created.
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
b3ad2a23fab3 ubuntu "top" 29 minutes ago Up 29 minutes
goofy_nobel
5e1bf0e6b926bd73a66f98b3cbe23d04189c16a43d55dd46b8486359f6fdf048 Nginx is a
lightweight web server. You can access it on port 8080 on your localhost.
Access the nginx server on localhost:8080.
curllocalhost:8080
will return the HTML home page of Nginx,
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body
{
width: 35em; margin:
0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
If you are using play-with-docker, look for the 8080 link near the top of the page, or if you run a
Dockerclient with access to a local browser,
Run a mongo DB server
Now, run a mongoDB server. We will use the official mongoDB image from the Docker Hub. Instead of
using the latest tag (which is the default if no tag is specified), we will use a specific version of the mongo
image.
$ docker container run --detach --publish 8081:27017 --name mongo mongo:4.4 Unable
to find image mongo:4.4 locally
4.4 : Pulling from
library/mongo d13d02fa248d:
Already exists bc8e2652ce92:
Pull complete 3cc856886986:
Pull complete c319e9ec4517:
Pull complete b4cbf8808f94:
Pull complete cb98a53e6676:
Pull complete f0485050cd8a:
Pull complete ac36cdc414b3:
Pull complete 61814e3c487b:
Pull complete 523a9f1da6b9:
Pull complete 3b4beaef77a2:
Pull complete
Digest: sha256:d13c897516e497e898c229e2467f4953314b63e48d4990d3215d876ef9d1fc7c Status:
Downloaded newer image for mongo:4.4
d8f614a4969fb1229f538e171850512f10f490cb1a96fca27e4aa89ac082eba5
Access localhost:8081 to see some output
from mongo.curl localhost:8081
which will return a warning from MongoDB,
It looks like you are trying to access MongoDB over HTTP on the native driver
port. Ifyou are using play-with-docker, look for the 8080 link near the top of
the page.
Step 3: Clean Up
First get a list of the containers running using docker container ls.
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6777df89fea nginx "nginx -g 'daemon ..." 3 minutes ago Up 3
minutes 0.0.0.0:8080-
>80/tcp nginx
ead80a0db505 mongo "docker-entrypoint..." 3 minutes ago
Up 3 minutes 0.0.0.0:8081->27017/tcp mongo
af549dccd5cf ubuntu "top" 8 minutes
ago Up 8 minutes priceless_kepler
Next, run docker container stop [container id] for each container in the list. You can also use the
names of the containers that you specified before.
$ docker container stop
d67 ead af5 d67
e
a
d
a
f
5
1. Remove the stopped containers
docker system prune is a really handy command to clean up your system. It will remove any
stopped containers, unused volumes and networks, and dangling images.
$ docker system
prune WARNING!
This will remove:
- all stopped containers
- all volumes not used by at least one container
- all networks not used by at least one container
- all dangling images
Are you sure you want to
continue? [y/N] y
Deleted
Containers:
7872fd96ea4695795c41150a06067d605f69702dbcb9ce49492c9029f0e1b44b
60abd5ee65b1e2732ddc02b971a86e22de1c1c446dab165462a08b037ef7835c
31617fdd8e5f584c51ce182757e24a1c9620257027665c20be75aa3ab6591740
Total reclaimed space: 12B