OpenStack and xcat: Difference between revisions
Created page with "This wiki page is for the development of XCAT/OpenStack Senior Project for IBM." (change visibility) |
|||
| (30 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
This wiki page is for the development of XCAT/OpenStack Senior Project for IBM. |
This wiki page is for the development of XCAT/OpenStack Senior Project for IBM. |
||
== Documentation == |
|||
xCat Wiki : http://sourceforge.net/apps/mediawiki/xcat/index.php?title=Main_Page |
|||
zVM 5.4.0 SMAPI book : http://publib.boulder.ibm.com/infocenter/zvm/v5r4/index.jsp?topic=/com.ibm.zvm.v54.dmse6/hcsl8b30.htm |
|||
Open Stack : http://www.openstack.org/ |
|||
z/VM System Management Application Programming |
|||
SMAPI functions tie into lots of different z/VM systems management tasks, so here's a link to the particular SMAPI functions for connectivity: |
|||
http://publib.boulder.ibm.com/infocenter/zvm/v6r2/index.jsp?topic=%2Fcom.ibm.zvm.v620.dmse6%2Fhcsl8c1134.htm&path=6_18_3_1_9 |
|||
== Design proposal == |
|||
''' INTRODUCTION ''' |
|||
This is a design proposal for our project that aims to make it possible to make a connection between Openstack and xCat. |
|||
''' CURRENT SITUATION ''' |
|||
Currently we cannot establish a connection from an Openstack client to an xCat client. There is no plugin for xCat to make this connection. |
|||
At this stage of the development we have installed Openstack on our computers. We have researched the Openstack functions that we should use for making the connection. We are also researching the xCat functions. |
|||
''' GOALS ''' |
|||
Our project's main goal is to create a connection between Openstack and xCat. We will develop a plugin for xCat that will make this connection possible. We should be able to connect to xCat installation on the Watson mainframe from our workstations which has Openstack installed. |
|||
''' PLANNING ''' |
|||
We plan to develop the plugin to be able to create connections for virtual switches. The Openstack plugin OpenvSwitch provides the necessary environment required through virtual switches. The coding of the plugin will be done in Python because xCat is mostly Python based so it will be easy to run on. |
|||
''' PROCESS ''' |
|||
First we will research the xCat functions that we will extend and write a plugin for(This part is mostly done at this point). After we finish the research part, we will start coding the plugin itself. The development process of the code will be done with Python. After we complete the first version of the code, we will start the debugging process and iterate on the code itself until all the bugs are corrected. After we finish debugging the code, we will test the plugin to see if it meets the requirements. Finally, we will deliver the plugin. Entire development process will also be documented here on this wiki as well as the documentation for the plugin itself. |
|||
== OpenStack == |
|||
What is OpenStack: http://en.wikipedia.org/wiki/Openstack |
|||
OpenStack website: http://www.openstack.org/ |
|||
API reference: http://api.openstack.org/api-ref.html |
|||
== OpenStack Modules == |
|||
''' NOVA ''' |
|||
NOVA is the compute module for the OpenStack. It is the main controller part of the project and it is written in Python and designed to be horizontally scalable. |
|||
''' QUANTUM ''' |
|||
QUANTUM is the network module for the OpenStack. It is responsible for managing networks and IP addresses in the cloud. It also has support for plugins. |
|||
''' SWIFT and CINDER ''' |
|||
These two modules are used for storage. SWIFT is used for object storage while CINDER is used for block storage. |
|||
These modules cover the three main aspects of OpenStack: Compute, Networking and Storage. There are many more smaller modules for other parts of the OpenStack but we will mainly focus on these modules for our project. |
|||
''' Guides and Documents ''' |
|||
Quantum API guide: http://docs.openstack.org/api/openstack-network/2.0/content/ |
|||
Nova developer guide: http://docs.openstack.org/api/openstack-compute/2/content/ |
|||
Presentation on Quantum and it's plugins: http://www.xlcloud.org/bin/download/Download/Presentations/XLCloud-Networking_Needs_Quantum.pdf |
|||
''' Quantum Plugins ''' |
|||
Quantum has support for plugins and there are many plugins right now that add to and extend many of the networking functions of Quantum. Some of them are: |
|||
Open vSwitch Plugin: http://openvswitch.org/ |
|||
Cisco UCS/Nexus Plugin: https://wiki.openstack.org/wiki/Cisco-quantum |
|||
Linux Bridge Plugin: https://wiki.openstack.org/wiki/Quantum-Linux-Bridge-Plugin |
|||
Nicira Network Virtualization Platform (NVP) Plugin: http://nicira.com/en/network-virtualization-platform |
|||
Ryu OpenFlow Controller Plugin: http://osrg.github.io/ryu/ |
|||
== OpenStack Installation == |
|||
''' Platform ''' |
|||
OpenStack only supports Linux platform and the compatible distributions are Cloudscaling, Debian, Fedora, Piston Cloud Computing, Red Hat, SwiftStack, SUSE, Ubuntu and Stackops. Many of these platforms now include OpenStack in their distribution. However, for development purposes we have to install devStack which is the developer distribution of OpenStack. |
|||
''' devStack Installation on VM ''' |
|||
1. First of all we need to get a minimal Linux distribution. The best choices we have are either Ubuntu or Fedora. Download latest distributions from their website. We also need a VM software to create and run VMs. There are many of these software out there but the one we used is Oracle's Oracle VM Virtual Box. After we get the VM running and have it install the Linux distribution we chose we move onto installing devStack itself. This part takes around 30 minutes depending on the Linux distribution chosen and your internet connection. |
|||
2. Installing devStack is quite easy, but it is also quite long. First thing is we need to download devStack from the github at: git://github.com/openstack-dev/devstack.git . To do this we go to our Linux machine and type "git clone git://github.com/openstack-dev/devstack.git" into the command line. This command will go to the github and run the install script there which will then download devStack to your VM and install it. This part takes around 10 minutes to complete depending on your internet connection. |
|||
3. Installation is over but deployment is not, we need to run the stack.sh script of the devStack which does too many things to cover here but here is a link to it: http://devstack.org/stack.sh.html . To run it we first need to navigate to the devStack directory with the command "cd devStack" then all we need to do is run the command "./stack.sh". After this command is run stack.sh script starts running and this part will take a very long time. After all the script is run there will be information about what the script has done on the screen for a quick recap of them. This part takes around 1-2 hours depending on the speed of your VM and your internet connection. |
|||
4. devStack is now ready for use but before we can use it we need to configure localrc file so we can set our user settings. To do this we first create the file with a simple text editor like nano. We used nano for this part so the command for this is "nano localrc" and also we need to run this command while in devStack directory which, after stack.sh runs, should be where we are. This opens up a text editor screen and we need to enter some basic configurations for user settings. The file should look like this: |
|||
ADMIN_PASSWORD=youradminpw |
|||
MYSQL_PASSWORD=yourdbpw |
|||
RABBIT_PASSWORD=yourrabbitpw |
|||
SERVICE_PASSWORD=$ADMIN_PASSWORD |
|||
HOST_IP=w.x.y.z |
|||
These settings are very basic and there are a lot more that can be done within localrc file. Here is a link to the page that contains the extra settings that can be set in this file: http://devstack.org/localrc.html |
|||
After we enter these settings with our text editor all we need to do is save and exit the editor and return to the devStack directory. |
|||
Now we are all set to develop with devStack. A good way to start getting to know devStack is to run exercise.sh script in the devStack directory. This script will run 13 exercises which we can inspect by looking at the script itself. After the script runs it will show how the exercises resulted in. |
|||
[[File:Error.JPG]] After we run the exercise.sh we got this result. The error can be seen just above the results, which is related to the HTTPConnectionPool. |
|||
== OpenVswitch Information == |
|||
OpenVswitch is the plugin that creates and manages virtual switches on the OpenStack platform. The plugin is directly for Quantum module which manages the network functions in OpenStack. The plugin itself is already integrated into latest Quantum module distributions but is also available as a separate installation. |
|||
Latest distribution: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=snapshot;sf=tgz;h=HEAD |
|||
This link will create a tar ball of the latest distribution and download it to your computer. |
|||
The github for these files is: " git://openvswitch.org/openvswitch " so we can download all the files directly to our Linux server. |
|||
Installation notes: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL;hb=HEAD |
|||
Most of the code and the libraries are written in C but there is also Python scripts used for some of the tasks. |
|||
'''OpenFlow''': OpenFlow is a communications protocol that gives access to the forwarding plane of a network switch or router over the network. It enables researchers to run experimental protocols in the campus networks we use every day. OpenFlow is added as a feature to commercial Ethernet switches, routers and wireless access points – and provides a standardized hook to allow researchers to run experiments, without requiring vendors to expose the internal workings of their network devices. OpenFlow is currently being implemented by major vendors, with OpenFlow-enabled switches now commercially available. |
|||
'''Presentation done by Marist College research group to the zVM User group''': https://docs.google.com/presentation/pub?id=1rhwf2Jwma9WCK9AgO1s2KvSp4Azx8V49qTEBoeT3PxQ&start=false&loop=false&delayms=3000#slide=id.p |
|||
More info here: http://www.openflow.org/ |
|||
[[File:OpenFlow.JPG]] OpenFlow Components |
|||
'''OpenFlow and OpenVswitch tutorial videos''': These videos use KVM as the virtualization platform to demonstrate intalling and running OpenFlow configured OpenVswitch. |
|||
Part 1: http://www.youtube.com/watch?feature=player_embedded&v=0uKxO3NwzxI |
|||
Part 2: http://www.youtube.com/watch?feature=player_embedded&v=NHHJRDmiqyg |
|||
'''Final Wrap-up meeting discussion for next semester: |
|||
''' |
|||
What needs to be done for next semester is to create a plugin for OpenVswitch extending the functions of both OpenFlow and OpenVswitch to work with zVM environment. The OpenVswitch daemon process does the managing of database and initializing of the OpenFlow according to the settings chosen by the user. Information about OpenFlow can be found here: http://www.openflow.org/wp/learnmore/ . |
|||
==Authors== |
|||
<ul> |
|||
<li>Mert Yilmaz |
|||
<li>Deniz Ocal |
|||
<li>Deniz Yaman |
|||
</ul> |
|||
[[File:Photo.JPG]] |
|||
Latest revision as of 18:43, 14 May 2013
This wiki page is for the development of XCAT/OpenStack Senior Project for IBM.
Documentation
xCat Wiki : http://sourceforge.net/apps/mediawiki/xcat/index.php?title=Main_Page
zVM 5.4.0 SMAPI book : http://publib.boulder.ibm.com/infocenter/zvm/v5r4/index.jsp?topic=/com.ibm.zvm.v54.dmse6/hcsl8b30.htm
Open Stack : http://www.openstack.org/
z/VM System Management Application Programming SMAPI functions tie into lots of different z/VM systems management tasks, so here's a link to the particular SMAPI functions for connectivity: http://publib.boulder.ibm.com/infocenter/zvm/v6r2/index.jsp?topic=%2Fcom.ibm.zvm.v620.dmse6%2Fhcsl8c1134.htm&path=6_18_3_1_9
Design proposal
INTRODUCTION
This is a design proposal for our project that aims to make it possible to make a connection between Openstack and xCat.
CURRENT SITUATION
Currently we cannot establish a connection from an Openstack client to an xCat client. There is no plugin for xCat to make this connection.
At this stage of the development we have installed Openstack on our computers. We have researched the Openstack functions that we should use for making the connection. We are also researching the xCat functions.
GOALS
Our project's main goal is to create a connection between Openstack and xCat. We will develop a plugin for xCat that will make this connection possible. We should be able to connect to xCat installation on the Watson mainframe from our workstations which has Openstack installed.
PLANNING
We plan to develop the plugin to be able to create connections for virtual switches. The Openstack plugin OpenvSwitch provides the necessary environment required through virtual switches. The coding of the plugin will be done in Python because xCat is mostly Python based so it will be easy to run on.
PROCESS
First we will research the xCat functions that we will extend and write a plugin for(This part is mostly done at this point). After we finish the research part, we will start coding the plugin itself. The development process of the code will be done with Python. After we complete the first version of the code, we will start the debugging process and iterate on the code itself until all the bugs are corrected. After we finish debugging the code, we will test the plugin to see if it meets the requirements. Finally, we will deliver the plugin. Entire development process will also be documented here on this wiki as well as the documentation for the plugin itself.
OpenStack
What is OpenStack: http://en.wikipedia.org/wiki/Openstack
OpenStack website: http://www.openstack.org/
API reference: http://api.openstack.org/api-ref.html
OpenStack Modules
NOVA
NOVA is the compute module for the OpenStack. It is the main controller part of the project and it is written in Python and designed to be horizontally scalable.
QUANTUM
QUANTUM is the network module for the OpenStack. It is responsible for managing networks and IP addresses in the cloud. It also has support for plugins.
SWIFT and CINDER
These two modules are used for storage. SWIFT is used for object storage while CINDER is used for block storage.
These modules cover the three main aspects of OpenStack: Compute, Networking and Storage. There are many more smaller modules for other parts of the OpenStack but we will mainly focus on these modules for our project.
Guides and Documents
Quantum API guide: http://docs.openstack.org/api/openstack-network/2.0/content/
Nova developer guide: http://docs.openstack.org/api/openstack-compute/2/content/
Presentation on Quantum and it's plugins: http://www.xlcloud.org/bin/download/Download/Presentations/XLCloud-Networking_Needs_Quantum.pdf
Quantum Plugins
Quantum has support for plugins and there are many plugins right now that add to and extend many of the networking functions of Quantum. Some of them are:
Open vSwitch Plugin: http://openvswitch.org/
Cisco UCS/Nexus Plugin: https://wiki.openstack.org/wiki/Cisco-quantum
Linux Bridge Plugin: https://wiki.openstack.org/wiki/Quantum-Linux-Bridge-Plugin
Nicira Network Virtualization Platform (NVP) Plugin: http://nicira.com/en/network-virtualization-platform
Ryu OpenFlow Controller Plugin: http://osrg.github.io/ryu/
OpenStack Installation
Platform
OpenStack only supports Linux platform and the compatible distributions are Cloudscaling, Debian, Fedora, Piston Cloud Computing, Red Hat, SwiftStack, SUSE, Ubuntu and Stackops. Many of these platforms now include OpenStack in their distribution. However, for development purposes we have to install devStack which is the developer distribution of OpenStack.
devStack Installation on VM
1. First of all we need to get a minimal Linux distribution. The best choices we have are either Ubuntu or Fedora. Download latest distributions from their website. We also need a VM software to create and run VMs. There are many of these software out there but the one we used is Oracle's Oracle VM Virtual Box. After we get the VM running and have it install the Linux distribution we chose we move onto installing devStack itself. This part takes around 30 minutes depending on the Linux distribution chosen and your internet connection.
2. Installing devStack is quite easy, but it is also quite long. First thing is we need to download devStack from the github at: git://github.com/openstack-dev/devstack.git . To do this we go to our Linux machine and type "git clone git://github.com/openstack-dev/devstack.git" into the command line. This command will go to the github and run the install script there which will then download devStack to your VM and install it. This part takes around 10 minutes to complete depending on your internet connection.
3. Installation is over but deployment is not, we need to run the stack.sh script of the devStack which does too many things to cover here but here is a link to it: http://devstack.org/stack.sh.html . To run it we first need to navigate to the devStack directory with the command "cd devStack" then all we need to do is run the command "./stack.sh". After this command is run stack.sh script starts running and this part will take a very long time. After all the script is run there will be information about what the script has done on the screen for a quick recap of them. This part takes around 1-2 hours depending on the speed of your VM and your internet connection.
4. devStack is now ready for use but before we can use it we need to configure localrc file so we can set our user settings. To do this we first create the file with a simple text editor like nano. We used nano for this part so the command for this is "nano localrc" and also we need to run this command while in devStack directory which, after stack.sh runs, should be where we are. This opens up a text editor screen and we need to enter some basic configurations for user settings. The file should look like this:
ADMIN_PASSWORD=youradminpw
MYSQL_PASSWORD=yourdbpw
RABBIT_PASSWORD=yourrabbitpw
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=w.x.y.z
These settings are very basic and there are a lot more that can be done within localrc file. Here is a link to the page that contains the extra settings that can be set in this file: http://devstack.org/localrc.html
After we enter these settings with our text editor all we need to do is save and exit the editor and return to the devStack directory.
Now we are all set to develop with devStack. A good way to start getting to know devStack is to run exercise.sh script in the devStack directory. This script will run 13 exercises which we can inspect by looking at the script itself. After the script runs it will show how the exercises resulted in.
After we run the exercise.sh we got this result. The error can be seen just above the results, which is related to the HTTPConnectionPool.
OpenVswitch Information
OpenVswitch is the plugin that creates and manages virtual switches on the OpenStack platform. The plugin is directly for Quantum module which manages the network functions in OpenStack. The plugin itself is already integrated into latest Quantum module distributions but is also available as a separate installation.
Latest distribution: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=snapshot;sf=tgz;h=HEAD
This link will create a tar ball of the latest distribution and download it to your computer.
The github for these files is: " git://openvswitch.org/openvswitch " so we can download all the files directly to our Linux server.
Installation notes: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL;hb=HEAD
Most of the code and the libraries are written in C but there is also Python scripts used for some of the tasks.
OpenFlow: OpenFlow is a communications protocol that gives access to the forwarding plane of a network switch or router over the network. It enables researchers to run experimental protocols in the campus networks we use every day. OpenFlow is added as a feature to commercial Ethernet switches, routers and wireless access points – and provides a standardized hook to allow researchers to run experiments, without requiring vendors to expose the internal workings of their network devices. OpenFlow is currently being implemented by major vendors, with OpenFlow-enabled switches now commercially available.
Presentation done by Marist College research group to the zVM User group: https://docs.google.com/presentation/pub?id=1rhwf2Jwma9WCK9AgO1s2KvSp4Azx8V49qTEBoeT3PxQ&start=false&loop=false&delayms=3000#slide=id.p
More info here: http://www.openflow.org/
OpenFlow and OpenVswitch tutorial videos: These videos use KVM as the virtualization platform to demonstrate intalling and running OpenFlow configured OpenVswitch.
Part 1: http://www.youtube.com/watch?feature=player_embedded&v=0uKxO3NwzxI
Part 2: http://www.youtube.com/watch?feature=player_embedded&v=NHHJRDmiqyg
Final Wrap-up meeting discussion for next semester: What needs to be done for next semester is to create a plugin for OpenVswitch extending the functions of both OpenFlow and OpenVswitch to work with zVM environment. The OpenVswitch daemon process does the managing of database and initializing of the OpenFlow according to the settings chosen by the user. Information about OpenFlow can be found here: http://www.openflow.org/wp/learnmore/ .
Authors
- Mert Yilmaz
- Deniz Ocal
- Deniz Yaman