Schon lange sind auch preiswerte Server in der Lage, mehr als eine Anwendung auszuführen. Was mit teuren Mainframe-Systemen bereits in den 70er Jahren anfing, ist seit einigen Jahren von klassischer x86-Hardware fortgesetzt worden. Multicore-Systeme mit genügend Speicher können heute problemlos eine handvoll virtuelle Serversysteme ausführen. Das reduziert nicht nur Strom- und Platzkosten, sondern erleichtert auch das Handling der einzelnen Systeme. Der andauernde Konkurenzkampf zwischen VMWare, Citrix und nicht zuletzt Microsoft haben die Feature-Listen der kostenlosen Einstiegsversionen in den letzten Jahren immer länger werden lassen. Für kleine Firmen dürfte die freie Xenserver-Version ausreichen. Wer automatische Speicherzuweisung, Hochverfügbarkeitsoptionen und ein erweitertes Reporting- und Meldesystem benötigt, kommt mit der knapp 750 Euro pro Server teuren Advanced Version bereits sehr weit. Wer sowohl Windows- als auch Linux-Systeme virtualisieren möchte, ist mit der aktuellen Version von Xenserver gut beraten. Interessierte finden unter den Links [3] bis [9] jede Menge weiterführenden Lesestoff im Netz. Damit Sie sie nicht abtippen müssen, besuchen Sie einfach die ADMIN-Website http://www.admin-magazin.de , wo Sie nur auf die Links klicken müssen.
Listing 1
Xenserver-API
package de.pm.xenserver.test; import java.net.URL; import java.util.Map; import com.Xensource.xenapi.Connection; import com.Xensource.xenapi.Host; import com.Xensource.xenapi.Session; import com.Xensource.xenapi.Task; import de.pm.xenserver.utils.Server; public class TestAPI { /** * @param args */ public static void main(String[] args) throws Exception { if (args.length != 3 && args.length != 5) { System.out.println("Expected arguments: <host> <username> <password> [nfs server] [nfs path]"); return; } Server server = new Server(args[0], args[1], args[2]); URL url = new URL("http://" + server.getHostname()); final Connection con = new Connection(url); Session session = Session.loginWithPassword(con, server.getUsername(), server.getPassword(), "1.3"); Host host = session.getThisHost(con); Map<Host, Host.Record> allhostrecs = host.getAllRecords(con); System.out.println("got: " + allhostrecs.size() + " records"); if (allhostrecs.size() > 0) { System.out.println(allhostrecs.values().toArray()[0].toString()); } Map<Task, Task.Record> allrecords = Task.getAllRecords(con); System.out.println("got: " + allrecords.size() + " records"); if (allrecords.size() > 0) { System.out.println(allrecords.values().toArray()[0].toString()); } Session.logout(con); } }
Infos
Eine Reihe von Features werden jetzt nur noch in der kommerziellen Version von XenServer verfügbar sein.