 So hello everybody Hi to all freedom lovers. My name is Matt Ressenberg. I'm the project manager of open QM and I will now talk about the open QM management platform and how we achieve a pluggable virtualization for a modern data centers So so short to the agenda actually how many people here? Forced them already know open QM or have played with it a bit a few a few So I will still give a short or a basic overview about what open QM is what goals we are trying to achieve and What you can do with it? Big part of the talk is about the pluggable architecture of open QM which allows to Be very flexible with virtualization means plugging in virtualization technologies into your Management framework for your data centers We'll explain the virtualization layer which we implemented in open QM which is to Unify different virtualization technologies. I will also give a few insights about why there is a great benefit of Conforming different virtualization technologies I will after that we have Some more details about the already implemented virtualization plugins for open QM, which is the Emberx and Linux vServe and QEMO and Since this is a developer conference and I want all you to contribute to the open QM project. I will also Have a section in the talk later How to develop a virtualization plugin what is needed inside the open QM? To fit in a new virtualization technology and of course there will be time for questions and hopefully also answers for you so First about open QM. It's derived from a commercial project called QRM this was developed by the clusters company and Luckily, I could convince them or at least I was one Source to Make the whole project an open source project Was quite some efforts which we had to do before going open source means cleaning up Build system the architecture and so on This happened at the end of 2005 and at the beginning of 2000 2006. We are now an open source project We used the MPL license which is very similar to the GPL license So from from now from there on There is an active development development going on the community which mainly concentrates on Writing additional plugins for open QM. So Why plugins? First of all, I start a bit down here When we rewrote or re-architectured open QM before going open source beginning 2006. We thought about That we need to have a pluggable architecture with a defined well-defined API to make it easier for developers to add new functionality or change existing functionality inside the open QM server and Next to that we want to keep the open QM server itself very At least we try to keep it very small and robust So the benefit what we gained from this pluggable architecture we designed for open QM is That we could parallelize our development So we have a few developers sitting on the core and many other developers Developing independent plugins and don't disturb each other with There's no code in this So we can separate the code our developers are working on basically through this pluggable API So basically open QM. What is a management system for data centers and It's It's a deployment system means you can rapidly deploy server to existing physical hardware or also virtual machines There are monitoring tools being built in so that you also can monitor your servers and applications and of course also We thought about high availability In open QM, which basically is a rapid redeployment if something fails So the concept of open QM is the separation of modules of the data center That means the on the one hand the physical hardware the bare metal what we see from open QM side as a kind of resource, this is CPU power memory disk space and so on on the other hand we try to separate the Operation system plus the applications From the physical hardware or virtual machine hardware This is done mainly via a net booting. So all computers managed by open QM are Normally net booting and managed via net booting. They can also start local Means start from the local disk if there's a local disk inside the whole initialization of Being able to manage a remote system over there in the data center is based on that booting so Open QM therefore provides tools to Transform an existing server to a server image from different types. So I come to that in a moment we first when we have an When we transform the server into an image the images Basically, just like with all with other virtualization technologies. It's basically a big file on some storage server the advantages from having Server images instead of local installed servers first. I don't trust local hard disk Recently came back from the Linux Conf Australia and found my hard disk of my workstation Where I still am using hard disk crashing at first boot up with a hardware failure. So it's kind of worse So on the other hand if you have a server image it is on a It is located on a on a storage server Which normally has backup facilities recovering facilities and also snapshot facilities features Which means I can First I have the backup and restore in a central place where it should be on them on the storage server itself and second I can use the Cloning features the snapshotting features of the storage server to just create new images of of my existing server image So basically what what we tried To to implement as a feature is and Integrating open QM with modern storage server windows or with open-source storage server Mechanisms like LVM NFS on top of LVM or high scasi on top of LVM, which basically gives the same flexibility as a Netafiler, but it costs nothing and with the interface from open QM to the storage server we can say Now I have an existing web server template which I which I now need For my new five customers and I can basically just create The configuration inside open QM using the web server template base image and Let open QM clone the server images on deployment Means in the moment. I want to start the server for customer 3 It will go to the storage server clone create a snapshot of the already existing known to work web server image deployed via net booting that means bringing up a new server for my Next customer is actually will actually take just the time the system is going to boot Which is quite fast. I don't have to install anything. I don't have to Touch or change things which I know that they're working so Having this I call it appliance based deployment method via net booting We are using this also as As a partition interface as a virtual machine interface To conform different virtualization technologies later So first this is this was more or less about physical machines, but with the with The virtualization plugins existing for open QM This layer is also this network booting layer is also used to First be able to very easy migrate from a physical machine to virtual machine And then from virtual machine a type a to virtual machine type B so The Let's come Coming back to the goals and concepts So the first is separation between different models modules in the data center. The second is we abstract those modules We with a term called virtual environments. This is your new web server. You need for the next customer Inside this virtual environment configuration You tell open QM which kernel I want to boot which boot image basically which root file system I want to boot. This is the big server image laying on this on a storage server somewhere and How how I want to start this new service. It means a service level agreements It's about high availability. It's about Should this whole thing the web service should be run on a cluster how many nodes the cluster need how many CPU speed the application need our memory all this goes into the virtual environment configuration and The virtual environment Later or basically Represents the service that I want to deploy an open QM So I will then have a web server customer a virtual environment Which I later can start and stop via a single mouse clicks with via the web interface of open QM So When it comes to virtualization This is also this is only then with this abstraction only a Select box inside your virtual environment configuration where the administrator of the box selects Or this today this this server should run on a physical machine or tomorrow It should run inside a VM very virtual machine or the next day It should run into Linux v server partition and after that maybe at the weekend. I need it on a physical box again So this is all about a transparent resource planning, which we also which we integrated into the virtual environment abstraction Okay, I talked about a huge selection of plugins Plugable architecture and they're Already huge selection about 20 Plugins available for open QM, which adds different features to the base server Examples for that is a Nagios plugin for enhanced monitoring. We have integrated Linux CUE as a plugin Which gives you an automatic installation as a as a next form of deployment Method We have the virtualization plugins, which we will talk about a few minutes in more detail So we also integrated LVM storage NFS on top of LVM and ice cousin top of LVM so that users can use this Instead of buying a net up filer for example Last but not least we have Support for different operation system also non-linux Operations system systems can be deployed with open QM Examples for that is free BST solaris and surprisingly also Windows. We can deploy Windows machines for that So this is the basic overview of open QM and This is needed to Understand better the way how we integrated this virtualization layer in open QM Let's start a bit bit at the beginning we heard some Different speakers here today talking about virtualization and So we have not a single technology which with everybody have to use but we have a great choice of different virtualization technologies I'm always try to group them into this three Methods which is full virtualization power virtualization and Kind of isolation or container container based virtualization. So I will not go into detail anymore I expect that everybody from from you guys Know what is full virtualization power virtualization container means so we are not going that deep into that but There is the need for the system administrator to To choose to select a virtualization virtualization technology or virtualization vendor For his needs. So what are the needs the needs are basically the application needs. So what we have lots of different application and Some are more happy with full virtualization some are happy with power virtualization and others are a prefer Lightweight or container base lightweight or container based virtualization a good example is if I would Virtualize an oracle database. I would think about like Xen or VM there something like that if I'm a web host and I want to deploy a thousand or hundreds of Apache web service root service for my for renting to my customers I would definitely go with Solutions like Linux v server or open v set which are much more lightweight so I can start much Many more machines on a single virtualization host than on Xen or VM there So basically this means as a system administrator. I do not have to choose one Virtualization technology and stick with it, but I have to support more than one and Basically at least three to make all my applications and all my users happy so three different virtualization technologies and the Requirement to also manage the physical systems Quite a lot quite a goal. So what we tried or what we implemented is We unify the we unified the deployment layer. We are this net booting Which then also is used to Conform the different types of virtualization technologies when I'm today when I have a Xen Xen virtual machine Moving this to an ASX host to VMware host It's quite some manual work. You have to adapt the configuration file. You have to maybe you have to also Transfer the disk image from one server to another and then to Make from the Xen block device disk image make a VMDK out of it So lots of manual things to do with the for the system administrator With the open QM deployment method via net booting We don't need to do anything. We don't need to change anything on a server image to move it from a physical machine to a virtual machine it's just We just Configure a different resource type not physical machine or bare metal But the virtual machine from type Xen or VMware inside the virtual environment profile and the next next time my virtual environment Starts up. It will use a Xen virtual machine instead of a physical box So this all gives us a transparent support formigrating from physical resources to virtual partition and also Then later if I put my application on Xen Xen virtual machine, and I would just want to try it in Linux v server or in QEMU We can do this on the fly without any changes on the server image So the server image my known to by known to work web server template cloned on deployment time It will never change so Let me quick give Some more details to this cloning on deployment time feature sure We all have templates for our applications and servers and this works quite well still for each customer or for each Resulting virtual appliance or virtual machine. I need to change minor things or major things on the server image itself It's a clone. It has some static entries for etc host. Maybe or my it has a HTTP configuration file which should be adapted for each user or for each resulting server, which I want to bring up We also Have an option in open QM to do this for fully automatically Via the puppet plug-in puppet. I'm not sure how many people know puppet already Quite a lot great. It's It's known to be the next generation of CF engine It's automatic configuration management utility which we integrated and open QMS an additional plug-in So you can just enable and disable it as you like or as you need and What you will gain from it is after open QM automatically clones clone to your web server image and Started it up on a existing on a free available machine The configuration for example of the HTTP conf file can be adapted automatically via the puppet plug-in So I just have to cut and paste HTTP conf received into my puppet configuration also we are the Open QM user interface and The next time I start the server it will automatically Adapt or get a new HTTP configuration file before actually starting the web service on the on the server Okay, so we also cannot omit this so Why using open QM for managing virtualization we have lots of Applications or tools for virtualization nowadays which Which Which are for creating partitions starting stopping them there are GUI applications there are web applications for that But why using open QM? Because open QM is not only a GUI for single virtualization technology like the You have for Xen you have Xen man or Xen Some some GUI utilities which are more or less concentrating just on Xen Xen for VMware You have the the commercial options the ESX VMware Center and stuff like that for Linux V server There's a web GUI available Why not using that? Because what we try with open QM is to Combine all those utilities or to combine useful utilities To create a single management console. I don't want to connect to use loosely tools One for this one for that this for the next Virtualization technology, but I would like to have One Utility which which where which helps me to manage my complete data center and this is what open QM tries to achieve So it's not only a GUI For a single virtualization technology, but it automatically it also cares about the deployment of your virtualization host we always we always Excuse me, we always speaking about bringing up new virtual machines starting them stopping them managing them and so on but actually we are never Really much talking about how to install a virtualization host or how to deploy I would like more or less a deploy because I don't want to install it I don't I want to I want what I want is a virtualization host server image Which I can the same as the web server clone on deployment time. So if I need a new one, I just say start so with open QM Open QM cares also about the deployment of your Xen host or deployment of your Linux V server virtualization host or QM host and It brings all Xen utilities Within the Xen plugin. So you basically then can Use any of your existing server images Without having the need to have Xen installed on this server image But just use this Started and in the virtual environment Configuration tell its Xen virtual host so what will happen the Server image will be cloned on deploy it will be booted on the on a free machine It will boot the hypervisor of course not the Linux kernel, but the hypervisor in which boots the DOM U kernel DOM 0 kernel, excuse me and It will automatically install Xen on your server image during boot up So after that basically just say I need a new Xen virtualization host It's based on my image XYZ. It should be Xen host it's a it's a it's a checkbox which you just enable and You say start and you will have a virtualization host up and running without any Installation without needing to install Xen or configure anything on the on the server image um So the next thing is When it's about virtualization Normally people start with one server with two virtualization hosts and then The needs from the users are going up and then I need a third one a fifth one and so on With open QM we can we support Out of the box clusters of shared virtualization host What does that mean? We can Let our Xen virtual Virtualization host It's a it's a virtual environment inside open QM. It's a configured configurable virtual environment We can make it this cluster We can Select we can configure with how many nodes it should start up with minimum maximum nodes and and Then all the nodes in the all the servers in the cluster will use the same server image root file system, so basically this helps a lot for Updates and security patches because I don't have to maintain like 50 server images, but just one The second what it does is with the virtual environment configuration minimum and maximum numbers of nodes I can make the whole thing scaling up and down automatically that means The cluster will start up with minimum nodes let's say five and we have maximum nodes 15 and When there is load on the cluster Generated by the virtual machines for example Open QM will automatically add new physical servers to this virtualization cluster single system image cluster so that Enables the system and spreader to to move to migrate virtual machines from one virtualization host to another within this single system image cluster so the the thing what is What what I learned from especially pro-force? Oh, this is a conference basically month ago focusing on virtualization is that People want to have Something like a cloud computing so they have a cloud of virtualization hosts where physical systems are being added and removed automatically According to the load of the cluster so the cluster scales up automatically up and down and what they also want is actually Is that the virtual machines inside this cluster are? Being migrated automatically to the hosts inside the cluster with which are less loaded So it's an automatic load balancing of physical machines Which are scaling up and down inside the cluster and within this cluster of physical machines? We have lots of virtual machines which are then also being able to move from one's Virtualization host to another so what we implemented for now is we can have the automatic cluster of shared hosts which scales up and down The next thing on the roadmap is to actually find a good implementation or a good mechanism To decide when a virtual machine should Move from one virtualization host to another So it's a kind of load balancing we have to implement and it just will be an additional plugin in open qrm so The partition management, so we just talked about how to bring up in a virtualization host VMware or Xen or Linux v server q email host with open qrm Basically fully automatically through this server imaging and appliance-based deployment. So now how are the? partitions or the virtual machines are being managed in open qrm with its partition Layer with its partition abstraction layer open qrm maps the commands for example reboot shutdown Administrative commands to the actions on the virtualization host means open qrm when you reboot a server Or one of your virtual environments, which can be run on a physical system or on a virtual machine Open QM knows That it is running on a physical machine or on a virtual machine and if it's running on a virtual machine It will not run Send and reboot to the virtual machine, but a reboot to the virtual machine host Which then runs for example the the the virtualization command for this specific technology for VMware we have VMware cmd Shutdown or a reboot with Xen we We put this on top of the Xen API using Xm Xm reboot So open qm automatically maps the the commands which are going to my server either Executes them on a physical service like the real reboots Command or if it's a partition if it's a virtual machine it goes to the virtual machine host and reboots the The virtual machine from on behalf of the host the administration itself Because of this obstruction layer This net booting obstruction layer. It's just like physical service. They appear in open qm You create some partitions some new partitions They will appear in open qm as free available resources, which then can be used to deploy your server images on so at all the virtual machines can very easily move from One virtualization type to another because the server image itself. It's it's it's disconnected from the virtualization technology so we don't have to move a VMDK to a Xen block device or Extract the root file system of a VMDK to be able to run it on linux v server But we just have server images there and Resources over there and resources can be physical or they can be virtual Open QM just manage the rest Okay, so I'm now telling a bit about the Virtualization plugins the details about your virtualization plugins, which are we already implemented basically it's Xen linux v server Q emu plus the KVM extension and VM there of course with Xen we The Xen plug-in gives you a bunch of features which I now I won't read them for you on the on the slide But of course you have start stop pause on pause We recently added live migration support for for Xen which is the first step To this cloud computing stuff where things are balancing and scaling up automatically We also added a Xen console in the open QM user interface. That means you can insert your open QM inside a web browser With the open QM user interface you can access directly access the console of your virtual machines I should say something about our deployment methods so what I said was that The whole flexibility in open QM is a result of net booting Servers or virtual machines When they are net booted we have different deployment methods the basic the common Deployment method is through NFS route. I don't I know Some people don't like NFS so much for the root file system. It's working quite well. We also have implemented first standard ice-cazi route means you can run you can deploy You can Have your server images on an ice-cazi LAN which will be connected at boot up Which is very cool because on the on the ice-cazi storage You can have a regular file system like extended 3 or a riser FS Which gives the great advantages there not any not everything what? The system reads and writes from a drool file system goes immediately through the wire like it is with NFS But with extended 3 there's a lot of journaling and caching inside the systems run So the system actually will read and write to The network when it has time for it No, no Yes, we manage them This can be done. We have the puppet plug-in for an automatic configuration with when you Create this single system image cluster. You're are currently Limited to NFS route so the We've also mechanisms to have private directories Within each note of the single system image cluster means you can have you can define private areas on an areas Within private areas, which are shared again your configuration file With ice-cazi of course We have a non cluster file system normally on top of it like a second three or riser FS as I just mentioned You can have the single system image based Deployment also with ice-cazi route, but you have to use a cluster file system like OS OCFS to I did test with it with where which were Very promising you could also use GFS for that So these are different deployment methods NFS route ice-cazi route. We also have local local disk dump That's mean local deployment we can Grab an image from an existing service hard disk transfer to a Storage server location and then use this image to dump it back to another service hard disk and This all happens again through net booting But after the image is being done to the to the hard disk again, the node will just reboot local So we also have local deployment with virtualization plugins the Accent plug-in supports NFS and ice-cazi storage deployment We don't really focus on Local hard disks within virtual machines because these are basically just files Which should be not on the virtualization host But somewhere on a modern storage server which automatically cares about backing up and creating snapshots and so and so on so This is a screenshot everybody likes screenshots of the OpenQM user interface, especially the Xen configuration. This is We have different Methods what what plugins can provide for OpenQM? This is the web page integration. So we have the plug-in brings a new web page Which allows you to manage configure and set up your virtual machines. This is the Xen console which we implemented I just I just told it you can access now the The virtual machines console from within open here from within the open QM user interface what we try to manage is what we try with OpenQM is to really Not reinvent the wheel So if this if there is some project which is known to work and a common to use for system administrators We try to integrate this into OpenQM and use OpenQM as a glue To make different components cooperate together and to let them cooperate with the main Management framework. So this opens up a lot for automatism, which you don't have when you just use loosely connected tools Sorry Think I cannot make it really bigger on the fly I'm not sure but Yeah, come to me come to me after the talk I will show you So next is the QEMU plug-in It We have a list of features it also supports NFS and iSCSI deployment it does not require any special boot image because the QEMU as a Has very less requirements on the actually virtualization hosts it only needs a TAN device TAN tap device To run We recently added also support for cake a cake QEMU, which is an acceleration accelerator module Provided by QEMU itself and also for KVM. That means you can also run QEMU in Fulvigization mode with OpenQM So then we have the linux v server plug-in very lightweight container based virtualization It For now it supports only NFS storage means your server root file systems should be on an NFS server Why is this so because we with linux v server? it's a virtualization type with just one running operation system and We don't really have the option now We what we could do is we could connect root file systems on iSCSI targets We are the iSCSI initiator the thing is that This would require To have the iSCSI tools and the initiator module running inside Available inside the linux v server host kernel, which is still kind of tricky I tested it and it does not work stable yet, but I'm in contact with the linux v server guys a bit To see what we can do there So last but not least we also have the VMware plug-in, which is currently maintained or provided by the clusters company It's the professional services company behind OpenQM The only difference between the VMware plug-in and the other virtualization plug-ins is that The VMware plug-in does not care about deployment of your virtualization host which means a GSX or VMware server or ESX Why not? We found out that we we want to support VMware server, which is basically the GSX and we want also to support ESX and to make ESX net booting It's Actually, it's not supported by VMware itself as far as I know so we also based this on the we based this on the VMware API and The VMware plug-in supports NFS and iSCSI deployment type plus local deployment So within VMware you can have your local disk if you want I Recommend not to use local disk at all. So basically this is a common setup from Workmate from me he's Providing also professional services for OpenQM and doing installations and maintenance for Customers this is a web hosting setup. He's using its one OpenQM server with Running the service the server mission is running on NFS and Everything is booted via PXE and Yes, just one Stand-by virtualization hosts so in case one of the DOM zero a B or C or D crashed it OpenQM will automatically Notice that and rapidly redeploy the DOM zero stand-by move the partitions from Server one to the stand-by server. Okay, so this is a bit more advanced setup Yeah, basically it's A big rate system a storage server manage directly interface with OpenQM which provides a lot or lots of Send virtualization hosts Which are then used for the different Departments or from the for the customer its research IT there are a huge number of regular Clients 350 clients using the virtual machines inside this data center setup So since this is a developer conference. I Also would like to give some overview about Is it how what? What we what needs to be done to implement a new virtualization type for OpenQM so in general They're just two classes to implement in Java Quite easy For example now the extent plug-in The code for the plug-in is using the namespace in the line about below the namespace What do you need to what needs to be done is to implement? Send partition bridge this is for every virtualization type you need to implement the generic partition bridge of OpenQM with that specific Features and differences for the virtualization type it means the the the extent partition bridge basically maps the Administrative command of OpenQM to the virtual machine commands via the XM utility and It then runs the virtual machine commands on behalf of the virtualization host the virtual machine is running on so we also thought about Putting in this third-party libraries like libvert which also which tries to achieve the same goals as OpenQM At the point we started with that libvert was not really usable usable except for except for Xen virtualization type so now it's Bit more improving and we will think about reconsidered for the next implementation The second class what you need to implement is the Xen MAC address provider. This basically generates Generates Random and unique MAC addresses For your new partitions because when you create a new partition, you also need to create a new virtual network interface This is basically the only unique part So this is the It's pseudo code so don't compile it It's this is the implementation of the Xen partition bridge bridge it as I mentioned it extends the base partitioning obstruction layer inside OpenQM This is the example of the start start command or start from off command it If it finds the The virtualization host for the virtual machine and then run the start partition command on the node with the With the resource attached So the start partition command I have to Get on a bit faster don't have so much time anymore the start partition command is basically it runs the a script on the virtualization host which then with some Command land options which are then doing the job basically creating a new which is a new Xen configuration file running Xm configuration file start and to bring up the partition So the other class what we need to implement was the Xen MAC address provider. This is basically how Mac addresses are generated in OpenQM from a template so each virtualization type has its Mac address base which is then being used to generate Mac addresses from so as I mentioned This is pseudo code cut and paste it from our source and it may not compile Exactly like this, but this is basically how it how MAC addresses are created. So summary in conclusion We have an open architectured fully pluggable data center management system with OpenQM We have a we made it fully pluggable to Let you easily contribute to it by writing new plugins for it. It's a well-defined plug-in API OpenQM itself conforms to different virtualization technologies First we are net boarding and via the generic partition layer inside the base server What we benefit from is a completely transparent resource management Physical boxes virtual machines on one side server images my root file systems and applications on the other side And I just can deploy on whatever I want either physical or virtual machines Yeah, and as I as I said the plug-in development is Made very easy for you developers We just have to implement two classes to get a new virtualization type into into OpenQM. That's it So the future moment we will of course focus even more on virtualization next on the list of plugins we need to we want to create is open vz virtual box on which also and and What we also Think about is to give more options for the user for each virtualization technology inside the plug-in configuration page so And I would like to announce a major sub project in the OpenQM community We had lots of feedbacks from the community and this helped us to Create focus and evaluate the current state of OpenQM, and we definitely want to port it to your PHP now We want to go away from the Java from the big Java engine. We want to port it to PHP in this actor. This did this Development just started and it's being very active recently So your code and contribution is of course welcome if you are a good PHP or so or if you are interested in Virtualization and have some free time and fun to contribute just contact me and we will of course find some interesting task for you Here how you find the OpenQM project on the on the internet. It's a project on SourceForge and My email address if you want to contact me directly And it's now time for your questions Any questions? The question is how do you how do OpenQM reboot physical machines, right? We have Since everything is deployed through netboot We have an automatic mechanism mechanism which starts two little demons on each server managed by OpenQM one is a small monitoring demon which Sequently sends money in the monitoring statistics to the from this from this system to the OpenQM server and the other is remote execution demon which is based on an IP address Authentication so that the OpenQM server can run Administrative commands on the on all managed servers. So basically we send a reboot command via this Execution team and the the system itself will run reboot Yes, yes, this is one method when the monitoring statistics are not being sent in a Certain interval OpenQM will Get to know that this system is down. Of course for enhanced monitoring System and application monitoring we recommend the Nagios plugin which is basically doing the same but on a much final level and The thing is that the Nagios arrows. I'm out of time. I have to stop with the Nagios arrows are Brought through the OpenQM engine with with then can react to that so If you have any more questions just come to my to me In front of the door and I will be happy to answer them many. Thanks for your attention