ErweiterungderD‐GridBasisfürdie kommerzielleNutzung KonzeptfürdasInformationssystem Koordination Andreas Eberhart ([email protected]) Datum 04. Juli 2011 Version 1.00 Status Final Referenz http://www.irf.tu‐dortmund.de/cms/de/IT/Projekte/D‐Grid_IaaS/D‐ Grid_IaaS_Informationssystem_Konzept.pdf Konzept für das Informationssystem 4 Juli 2011 Autoren: Stefan Freitag (Technische Universität Dortmund) Das diesem Bericht zugrunde liegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 01IS10019B gefördert. Die Verantwortung für den Inhalt die‐ ser Veröffentlichung liegt bei den Autoren. Seite2 Konzept für das Informationssystem 4 Juli 2011 Inhaltsverzeichnis Informationsdienst ............................................................................................................................................ 5 Informationsdienst des eCloudManagers ..................................................................................................... 5 Installation von CLI .................................................................................................................................... 5 Abfrage von Informationen ....................................................................................................................... 6 GLUE 2.0 ...................................................................................................................................................... 11 Aufbau des Schemas ................................................................................................................................ 11 Admin ...................................................................................................................................................... 11 Computing ............................................................................................................................................... 14 Der geoMaint‐Sensor .................................................................................................................................. 21 Erweiterung der Datei site.conf .............................................................................................................. 22 Adapter‐Architektur .................................................................................................................................... 23 Extraktion ................................................................................................................................................ 23 Transformation ........................................................................................................................................ 24 Load ......................................................................................................................................................... 25 Abbildung von Attributen ............................................................................................................................ 26 AdminDomain .......................................................................................................................................... 26 AdminDomainLocation ............................................................................................................................ 26 AdminDomainContact ............................................................................................................................. 27 ComputingService .................................................................................................................................... 27 ComputingManager ................................................................................................................................. 28 ComputingShare ...................................................................................................................................... 29 Endpoint .................................................................................................................................................. 31 Weitere Arbeiten ............................................................................................................................................. 32 D‐MON Installation in eine virtuelle Maschine ........................................................................................... 32 Installation des Basisbetriebssystem ....................................................................................................... 32 Installation der Java‐Umgebung .............................................................................................................. 32 Installation von Apache Ant .................................................................................................................... 33 Installation von MySQL Cluster ............................................................................................................... 33 Installation der GLUE 2.0 Datenbanken in MySQL .................................................................................. 34 Installation des eCloudManager Proxy WebServices ...................................................................................... 34 Ausführen des Webservice .......................................................................................................................... 35 Installationsanleitung des WebService Clients ................................................................................................ 36 Integration des Clients als D‐MON Adapter ................................................................................................ 37 Seite3 Konzept für das Informationssystem 4 Juli 2011 Extraktion ................................................................................................................................................ 37 Transformation ........................................................................................................................................ 38 Auslesen der Datei monlist.txt ................................................................................................................ 38 Seite4 Konzept für r das Informaationssystem m 4 Juli 2011 Informa ationsdienst Im D‐Grid stellt der D‐M MON‐Dienst den zentraleen Informationsdienst da ar. Die bisheer im D‐Grid vertretenen n olkit sowie U UNICORE verfügen mit d dem BDII, M DS und CIS über jeweilss Grid Middleewares gLitee, Globus Too eigene Informationsdienste, die D‐M MON durch ssog. Adapterr (je einer pro o Middlewarre) periodiscch abgefragt.. er SQL‐Datennbank ab. Die Ergebnisse dieser Abfragen speichert D‐MO N im Hinterggrund in eine ndes Portal (http://d‐mon.d‐grid.de e/gridsphere//gridsphere)) sind diesee Über ein aauf GridSpheere‐basieren Daten für in nteressierte V VO‐Mitgliede er visuell darrstellbar. Für die Einbindung einer neuen Grrid oder Clooud Middlew ware in den D‐Grid Softw warestack ist neben derr waltung ebeenso eine Inttegration in d den D‐MON Information nsdienst not‐‐ Integration in die D‐Grid Nutzerverw dingt durch die interne A Architektur vvon D‐MON ist dies am besten durcch die Entwiccklung einess wendig. Bed weiteren Ad dapters realisierbar. Vor der Enttwicklung eines neuen D D‐MON Adappters wurden verschiede ene Komponnenten unterrsucht. Dazu u gehörten deer Informatio onsdienst de es eCloudMaanagers, das zu verwendende GLUE 22.0‐Informattionsschemaa und der geo oMaint‐Sensor wie er in G Globus Toolkkit 4 eingese etzt wird. Informattionsdien nstdeseClloudMana agers Der Informaationsdienst des eCloudM Managers sttellt nach außen eine Me enge von Infformationen (z. B. Daten n über die virtuelle Mascchinen, physsische System me und den n gesamten Cluster) zur Verfügung, die auf derr Kommando ozeile angezzeigt oder später übber das D‐MON‐Werkzzeug abgeruufen werde en können.. Diese im o object store des eCloud dManagers bbefindlichen Daten sind d über das CLI‐Werkzeu ug als XML‐‐ formatiertee Information nen abgreifb bar. Das Weerkzeug selbst befindet sich unterhaalb des eClo oudManagerr Installationssverzeichnissses eCloudM Manager/feccm und heißt cli. Installatio onvonCLI Das CLI wird bei der Insstallation de es eCloudMaanagers mitin nstalliert. Fü ür die Verweendung mit D D‐MON wird d udManager llauffähige Veersion des C CLI benötigt. Diese verbinndet sich du u den einzel‐‐ eine separaat vom eClou nen eCloudManager Ressourcen und fragt dort die Informattionen ab. Nachfolgend ist ein bash‐Skript geze eigt, welche zur Ausführu ung des CLI g genutzt werdden kann #!/bin/bash Seite5 Konzept für das Informationssystem 4 Juli 2011 BASE_DIR=`pwd`"/" function setClassPath() { CLASSPATH=${BASE_DIR}"lib/vim/vim25.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/commons-discovery-0.2.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/jaxrpc.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/commons-logging-1.0.4.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/axis.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fcoremgmt.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/query/JoSQL-1.9.jar;:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fbase.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fiwbcom.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/sesame/openrdf-sesame-2.3.2-onejar.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/commons/commons-cli-1.0.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/json/json.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/groovy/groovy-all-1.5.7.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/groovy/jline-0.9.94.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/log4j/log4j-1.2.16.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/xml/xstream-1.2.2.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/xml/xpp3_min-1.1.3.4.O.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fecm.jar:$CLASSPATH" export CLASSPATH } setClassPath java -Dcom.fluidops.api.Parse=com.fluidops.iwb.api.CliParser Dcom.fluidops.api.Bootstrap=com.fluidops.api.EndpointImpl -cp $ CLASSPATH com.fluidops.api.Cli2 --login <USER><PASSWORD> --host <HOST_IP> AbfragevonInformationen Abhängig von der mit dem Werkzeug auszuführenden Operation kann eine Autorisierung erforderlich sein. Diese erfolgt durch die Angabe des Nutzers sowie seines Passwortes hinter dem Schalter ‐‐l. myMethod kennzeichnet hierbei die auszuführende Operation. cli --l user pass myMethod Die Abfrage der Informationen bzgl. eines einzelnen Hosts erfolgt unter der Angabe des Enclosures bzw. des Masters sowie des Hostnamens. cli lookup -pojo {class:com.fluidops.coremgmt.common.model.Host,enclosure:'http://129.217.162.11',name:'bd ii01'} Als Ergebnis bekommt man folgende Ausgabe <com.fluidops.coremgmt.common.model.Host> <name>bdii01</name> <uuid>003090f2-17f0-8a65-d0e3-fec2457cf585</uuid> <memory>1073741824</memory> <numCpus>1</numCpus> Seite6 Konzept für das Informationssystem 4 Juli 2011 <lunUuids> <string>1d9f693a-b866-4e01-819f-c88a70fc184f</string> </lunUuids> <vmHost>host-001</vmHost> <hostType>VM</hostType> <power>poweredOn</power> <os>bdii01</os> <enclosure>http://129.217.162.11</enclosure> Enclosure Abfrage der Informationen über ein Enclosure lookup -pojo {class:com.fluidops.coremgmt.common.model.Enclosure,address:'http://129.217.162.11'} Antwort <com.fluidops.coremgmt.common.model.Enclosure> <address>http://129.217.162.11</address> #Adresse <type>Xen</type> #Virtualisierungssoftware (Xen, VMware) <computeCpu/> <computeMem/> <computeCpuUsed/> <computeMemUsed/> <createdBy> <string>grid.tu-dortmund.de-1</string> #Provider </createdBy> <finalID>Enclosure/byAddress/http%3A%2F%2F129.217.162.11</finalID> <tags> <string>xen.gif</string> </tags> <userEdits/> <managementURL>http://129.217.162.11</managementURL> #Management URL <lastUpdateTime>2011-01-07 09:51:22.782 CET</lastUpdateTime> #Zeitpunkt der letzten Aktualisierung <lastUpdateDuration>7145</lastUpdateDuration> </com.fluidops.coremgmt.common.model.Enclosure> VirtuelleMaschine Abfrage der Informationen lookup -pojo {class:com.fluidops.coremgmt.common.model.Host,enclosure:'http://129.217.162.11',name:'bd ii01'} Antwort <com.fluidops.coremgmt.common.model.Host> <name>bdii01</name> <uuid>003090f2-17f0-8a65-d0e3-fec2457cf585</uuid> <memory>1073741824</memory> <numCpus>1</numCpus> Seite7 #Name der virtuellen Maschine #Zugewiesener Hauptspeicher #Anzahl CPUs Konzept für das Informationssystem 4 Juli 2011 <lunUuids> <string>1d9f693a-b866-4e01-819f-c88a70fc184f</string> </lunUuids> <vmHost>host-001</vmHost> <hostType>VM</hostType> <power>poweredOn</power> <os>bdii01</os> <enclosure>http://129.217.162.11</enclosure> <freezeStates/> <pool>/xen/grid.tu-dortmund.de/Virtual Machines</pool> <configname>bdii01</configname> <description></description> <cpuPerf/> <memPerf/> <isTemplate>false</isTemplate> <networkdevices> <com.fluidops.coremgmt.common.model.Host_-NetworkDevice> <mac>62:59:d7:bd:34:ef</mac> <connectionstate>true</connectionstate> </com.fluidops.coremgmt.common.model.Host_-NetworkDevice> </networkdevices> <moref>003090f2-17f0-8a65-d0e3-fec2457cf585</moref> <computeMemorySizePromisedToRunningVms/> <createdBy> <string>grid.tu-dortmund.de-1</string> </createdBy> <finalID>Host/byName/http%3A%2F%2F129.217.162.11/bdii01</finalID> <tags> <string>vm.jpg</string> </tags> <userEdits/> <lastUpdateTime>2011-01-07 10:01:25.67 CET</lastUpdateTime> letzten Aktualisierung <lastUpdateDuration>7316</lastUpdateDuration> </com.fluidops.coremgmt.common.model.Host> #Execution Host #Host Typ #Provider #Zeitpunkt der PhysischerHost Abfrage lookup -pojo {class:com.fluidops.coremgmt.common.model.Host,enclosure:'http://129.217.162.11',name:'ho st-001'} Antwort: <com.fluidops.coremgmt.common.model.Host> <name>host-001</name> <uuid>fb4b67ea-c2e3-49dd-ae53-5016f30d8ff2</uuid> <manufacturer>XenServer 5.6.0</manufacturer> Seite8 Konzept für das Informationssystem 4 Juli 2011 <model>{product_version=5.6.0, build_number=31188p, hostname=cheesy-2, hg_id=0192acf270bd, date=2010-05-20, linux=2.6. 27.42-0.1.1.xs5.6.0.44.111158xen, xencenter_max=1.7, xencenter_min=1.7, xs:xenservertransfer-vm=XenServer Transfer VM, version 5.6.0, build 31188p, xen=3.4.2, product_brand=XenServer, xapi=1.3, xs:main=Base Pack, version 5.6.0, build 31188 p, dbv=2010.0521}</model> <memory>4294410240</memory> <memoryUsed>3704016896</memoryUsed> <numCpus>4</numCpus> <numCpusUsed>0.0</numCpusUsed> <hostType>VMHOST</hostType> <hostname>localhost.localdomain(host-001)</hostname> <power>true</power> <enclosure>http://129.217.162.11</enclosure> <freezeStates/> <cpuSpeed>1995</cpuSpeed> <description>Default install of XenServer</description> <cpuPerf/> <memPerf/> <networkdevices> <com.fluidops.coremgmt.common.model.Host_-NetworkDevice> <mac>00:16:36:a2:33:56</mac> <ipAddress> <string>129.217.162.1</string> </ipAddress> <mask>255.255.255.0</mask> <vlan>-1</vlan> <connectionstate>true</connectionstate> </com.fluidops.coremgmt.common.model.Host_-NetworkDevice> <com.fluidops.coremgmt.common.model.Host_-NetworkDevice> <mac>00:16:36:a2:33:58</mac> <ipAddress> <string></string> </ipAddress> <mask></mask> <vlan>-1</vlan> <connectionstate>true</connectionstate> </com.fluidops.coremgmt.common.model.Host_-NetworkDevice> </networkdevices> <ipAddress>129.217.162.1</ipAddress> <moref>fb4b67ea-c2e3-49dd-ae53-5016f30d8ff2</moref> <computeMemorySizePromisedToRunningVms/> <hbas> <com.fluidops.coremgmt.common.model.hba.HbaISCSI> <iScsiIqn>iqn.2010-10.com.example:83a3c521</iScsiIqn> <bindings/> Seite9 Konzept für das Informationssystem 4 Juli 2011 <sendTargets/> </com.fluidops.coremgmt.common.model.hba.HbaISCSI> </hbas> <createdBy> <string>grid.tu-dortmund.de-1</string> </createdBy> <finalID>Host/byName/http%3A%2F%2F129.217.162.11/host-001</finalID> <tags> <string>vmhost.jpg</string> </tags> <userEdits/> <lastUpdateTime>2011-01-07 10:21:26.937 CET</lastUpdateTime> <lastUpdateDuration>7254</lastUpdateDuration> </com.fluidops.coremgmt.common.model.Host> Seite 10 Konzept für r das Informaationssystem m 4 Juli 2011 GLUE2.0 0 Die GLUE‐Spezifikation beschreibt e ein Informattionsmodell, welches spe eziell für Enttitäten aus d dem Bereich h des Grid‐Computing entworfen e wurde. w Die derzeitige Version derr Spezifikatiion ist unte er der URLL http://schhemas.ogf.org/glue/2 2008/05/speec_2.0_d42_ _r01 abrufb bar. Der CIS‐‐Information nsdienst von n UNICORE 6 verwendet b bereits diese es Schema. deten Tabellen aus dem Schema besschrieben. Nachfolgend sind der Aufbau des Scchemas bzw.. die verwend AufbaudesSchemas Abbildung 1 A Aufbau des GLU UE 2.0 Schemass, Quelle: www w.gridforum.org g/documents/G GFD.147.pdf Admin den einzelne n Tabellen sttammen auss dem OGF‐D Dokument zu u GLUE 2.0. Die nachfolggenden Erkläärungen zu d AdminDom main The AdminD Domain classs is introduce ed to model a collection of actors that manage aa number of services. An n AdminDomain MAY be associated tto both Conttact and Locaation class in nstances in oorder to provide contactt n and geograaphical locattion respectivvely. An Adm minDomain MAY be com mposed by other Admin‐‐ information Domains in a hierarchical structure. ID name description varchar (255) not null,# UNIQ QUE ID varchar (255), # Huma an-readable name varchar (255), # Desc cription of the domain (free for- Seite 11 Konzept für das Informationssystem 4 Juli 2011 mat) distributed integer (1), # True if the services managed by the AdminDomain are considered geographically distributed by the administrators themselves. adminDomainID varchar (255), # The ID of another AdminDomain entry to express the participation of this entry into the higher level one. informationProvider varchar (10) not null, # sourceAddr varchar (39) not null, # insertTime timestamp not null, # constraint pk_AdminDomain primary key (ID,informationProvider) BeispielfürdasAusfüllenderAdminDomain INSERT INTO GLUE20.AdminDomain(ID,name,description,distributed,adminDomainID,informationProvider,sour ceAddr ,insertTime) VALUES ( "gt4.gwdg.de", "Globus GRID at GWDG", "Globus GRID services at GWDG", "0", "gt4.gwdg.de", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE ID = VALUES(ID), name = VALUES(name), description = VALUES(description), distributed = VALUES(distributed), adminDomainID = VALUES (adminDomainID), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime); AdminDomainLocation The Location class is introduced to model geographical locations where a certain Domain or Service are placed. The aim is to provide a simple way to express geographical information, and it is not intended to be used in complex geographical information systems. Due to different requirements, the granularity is not strictly defined and is left to the information producers depending on their needs. Hence the extent of a geographical location can vary from an exact position to a region spanning several different countries, not necessarily adjacent. adminDomainID localID name address place country postcode longitude varchar(255) not null, # The ID of the parent entry varchar(128) not null, # UID varchar(255) not null, # Human-readable name varchar(128), # Street address (free format) varchar(64), # Name of town/ city varchar(32), # Name of the country varchar(16), # Postal Code float, # Longitude Seite 12 Konzept für das Informationssystem 4 Juli 2011 latitude float, # Latitude informationProvider varchar(10) not null, # Information Provider (e.g. MDS4, BDII) sourceAddr varchar(39) not null, # insertTime timestamp not null, # CURRENT_TIMESTAMP constraint pk_AdminDomainLocation primary key (adminDomainID,localID,informationProvider) BeispielfürdasAusfüllenderAdminDomainLocation INSERT INTO GLUE20.AdminDomainLocation (adminDomainID,name,place,country,address,postcode,longitude,latitude,informationProvider,sourceA ddr,insertTime) VALUES ( "gt4.gwdg.de", "Globus GRID at GWDG", "Goettingen", "Goettingen", "Goettingen", "Goettingen", "9.97116", "51.562742", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE adminDomainID = VALUES(adminDomainID), name = VALUES(name), place = VALUES(place), country = VALUES(country), address = VALUES(address), postcode = VALUES(postcode), longitude = VALUES(longitude), latitude = VALUES(latitude), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime); AdminContact The Contact class is introduced to represent contact information for different groups or expert roles re‐ sponsible for aspects of the operation of services and domains (e.g., user support, security or sysadmin). The various types of contact are identified by the Type attribute. adminDomainID localID url type informationProvider sourceAddr varchar(255) not null, varchar(128) not null, varchar(255) not null, varchar(50) not null, varchar(10) not null, varchar(39) not null, Seite 13 # LocalID_t # # Type of contact (ContactType_t) # # Konzept für das Informationssystem 4 Juli 2011 insertTime timestamp not null, # constraint pk_AdminContact primary key (adminDomainID,localID,informationProvider) BeispielfürdasAusfülleneinesAdminContact INSERT INTO GLUE20.AdminContact (adminDomainID,localID,url,type,informationProvider,sourceAddr,insertTime) VALUES ( "gt4.gwdg.de", "sysadmin", "gt4admin [at] gwdg.de", "sysadmin", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE adminDomainID = VALUES(adminDomainID), localID = VALUES(localID), url = VALUES(url), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime); Computing ComputingService The ComputingService class is a specialization of the Service class for a service offering computational ca‐ pacity. The ComputingService entity is the main logical unit, and aggregation point for several entities to‐ gether modeling a computing capability in a Grid system. A ComputingService is capable of executing Com‐ putingActivities on its associated resources. The resources behind the ComputingService are described via the ComputingManager, ExecutionEnvironment, ApplicationEnvironment, ApplicationHandle and Bench‐ mark entities. The governing policies and status of the resources are given by the ComputingShare ele‐ ments. The ComputingActivities of a ComputingService are submitted and controlled via a Compu‐ tingEndpoint. ID name type qualityLevel complexity totalJobs runningJobs waitingJobs stagingJobs suspendedJobs preLRMSWaitingJobs domainID minDomain varchar (255) not null, varchar (255), varchar(128) not null, varchar (32) not null, varchar (64), integer, integer, integer, integer, integer, integer, varchar (255) not null, Seite 14 -- A system wide uniqueID -- ServiceType_t -- QualityLevel_t -------- [job] [job] [job] [job] [job] [job] The (foreign) key to its Ad- Konzept für das Informationssystem 4 Juli 2011 informationProvider varchar (10) not null, sourceAddr varchar (39) not null, insertTime timestamp not null, constraint pk_ComputingService primary key (ID,informationProvider) BeispielfürdasAusfülleneinesComputingService INSERT INTO GLUE20.ComputingService (ID,name,type,runningJobs,waitingJobs,totalJobs,domainID,informationProvider,sourceAddr,i nsertTime) VALUES ( "gt4.gwdg.de", "gt4.gwdg.de", "org.teragrid.ws-gram", "0", "0", "0", "gt4.gwdg.de", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE ID = VALUES(ID), runningJobs = VALUES(runningJobs), waitingJobs =VALUES(WaitingJobs), totalJobs = VALUES(totalJobs), name = VALUES(ID), insertTime = VALUES(insertTime); ComputingManager The ComputingManager class is a specialization of the Manager class for the computational capability. The ComputingManager is responsible for the local control of resources, and this layer is not exposed directly to external clients. The operating system might be the simplest case of a Computing Manager, but the Compu‐ tingManager is often realized by means of a Local Resource Management (LRMS) “batch” system. A Com‐ puting Service will usually only have one Computing Manager, but MAY have more. The class provides ag‐ gregated information on controlled resources, and also describes local storage extents accessible to jobs. serviceID ID name type version reservation bulkSubmission totalPhysicalCPU totalLogicalCPUs totalSlots slotsUsedByLocalJobs slotsUsedByGridJobs homogeneity varchar (255) not null, varchar (255) not null, varchar (128), varchar (64) not null, varchar (16), integer (1), integer (1), integer, integer, integer, integer, integer, integer, Seite 15 -- The service it belongs to -- ComputingManagerType_t -- Boolean -- Boolean ----- [slot] [slot] [slot] Boolean Konzept für das Informationssystem 4 Juli 2011 networkInfo varchar (255), -- NetworkInfo_t localCpuDistribution varchar (255), workingAreaShared integer (1), -- Boolean workingAreaTotal integer, -- [GB] workingAreaFree integer, -- [GB] workingAreaLifeTime integer, -- [sec] cacheTotal integer, -- [GB] cacheFree integer, -- [GB] tmpDir varchar (255), scratchDir varchar (255), applicationDir varchar (255), envLocalID varchar (128) not null, -- LocalID_t applicationEnvID integer not null, -- The application environment ID informationProvider varchar (10) not null, sourceAddr varchar (39) not null, insertTime timestamp not null, constraint pk_ComputingManager primary key (ID,informationProvider) BeispielfürdasAusfülleneinesComputingManager‐Eintrags INSERT INTO GLUE20.ComputingManager (ID,name,type,version,totalPhysicalCPU,serviceID,informationProvider,sourceAddr,insertTim e) VALUES ( "gt4.gwdg.de", "gt4.gwdg.de", "PBS", "2.1.6", "14", "gt4.gwdg.de", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE ID = VALUES(ID), name = VALUES(name), type = VALUES(type), version = VALUES(version), totalPhysicalCPU = VALUES(totalPhysicalCPU), serviceID = VALUES(serviceID), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime); ComputingShare The ComputingShare class is the specialization of the main Share class for computational services. A Com‐ puting Share is a high‐level concept introduced to model a utilization target for a set of Execution Environ‐ ments defined by a set of configuration parameters and characterized by status information. A Compu‐ Seite 16 Konzept für das Informationssystem 4 Juli 2011 tingShare carries information about “policies” (limits) defined over all or a subset of resources and de‐ scribes their dynamic status (load). In clusters managed by a batch system (LRMS), the simplest way to set up a Computing Share is to config‐ ure a batch queue. Nevertheless, the same Computing Share may be implemented using different batch system configuration strategies. In complex batch systems, a batch queue may be configured with different sets of policies for different sets of users. This implies that each set of users obtains a different utilization target. Such a scenario MAY be represented by different Computing Shares. In general, given a number of shares to be set up, it is possible to adopt different configuration strategies in the underlying system. Re‐ gardless of the selected approach, the external behavior does not change. The main goal of the Computing Share concept is to abstract from such implementation choices and to represent the externally observable behavior. serviceID longs to localID in the scope of the service name description mappingQueue maxWallTime maxTotalWallTime minWallTime defaultWallTime maxCPUTime maxTotalCPUTim minCPUTime defaultCPUtime maxTotalJobs maxRunningJobs maxWaitingJobs maxPreLRMSWaitingJobs maxUserRunningJobs maxSlotsPerJobs maxStageInStreams maxStageOutStreams schedulingPolicy maxMemory maxDiskSpace preemption servingstate totalJobs runningJobs localRunningJobs waitingJobs localWaitingJobs stagingJobs suspendedJobs varchar (255) not null, -- The ID of the Service it be- varchar (128) not null, -- LocalID_t, A local identifier varchar (255), varchar(255), varchar(128), integer, -- [sec] integer, -- [sec] integer, -- [sec] integer, -- [sec] integer, -- [sec] integer, -- [sec] integer, -- [sec] integer, -- [sec] integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [stream] integer, -- [stream] varchar (32), -- schedulingPolicy_t integer, -- [MB] integer, -- [GB] integer (1), -- Boolean varchar (32) not null, -- servingState_t integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [job] integer, -- [job] Seite 17 Konzept für das Informationssystem 4 Juli 2011 preLRMSWaitingJobs integer, -- [job] estimatedAverageWaitingTime integer, -- [sec] estimatedWorstWaitingTime integer, -- [sec] freeSlots integer , -- [slot] freeSlotsWithDuration integer, -- [slot] usedSlots integer, -- [slot] requestedSlots integer, -- [slot] reservationPolicy varchar (64), -- ReservationPolicy_t defaultSService varchar (255), -- The ID of the default Storage Service to use informationProvider varchar (10) not null, sourceAddr varchar (39) not null, insertTime timestamp not null, check (reservationpolicy in ('none', 'mandatory', 'optional')), constraint pk_ComputingShare primary key (serviceID,localID,informationProvider) BeispielfürdasAusfülleneinesComputingShare‐Eintrags INSERT INTO GLUE20.ComputingShare (serviceID,localID,mappingQueue,runningJobs,totalJobs,waitingJobs,informationProvider,sourceA ddr,insertTime) VALUES ( "gt4.gwdg.de", "dgiseq", "dgiseq", "40", "40", "0", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE serviceID = VALUES(serviceID), localID = VALUES(localID), mappingQueue = VALUES(mappingQueue), runningJobs = VALUES(runningJobs), totalJobs = VALUES(totalJobs), waitingJobs = VALUES(waitingJobs), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime) ApplicationEnvironment The ApplicationEnvironment class describes the software environment in which a job will run, i.e. what pre‐ installed software will be available to it. Each Application is identified by a name (the AppName attribute); these names are not defined within the schema, but SHOULD be assigned in a way which allows applica‐ tions to be uniquely identified. In some deployment scenarios, the definition of namespace‐based Ap‐ pNames or guidelines for the generation of unique application names MAY be specified, and application repository services relying on those application names MAY be provided. This aspect is considered out of Seite 18 Konzept für das Informationssystem 4 Juli 2011 scope for the GLUE schema specification, but MAY be included in a profile document for a specific produc‐ tion Grid. The Application Environment can be used to describe installed application software or special environment setups in terms of a simple tag string. In this case, the AppName attribute should be used to publish this tag; other attributes are optional. The properties of installed software may vary substantially, but the at‐ tributes of the class cover the most common cases, in particular for licensed software. If necessary, addi‐ tional information MAY be added using the OtherInfo attribute and the Extension class. serviceID varchar (255) not null, -- The ID of the service this ApplicationEnvironment belongs to localID varchar (255) not null, -- LocalID_t, A local identifier in the scope of the service name varchar (255) not null, version varchar (16), repository varchar (255), state varchar (100), -- AppEnvState_t removalDate datetime, -- DateTime_t license varchar (128), -- License_t description varchar (255), parallelSupport varchar (16), maxSlots integer, -- [slot] maxJobs integer, -- [job] maxUserSeats integer, -- [user seat] freeSlots integer, -- [slot] freeJobs integer, -- [job] freeUserSeats integer, -- [user seat] cManagerID varchar (255) not null, -- The ID of the computing manager where this application environment belongs to (and may be used by) informationProvider varchar (10) not null, sourceAddr varchar (39) not null, insertTime timestamp not null, check (license in ('opensource', 'commercial', 'other', 'unknown')), constraint pk_ApplicationEnvironment primary key (serviceID,localID,informationProvider) Endpoint The Endpoint class models a network location that can be contacted to access certain functionalities based on a well‐defined interface. The defined attributes refer to aspects such as the network location, the ex‐ posed interface name and version, the details of the implementation, the functional state and the sched‐ uled downtime. serviceID service it belongs to ID name the Endpoint varchar (255) not null, -- The ID of the varchar (255) not null, varchar (255), -- The name of Seite 19 Konzept für das Informationssystem 4 Juli 2011 url varchar (255) not null, -- The Endpoint URL technology varchar (255) not null, -- EndpointTechnology_t interface varchar (255) not null, implementor varchar (255), implementationName varchar (255), implementationVersion varchar (255), qualityLevel varchar (32) not null, healthState varchar (32) not null, -- The state of the Endpoint healthStateInfo varchar (255), -- EndpointState servingState varchar (255) not null, -- ServingState_t startTime timestamp default "0000-00-00 00:00:00", -- DateTime_t, The timestamp for the start time of the endpoint issuerCA varchar (255) not null, -- DN_t downTimeAnnounce timestamp default "0000-00-00 00:00:00", -- DateTime_t, The timestamp for the announcement of the next scheduled downtime downTimeStart timestamp default "0000-00-00 00:00:00", -- DateTime_t, The starting timestamp of the next scheduled downtime downTimeEnd timestamp default "0000-00-00 00:00:00", -- DateTime_t, The ending timestamp of the next scheduled downtime downTimeInfo varchar (255), -- Description of the next scheduled downtime informationProvider varchar (10) not null, sourceAddr varchar (39) not null, insertTime timestamp not null default CURRENT_TIMESTAMP, check (qualitylevel in ( 'development', 'testing', 'preproduction', 'production')), check (healthstate in ('ok', 'warning', 'critical', 'unknown', 'other')), check (servingstate in ('production', 'draining', 'queueing', 'closed')), constraint pk_Endpoint primary key (ID,informationProvider) BeispielfürdasAusfüllen INSERT INTO GLUE20.Endpoint (ID, serviceID, informationProvider, sourceAddr, insertTime) VALUES ( "https://gt4.gwdg.de:8443/wsrf/services/ManagedJobFactoryService", "gt4.gwdg.de", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE ID = VALUES(ID), serviceID = VALUES(serviceID), Seite 20 Konzept für das Informationssystem 4 Juli 2011 informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime); ComputingEndpoint The ComputingEndpoint is a specialization of the Endpoint class for a service possessing computational capability. The class represents an endpoint which is used to create, control and monitor computational activities. The computational‐specific information concerns service load related parameters, staging capa‐ bilities and supported types of job description. This class provides attributes that MAY be used to publish summary information about jobs submitted via a particular Endpoint. Such attributes are optional and may not always be measurable (e.g., in the case of a stateless Endpoint which does not keep information about the jobs submitted through it). endpointID varchar (255) not null, -- The ID of the Endpoint entry cServiceID varchar (255) not null, -- The ID of the computing service staging varchar (32), -- Staging_t informationProvider varchar (10) not null, sourceAddr varchar (39) not null, insertTime timestamp not null, constraint pk_ComputingEndpoint primary key (endpointID,cServiceID,informationProvider) BeispielfürdasAusfüllendesComputingEndpoint‐Eintrags INSERT INTO GLUE20.ComputingEndpoint (endpointID, cServiceID, informationProvider, sourceAddr, insertTime) VALUES ( "https://gt4.gwdg.de:8443/wsrf/services/ManagedJobFactoryService", "gt4.gwdg.de", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE endpointID = VALUES(endpointID), cServiceID = VALUES(cServiceID), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime); DergeoMaint‐Sensor Der geoMaint Sensor wird für die Publikation von Positionsdaten sowie weiteren Informationen (z. B. War‐ tungsinformationen) in den Globus MDS4‐basierten Informationsdienst eingesetzt werden. Die Ausgabe von geoMaint hat folgende Gestalt <?xml version="1.0" encoding="UTF-8"?> <Site UniqueID="my.site.net" xmlns="http://infnforge.cnaf.infn.it/glueinfomodel/Spec/V12/R2"> <Description>D-Grid Services at mysite</Description> <Latitude>79.74</Latitude> <Location>unknown</Location> Seite 21 Konzept für das Informationssystem 4 Juli 2011 <Longitude>-71.78</Longitude> <Name>UnconfiguredSite</Name> <OtherInfo>3unconfigured site sensor</OtherInfo> <SecurityContact>[email protected]</SecurityContact> <Sponsor></Sponsor> <SysAdminContact>[email protected]</SysAdminContact> <UserSupportContact>[email protected]</UserSupportContact> <Web>http://www.my.site.net</Web> </Site> Diese Informationen werden aus der Konfigurationsdatei site.conf ausgelesen und in die zuvor gezeigte XML‐Form umgewandelt. Nach einer Analyse der API des eCloudManagers steht fest, dass diese nicht alle für eine Publikation in das D‐MON‐Werkzeug notwendigen Informationen bereitstellt. Dies trifft unter anderem auf die Angaben zu, welche die Globus Toolkit‐Middleware aufgrund der Integration des geoMaint‐Sensors publiziert. Als eine mögliche Lösung dieses Problems bietet sich für den eCloudManager ebenfalls die Verwendung des geo‐ Maint‐Sensors, genauer der dort verwendeten Konfigurationsdatei an. Diese Konfigurationsdatei site.conf besteht aus einer Menge von Schlüssel‐Wert‐Paaren. Nachfolgend ein Beispiel: site.uniqueid=Globus4.0.7 Pre Production@TU_Dortmund site.name=grid.tu-dortmund.de site.description=D-Grid Services at TU Dortmund (GT4.0.7),udo-gt02.grid.tu-dortmund.de [email protected] [email protected] [email protected] site.location=Dortmund site.latitude=51.483434 site.longitude=7.410308 site.web=http://www.tu-dortmund.de site.sponsor=http://www.tu-dortmund.de site.maintenance=0up and running ErweiterungderDateisite.conf Eine mögliche Abbildung der bereits in der Datei site.conf vorhandenen Attribute auf die GLUE 2.0‐ Schema vorhandenen könnte so aussehen: site.conf site.uniqueid site.description site.location site.longitude site.latitude site.securitycontact site.sysadmincontact site.usersupportcontact GLUE 2.0‐Schema AdminDomain.ID AdminDomain.Name AdminDomainLocation.Address AdminDomainLocation.Longitude AdminDomainLocation.Latitude AdminDomainContact AdminDomainContact AdminDomainContact Seite 22 Konzept für r das Informaationssystem m 4 Juli 2011 Des Weitereen wird die D Datei site.c conf um weiitere Variablen ergänzt: site.conf GLUE 2.0‐Schema site.placce AddminDomain nLocation.pla ace site.cou untry AddminDomain nLocation.country site.posstalcode AddminDomain nLocation.po ostalcode Adapter‐‐Architek ktur Eine Übersicht über die allgemeine Architektur iist in der folggenden Abbiildung dargeestellt: udManagers ist ein Webbservice impllementiert, d der die für D D‐MON notw wendigen In‐‐ Auf der Seitte des eClou formationen aus zwei Q Quellen aggre egiert. Die errste Quelle isst der eCloud dManager seelbst. Er wird d über einen n esprochen um m relevante Informationen über z. BB. die verfügb baren physi‐‐ so genannteen BackendSService ange schen Resso ourcen oderr derzeit lauffenden virtu ellen Maschinen zu erha alten. Das inn Information nsdienst dess eCloudMan nagers vorgesstellte Comm mand Line Intterface verw wendet einen n analogen M Mechanismuss. Die zweitee Information nsquelle ist die d erweiterrte Version dder Datei site.conf. Diie aus diesenn Quellen ge esammelten n Information nen sind übeer einen Web bservice‐Cliennt, der in den eCloudManager‐Adaptter für D‐MO ON integriertt ist, abrufbaar. Einzelne EErweiterunge en an den inn D‐MON be ereitgestellte en Skripten ssind nachfolggend für diee einzelnen B Bereiche der Extraktion, T Transformatiion und des persistenten n Speichers bbeschrieben. Extraktion n Die Extraktiion der notw wendigen Daten aus dem m eCloudMan nager erfolgtt unter Verw wendung eine es in Groovyy geschrieben nen Clients. Dieser bin ndet die Bibbliotheken des d eCloudM Managers eiin und kontaktiert dass eCloudMan nager Fronten nd. Die Kommunikation zwischen de em Client und d dem Front end ist SSL‐vverschlüsseltt o muss der Client sich perr Nutzernam me und Passw wort am Fron ntend authenntisieren. und ebenso Innerhalb d des Clients werden w die vom v eCloudM Manager erh haltenen Datten in das eerforderliche Format dess GLUE 2.0‐Schemas geb bracht. Dabe ei sind folge nde Abbildu ungen bzgl. der Computte‐Ressource en getroffen n worden: mputingManager –> BackkendService:: Com Derr ComputingManager istt verantworttlich für die lokale Kontrrolle der Resssourcen und entsprichtt im K Kontext des Grid Compu uting oftmalss einem LRM MS. Des Weitteren stellt dder Managerr aggregiertee Info ormationen über die kontrollierte k n Ressource en bereit. Bezogen auuf den eClo oudManagerr entsspricht der eeCloudManagger‐interne B BackendServvice einen Co omputingMaanager. Com mputingEndp point –> URLL des eCloudM Manager‐Fro ontends: Übeer den Comp putingEndpoint können ssog. ComputtingActivitiess gestartet, kkontrolliert o oder einfach h nur beobachtett werden. Bezogen auf deen eCloudManager entsp pricht ein CoomputingEnd dpoint daherr dem m Zugangspu unkt zum eCloudManage r, also der URL zu dem eCloudManagger‐Frontend d. Seite 23 Konzept für das Informationssystem 4 Juli 2011 ComputingShares –> Cluster des eCloudManagers: Innerhalb eines LRMS kann ein ComputingShare durch die Abbildung auf eine Queue des LRMS realisiert werden. Um dies analog auf Cloud‐Ressourcen nachzubilden, sind die einzelnen an die Cloud angeschlossenen Cluster (repräsentiert durch die URL des jeweiligen Management‐Knotens) als ComputingShares definiert. ComputingService –> Management‐Knoten der verschiedenen Cluster/ Enclosure: Der ComputingService stellt eine Aggregation verschiedener Entitäten dar. Einzelne ComputingActivities können dem ComputingService über den ComputingEndpoint übergeben werden. Die dem ComputingService angegliederten Ressourcen sind durch folgende Komponenten beschrieben: ComputingManager, ComputingShare‐Elemente, ExecutionEnvironment, ApplicationEnvironment, ApplicationHandle und Benchmark Transformation Die vom Web Service‐Client erhaltenen Daten liegen im XML‐Format vor und müssen auf der Seite des D‐ MON Adapters noch in das notwendige Format gewandelt werden. Das notwendige Format ist hier gege‐ ben durch die für D‐MON verwendeten Datenbanken, deren Erzeugung in der Datei Glue20Schema_v41_DMON.sql geregelt ist. Die Transformation der Daten aus dem XML‐Format in SQL‐Statements erfolgt mittels XSLT. Der Einsatz von XSLT erfolgt analog zu dem Vorgehen bei den anderen drei Grid Middlewares. Inner‐ halb der derzeit verfügbaren D‐MON‐Distribution existieren für die Grid Middlewares gLite, Globus Toolkit und UNICORE 6 folgende XSLT‐Dateien: gLite 3.x: bdii.xslt Globus Toolkit 4.x: mds4.xslt UNICORE 6.x: cis.xsl Softwareanforderungen Die minimal notwendige Software zur Durchführung der Transformationen variiert in Abhängigkeit von der Grid Middleware. In allen Fällen ist jedoch das xsltproc‐Paket notwendig. Je nach Middleware sind wei‐ terhin benötigt Globus Toolkit 4.x: wsrf-query gLite 3.2: Perl UNICORE 6: ucc Datentransformationperxsltproc Die eigentliche Transformation der Daten erfolgt für alle drei Grid Middlewares analog. Das xsltproc‐ Kommando wird mit einem Parameter $info_provider_hostname aufgerufen, der während des Trans‐ formationsvorgangs als sourceAddress‐Variable zur Verfügung steht. Als weiterer Parameter wird dem Kommando die zu verwendende XSLT‐Datei in der Variablen $transformer übergeben. Seite 24 Konzept für das Informationssystem 4 Juli 2011 xsltproc --stringparam sourceAddress $info_provider_hostname $transformer - 2>> $LOG_FILENAME Die Ausgabe des xsltproc‐Befehls ist ein SQL‐Statement, welches als Eingabe für das mysql‐Kommando verwendet wird. Nachfolgend ist der gesamte Ablauf gezeigt: xsltproc --stringparam sourceAddress $info_provider_hostname $transformer - 2>> $LOG_FILENAME | mysql $DATA BASE --user=$USER --password=$PASSWORD --host=$HOST --force 2>> $LOG_FILENAME Load Das Laden entspricht dem Einfügen der extrahierten und transformierten Daten in eine MySQL‐Datenbank. Durch die Transformation mittels XSLT (siehe Transformation) sind die Daten bereits in mehrere SQL‐ Statements codiert. Nachfolgend ein Beispiel für SQL‐Statements, die aus dem MDS4 der Globus Toolkit Middleware gewonnen wurden: INSERT INTO GLUE20.AdminDomain(ID,name,description,distributed,adminDomainID,informationProvider,sour ceAddr,insertTime) VALUES ( "gt4.gwdg.de", "Globus GRID at GWDG", "Globus GRID services at GWDG", "0", "gt4.gwdg.de", "MDS4", "gt4.gwdg.de", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE ID = VALUES(ID), name = VALUES(name), description = VALUES(description), distributed = VALUES(distributed), adminDomainID = VALUES (adminDomainID), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime) Dieses SQL‐Statement wurde mit Hilfe folgenden Aussschnitts der XSLT‐Datei für den MDS4 gewonnen: <xsl:template match="//ns:Site"> INSERT INTO GLUE20.AdminDomain(ID,name,description,distributed,adminDomainID,informationProvider,sourceAddr, insertTime) VALUES ( "<xsl:value-of select="./@UniqueID"/>", "<xsl:value-of select="ns:Name/text()"/>", "<xsl:value-of select="ns:Description/text()"/>", "0", "<xsl:value-of select="./@UniqueID"/>", "<xsl:value-of select="$informationProvider"/>", "<xsl:value-of select="$sourceAddress"/>", <xsl:value-of select="$insertTime"/>) Seite 25 Konzept für das Informationssystem 4 Juli 2011 ON DUPLICATE KEY UPDATE ID = VALUES(ID), name = VALUES(name), description = VALUES(description), distributed = VALUES(distributed), adminDomainID = VALUES (adminDomainID), informationProvider = VALUES(informationProvider), sourceAddr = VALUES(sourceAddr), insertTime = VALUES(insertTime); ... </xsl:template> Ein wesentlicher Punkt bei der Transformation der Informationen des eCloudManagers ist die Abbildung dergleichen auf das GLUE 2.0‐Format bzw. die hier verwendeten Attribute. AbbildungvonAttributen AdminDomain AdminDomain‐Attribut Beispiel für GTK 4.0.8 eCloudManager‐Attribut Zuführung ID “gt4.gwdg.de” ‐ site.uniqueid Name “Globus GRID at GWDG” ‐ site.name Description “Globus GRID services at GWDG” ‐ site.description WWW ‐ ‐ site.web Distributed 0 ‐ 0 (fix) AdminDomainLocation AdminDomainLocation‐Attribut Beispiel für GTK 4.0.8 eCloudManager‐Attribut Zuführung ID ‐ Name “Globus GRID at GWDG” ‐ site.name Address “Goettingen” ‐ site.location Place “Goettingen” ‐ site.place Country “Goettingen” ‐ site.country Postcode “Goettingen” ‐ site.postcode Longitude “9.97116” ‐ site.longitude ‐ Seite 26 ? Konzept für das Informationssystem 4 Juli 2011 Latitude “51.562742” ‐ site.latitude AdminDomainContact AdminDomainContact‐ Attribute Beispiel für GTK 4.0.8 eCloudManager‐ Attribute Zuführung ID “sysadmin” ‐ site.conf OtherInfo ‐ ‐ Working hours: 8‐17 (fix) Detail “gt4admin [at] gwdg.de” ‐ site.{admin, user, securi‐ ty}contact Type “sysadmin” ‐ {general, security, sysadmin, usersupport} ComputingService ComputingService‐ Attribute Beispiel für GTK 4.0.8 eCloudManager‐ Attribute Zuführung ID “gt4.gwdg.de” Adresse des Enclosures enclosure.address Name “gt4.gwdg.de” Adresse des Enclosures enclosure.address OtherInfo ‐ ‐ None (fix) Capability ‐ ‐ Execution.jobmanagement (fix) Type “org.teragrid.ws‐ gram” Enclosure‐Typ enclosure.type QualityLevel ‐ ‐ {production, development, pre‐ production, testing} Complexity ‐ ‐ ‐ TotalJobs “42” # laufender & angehal‐ Anzahl isPoweredOn bzw. isSus‐ tener VMs pended VMs RunningJobs “40” # laufender VMs Anzahl isPoweredOn VMs WaitingJobs “2” 0 0 (fix) StagingJobs ‐ ‐ ‐ Seite 27 Konzept für das Informationssystem 4 Juli 2011 SuspendedJobs ‐ Anzahl angehaltener VMs Anzahl isSuspended VMs preLRMSWaitingJobs ‐ ‐ ‐ ComputingManager ComputingManager‐ Attribut Beispiel für GTK eCloudManager‐Attribute 4.0.8 Zuführung ID “gt4.gwdg.de” eCloudManager Name “gt4.gwdg.de” eCloudManager ‐ ‐ eCloudManager Reservation Undefined BulkSubmission Undefined Type “PBS” ‐ ‐ Version “2.1.6” BackendService.version() getAPIVersion() TotalPhysicalCPU “14” Summe über Host.numCpus getTotalNumberOfPhysicalCpus() TotalLogicalCPU ‐ TotalSlots ‐ ‐ ‐ SlotsUsedByLocalJobs ‐ ‐ ‐ SlotsUsedByGridJobs ‐ ‐ ‐ Homogeneity ‐ ‐ ‐ NetworkInfo ‐ ‐ ‐ LocalCpuDistribution ‐ ‐ ‐ WorkingAreaShared ‐ ‐ undefined WorkingAreaTotal ‐ ‐ ‐ WorkingAreaFree ‐ ‐ ‐ WorkingAreaLifeTime ‐ ‐ ‐ ProductName Seite 28 Konzept für das Informationssystem 4 Juli 2011 CacheTotal ‐ ‐ ‐ cacheFree ‐ ‐ ‐ tmpDir ‐ ‐ ‐ scratchDir ‐ ‐ ‐ applicationDir ‐ ‐ ‐ envLocalID ‐ ‐ applicationEnvID ‐ ‐ ComputingShare Ein ComputingShare entspricht einer Queue im PBS. Für den eCloudManager werden alle angeschlossenen Ressourcen zu einem einzigen ComputingShare zusammengefasst. In einer späteren Version kann sich dies ändern, in dem ein ComputingShare dann einer Zone des eCloudManagers entspricht. ComputingShare‐Attribut Beispiel für GTK eCloudManager‐ 4.0.8 Attribute Zuführung serviceID “gt4.gwdg.de” localID “dgipar” name ‐ description ‐ mappingQueue “dgipar” maxWallTime ‐ ‐ ‐ maxTotalWallTime ‐ ‐ ‐ minWallTime ‐ ‐ ‐ defaultWallTime ‐ ‐ ‐ maxCPUTime ‐ ‐ ‐ maxTotalCPUTim ‐ ‐ ‐ MinCPUTime ‐ ‐ ‐ DefaultCPUtime ‐ ‐ ‐ Seite 29 Konzept für das Informationssystem 4 Juli 2011 DefaultCPUtime ‐ ‐ MaxTotalJobs ‐ MaxRunningJobs ‐ MaxWaitingJobs ‐ ‐ ‐ MaxPreLRMSWaitingJobs ‐ ‐ ‐ maxUserRunningJobs ‐ maxSlotsPerJobs ‐ maxStageInStreams ‐ ‐ ‐ maxStageOutStreams ‐ ‐ ‐ schedulingPolicy ‐ ‐ ‐ maxMemory ‐ host.memory ‐ host‐ getMaximumAmountOfRamForVms() memoryUsed maxDiskSpace ‐ preemption ‐ ‐ undefined servingstate ‐ ‐ production totalJobs 2 # laufender & ange‐ isPoweredOn or isSuspended haltener VMs runningJobs 0 # laufender VMs isPoweredOn localRunningJobs ‐ ‐ ‐ waitingJobs 2 ‐ ‐ localWaitingJobs ‐ ‐ ‐ stagingJobs ‐ ‐ ‐ suspendedJobs ‐ # angehaltener VMs isSuspended preLRMSWaitingJobs ‐ ‐ ‐ estimatedAverageWaitingTime ‐ ‐ ‐ Seite 30 ‐ Konzept für das Informationssystem 4 Juli 2011 estimatedWorstWaitingTime ‐ ‐ ‐ freeSlots ‐ ‐ ‐ freeSlotsWithDuration ‐ ‐ ‐ usedSlots ‐ requestedSlots ‐ reservationPolicy ‐ defaultSService ‐ mappingQueue unklar Endpoint Endpoint‐Attribut Beispiel für GTK 4.0.8 eCloudMana‐ Zufüh‐ ger‐Attribute rung serviceID “gt4.gwdg.de” ID “https://gt4.gwdg.de:8443/wsrf/services/ManagedJobFactor yService” name url ‐ technology ‐ interface ‐ implementor ‐ implementation‐ Name ‐ implementationVer‐ ‐ sion qualityLevel ‐ healthState ‐ healthStateInfo ‐ servingState ‐ Seite 31 Konzept für das Informationssystem 4 Juli 2011 startTime ‐ ‐ ‐ issuerCA ‐ ‐ ‐ downTimeAn‐ nounce ‐ ‐ ‐ downTimeStart ‐ ‐ ‐ downTimeEnd ‐ ‐ ‐ downTimeInfo ‐ ‐ ‐ WeitereArbeiten Für Tests wurden lokal notwendige Komponenten von D‐MON in einer virtuellen Maschine installiert. D‐MONInstallationineinevirtuelleMaschine InstallationdesBasisbetriebssystem Als Basisbetriebssystem wurde ein Ubuntu Linux in der Variante Server 10.04 32‐Bit gewählt. Die Installati‐ on des Betriebssystems erfolgt händisch unter der Verwendung folgender Eigenschaften English United States Keyboard de:nodeadkeys Timezone: Europe/Berlin Hostname: dmon Use entire disk (LVM) max for guided partitioning openssh server NAT network InstallationderJava‐Umgebung Für D‐MON wird die Installation einer Java Standard Edition (SE) vorausgesetzt. Hinweis: Da vom Einsatz von Java SE 1.6 aufgrund einer Inkompatibilität zu OGSA‐DAI abgeraten wird, wird hier Java SE Version 1.5 verwendet. 1. Download des Java SE 1.5 in der zuletzt verfügbaren Version jdk-1_5_0_22-linux-i586.bin über die Webseite http://www.oracle.com/technetwork/indexes/downloads/index.html bzw. http://java.sun.com/javase/downloads/5u22/jdk in das Verzeichnis /opt. 2. Die Installation des JAVA SE Version 1.5 erfolgt über cd /opt/ sudo sh jdk-1_5_0_22-linux-i586.bin Akzeptieren der Lizenzbedingungen 3. Erzeugen einer Datei in /etc/profiles.d/, die für das Setzen der Java Umgebungsvariablen zu‐ ständig ist. Seite 32 Konzept für das Informationssystem 4 Juli 2011 sudo vi /etc/profile.d/sun_java.sh export export export export export JAVA_HOME=/opt/jdk1.5.0_22 JAVA_ROOT=/opt/jdk1.5.0_22 JAVA_JRE=/opt/jdk1.5.0_22/jre JAVA_BINDIR=/opt/jdk1.5.0_22/bin PATH=${JAVA_BINDIR}:$PATH InstallationvonApacheAnt Für D‐MON wird eine Installation von Apache Ant in der Version 1.8.0 vorausgesetzt. Die Tests erfolgen mit Apache Ant Version 1.8.1. 1. Herunterladen der Datei http://mirror.netcologne.de/apache.org//ant/binaries/apache‐ant‐1.8.1‐ bin.tar.gz in das Verzeichnis /opt 2. Entpacken der Datei apache-ant-1.8.1-bin.tar.gz cd /opt/ sudo tar xzf apache-ant-1.8.1-bin.tar.gz 3. Erzeugen einer Datei in /etc/profiles.d/, die für das Setzen der Ant Umgebungsvariablen zuständig ist. sudo vi /etc/profile.d/ant.sh export ANT_HOME=/opt/apache-ant-1.8.1 export PATH=${ANT_HOME}/bin:$PATH InstallationvonMySQLCluster Die notwendigen RPMs für MySQL Cluster sind Bestandteil des Ubuntu Software Repositories. Die Installa‐ tion erfolgt mittels sudo apt-get install mysql-cluster-server root Passwort für MySQL setzen Die initiale Konfiguration von MySQL wird durch folgende Befehle gestartet /etc/init.d/mysql start /usr/bin/mysql_secure_installation Eingabe des neuen root Passworts Remove anonymous users -> yes Disallow root login remotely -> yes Remove test database and access to it -> yes Reload privileges table now -> yes postfix -> no configuration Kopieren und Anpassen der von D‐MON bereitgestellten MySQL‐Konfigurationsdatei sudo cp ./sampleConfiguration/my.cnf /etc/mysql/my.cnf sed in /etc/mysql/mysql.cnf /tmp/mysql.sock -> /var/run/mysqld/mysqld.sock Neustart von MySQL /etc/init.d/mysql restart Seite 33 Konzept für das Informationssystem 4 Juli 2011 cd install sh ./install.sh InstallationderGLUE2.0DatenbankeninMySQL 1. Entpacken des dmon‐db.tar.gz‐Archivs nach /tmp tar xzf dmon-db.tar.gz –C /tmp 2. Wechseln in das Verzeichnis /tmp/dmon-db/install cd ./dmon-db/install Dasinstall.shSkripteditierenunddieZugangsdatenfürdieMySQLDatenbankeintragen user='XXXX' password='YYYY' target='localhost' 3. Ob die im install.sh Skript eingetragenen Werte passend sind, kann durch einen manuellen Ver‐ bindungsaufbau zum MySQL Server erfolgen mysql -uXXXX -pYYYY -hlocalhost 4. Ist der Verbindungsaufbau erfolgreich gewesen, kann das install.sh Skript ausgeführt werden ./install.sh Nach dem Durchlaufen des Skripts sollten in MySQL mehrere Datenbanken vorliegen, u.a. eine GLUE20‐Datenbank. 5. Entfernen des temporären Verzeichnisses /tmp/dmon‐db InstallationdeseCloudManagerProxyWebServices Diese Anleitung beschreibt die Installation des Webservice‐Servers. Dieser kann auf dem eCloudManager‐ Frontend oder auch einem separaten Knoten mit dem Betriebssystem Linux installiert werden. Nachfolgend ist die Installation auf einem System mit Ubuntu‐Linux 10.10 mit Bash Version 4.x beschrieben. 1. Installation von Groovy sudo apt-get install groovy groovy-doc 2. Installation von GroovyWS http://snapshots.repository.codehaus.org/org/codehaus/groovy/modules/groovyws/ aus cd ~ wget http://snapshots.repository.codehaus.org/org/codehaus/groovy/modules/groovyws/0.5.3SNAPSHOT/groovyws-0.5.3-20100521.071409-5.jar mkdir -p .groovy/lib mv groovyws-0.5.3-20100521.071409-5.jar .groovy/lib 3. Installation Apache CXF JARs wget http://apache.openmirror.de//cxf/2.4.0/apache-cxf-2.4.0.tar.gz -P ~ tar xzf apache-cxf-2.4.0.tar.gz cp -r apache-cxf-2.4.0/lib ~/.groovy rm -rf apache-cxf-2.4.0.tar.gz apache-cxf-2.4.0/ Seite 34 Konzept für das Informationssystem 4 Juli 2011 4. Herunterladen der Datei webServiceServer.jar in das Zielverzeichnis cd <TARGET_DIR> wget http://<SOME_URL>/webServiceServer.jar 5. Extraktion der JAR‐Archivinhalte in den Zielordner jar xf webServiceServer.jar 6. Es sollten in dem Zielverzeichnis folgende Unterordner existieren: META-INF, lib, src, txt, xsd sowie xslt. Des Weiteren sollte ein Shell‐Skript runServer.sh im Zielverzeichnis liegen. 7. Der Inhalt der Datei site.conf.example ist anzupassen. Dies gilt für die Werte folgender Variablen: site.name, site.description, site.usercontact, site.admincontact, site.securitycontact, site.location, site.latitude, site.longitude, site.web, site.sponsor, site.maintenance, site.address, site.place, site.country, site.postalcode, site.otherinfo. 8. Kopieren der Datei site.conf.example zu site.conf cp src/server/site.conf.example src/server/site.conf 9. In der Datei Client.groovy ist der Kontaktstring unter dem der eCloudManager erreichbar ist abzuändern. Je nach Firewall‐ Konfiguration muss noch der passende Port in der Firewall geöffnet werden. sed -i 's/CHANGE_ECLOUDMANAGER_URL/129.217.162.159/g' src/server/Client.groovy der Name des User Accounts und das Passwort zu setzen mit denen sich der Webservice beim eCloudManager Informationen abholen kann. sed -i 's/CHANGE_ECLOUDMANAGER_USERNAME/admin/g' src/server/Client.groovy sed -i 's/CHANGE_ECLOUDMANAGER_PASSWORD/iw2brau1/g' src/server/Client.groovy 10. Der Kontaktstring, unter dem der Webserver später erreichbar sein soll, ist in der runServer.groovy durch das Setzen von Werten für die Optionen -u und -p zu spezifizieren. Zum Beispiel: groovy WebServer.groovy -u localhost -p 6980 11. Löschen des JAR‐Archivs rm -f webServiceServer.jar AusführendesWebservice 1. Wechseln in das Zielverzeichnis cd <TARGET_DIR> 2. Es ist zu beachten, dass während der Ausführung auf die Dateien fluidops.ca zugegriffen wird. Diese sollten sich im Verzeichnis src/server befinden. 3. Ausführen den Shell‐Skripts runServer.sh sh runServer.sh #!/bin/sh BASE_DIR=`pwd`"/" Seite 35 Konzept für das Informationssystem 4 Juli 2011 function setClassPath() { CLASSPATH=${BASE_DIR}"lib/vim/vim25.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/commons-discovery-0.2.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/jaxrpc.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/commons-logging-1.0.4.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/axis/axis.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fcoremgmt.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/query/JoSQL-1.9.jar;:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fbase.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fiwbcom.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/sesame/openrdf-sesame-2.3.2-onejar.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/commons/commons-cli-1.0.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/json/json.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/groovy/groovy-all-1.5.7.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/groovy/jline-0.9.94.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/log4j/log4j-1.2.16.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/xml/xstream-1.2.2.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/xml/xpp3_min-1.1.3.4.O.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/fecm.jar:$CLASSPATH" CLASSPATH=${BASE_DIR}"lib/groovy/groovyws-0.5.3-20100521.062225-1.jar:$CLASSPATH" export CLASSPATH } cd ./src/server/ groovy WebServer.groovy -u localhost -p 6980 InstallationsanleitungdesWebServiceClients Diese Anleitung beschreibt die Installation des Webservice‐Clients. Dieser kann auf dem D‐MON Host oder auch einem separaten Knoten mit dem Betriebssystem Linux installiert werden. Nachfolgend ist die Instal‐ lation auf einem System mit Ubuntu‐Linux 10.10 mit Bash Version 4.x beschrieben. 1. Installation von Groovy und xmllint sudo apt-get install groovy groovy-doc libxml2-utils 2. Installation von GroovyWS http://snapshots.repository.codehaus.org/org/codehaus/groovy/modules/groovyws/ aus cd ~ wget http://snapshots.repository.codehaus.org/org/codehaus/groovy/modules/groovyws/0.5.3SNAPSHOT/groovyws-0.5.3-20100521.071409-5.jar mkdir -p .groovy/lib mv groovyws-0.5.3-20100521.071409-5.jar .groovy/lib 3. Installation Apache CXF JARs wget http://apache.openmirror.de//cxf/2.4.0/apache-cxf-2.4.0.tar.gz -P ~ tar xzf apache-cxf-2.4.0.tar.gz cp -r apache-cxf-2.4.0/lib ~/.groovy Seite 36 Konzept für das Informationssystem 4 Juli 2011 rm -rf apache-cxf-2.4.0.tar.gz apache-cxf-2.4.0/ 4. Herunterladen der Datei ecm_dmon_webServiceClient.jar in das Zielverzeichnis mkdir -p <TARGET_DIR> cd <TARGET_DIR> wget http://www.irf.tu-dortmund.de/cms/de/IT/Projekte/DGrid_IaaS/ecm_dmon_webServiceClient.jar 5. Extraktion der JAR‐Archivinhalte in den Zielordner jar xf ecm_dmon_webServiceClient.jar 6. Es sollten in dem Zielverzeichnis folgende Unterordner existieren: META-INF, lib, src, xsd sowie xslt. Des Weiteren sollte ein Shell‐Skript runClient.sh im Zielverzeichnis liegen. 7. Ändern der Rechte an der Datei runClient.sh chmod u+x ./runClient.sh 8. Aufruf des Clients, zum Beispiel: ./runClient.sh localhost 6980 9. Löschen des JAR‐Archivs rm -f ecm_dmon_webServiceClient.jar IntegrationdesClientsalsD‐MONAdapter Extraktion Die Konfiguration für die Extraktion ist in der Datei zentral.sh festgehalten. Die aktuellen Einträge für die drei Grid Middlewares Globus Toolkit, gLite und UNICORE sind nachfolgend aufgeführt. # # Extractors # # Extractor for Globus Toolkit 4 MDS4 GLOBUS_LOCATION=/usr/local/globus export GLOBUS_LOCATION PATH=/usr/local/java/bin:${GLOBUS_LOCATION}/bin::${GLOBUS_LOCATION}/sbin:"${PATH}" export PATH GLOBUS_OPTIONS=-Xmx128M export GLOBUS_OPTIONS MDS4_EXTRACTOR="wsrf-query -a -z none -s " # Extractor for BDII BDII_EXTRACTOR="$DMON_HOME/extractors/ldapxml.pl " # Extractor for CIS PATH=/home/globus/ucc-1.2.0/bin:"${PATH}" CIS_EXTRACTOR="ucc cis-showdoc -u " Die Extraktion von Informationen aus dem eCloudManager erfolgt anhand eines neuen Adapters, der in das zentral.sh‐Skript zu integrieren ist. Die Integration erfordert zwei Schritte: 1. Die Erzeugung einer neuen Umgebungsvariable ECM_EXTRACTOR analog zu CIS_EXTRACTOR, Seite 37 Konzept für das Informationssystem 4 Juli 2011 BDII_EXTRACTOR und MDS4_EXTRACTOR. 1. Die Belegung der Variablen ECM_EXTRACTOR mit dem notwendigen Aufruf des WebService‐Clients zur Kontaktierung des WebService‐Servers. # Extractor for ECM ECM_EXTRACTOR=${DMON_HOME}/transformer/ecm/runClient.sh Transformation Die Konfiguration für die Transformation ist ‐ ebenso wie die Einstellungen für die Extraktion ‐ in der Datei etl.sh gespeichert. # Transformers MDS4_TRANSFORMER="$DMON_HOME/transformers/mds4.xslt" BDII_TRANSFORMER="$DMON_HOME/transformers/bdii.xslt" CIS_TRANSFORMER="$DMON_HOME/transformers/cis.xslt" Die Erweiterung um einen neuen Transformer erfordert an dieser Stelle einen neuen Eintrag. # Transformers ECM_TRANSFORMER="$DMON_HOME/transformers/ecm/xslt/ecm.xslt" AuslesenderDateimonlist.txt Während der Abarbeitung des zentral.sh‐Skripts wird die Datei monlist.txt zeilenweise ausgelesen. Die Datei besteht aus Schlüssel‐Wert‐Paaren wie BDII: ldap://udo-bdii01.grid.tu-dortmund.de:2170/mds-vo-name=UNI-DORTMUND,o=grid CIS: https://dmon-unic.fz-juelich.de:9113/services/CISRegistry?res=cis_registry und wird um einen Eintrag für die in Dortmund betriebene eCloudManager‐Instanz erweitert ECM: http://129.217.184.110:6980/Client Des Weiteren wird eine Abfrage innerhalb des Skripts ergänzt um ECM) echo "ECM Information provider" out=$(timeout $QUERY_TIMEOUT $ECM_EXTRACTOR 129.217.184.110 6980 2>&1) rcode=$? if [ -n "$(echo $out | grep -i exception)" ]; then rcode=1 fi transformer=$ECM_TRANSFORMER ;; Seite 38