Difference between revisions of "GCore Based Information System Installation"

From Gcube Wiki
Jump to: navigation, search
(IS Filters)
(IS-Notifier)
Line 270: Line 270:
 
gcore-deploy-service <path>/org.gcube.informationsystem.notifier.gar
 
gcore-deploy-service <path>/org.gcube.informationsystem.notifier.gar
 
</pre>
 
</pre>
 +
 +
==== gHN Configuration ====
 +
 +
TBP
  
 
==== Instance Configuration ====
 
==== Instance Configuration ====

Revision as of 15:36, 2 July 2009

The Information System is composed by 4 Services (IS-IC, IS-Registry, IS-Notifier, IS-gLiteBridge) and a set of client libraries. The libraries are automatically shipped with the gHN-distribution and do not require any specific configuration than the gHN configuration.

Deployment Scenario

In their current release, the IS services are intended to serve a specific infrastructure or VO scope. This means that there has to be one and only one instance of these services for each of such types of scope. Starting from the infrastructure scope, but at the time being also all the VOs need a manual installation.

The typical deployment scenario requires at least 2 gHNs per scope:

  • one to deploy the IS-IC
  • one to deploy the IS-Registry, the IS-Notifier and the IS-gLiteBridge

Service Map

A Service Map must be prepared and distributed in all the gHNs aiming at joining the infrastructure or the VO scope. The minimal Scope Map reports the EPRs of the IS-IC instance deployed in the scope with the following syntax:

<ServiceMap>
        <Service name ="ISICAllQueryPT" endpoint ="http://host:port/wsrf/services/diligentproject/informationservice/disic/DISICService"/>
        <Service name ="ISICAllRegistrationPT" endpoint ="http://host:port/wsrf/services/diligentproject/informationservice/disic/DISICRegistrationService"/>                        
</ServiceMap>

where host and port must be replaced with the ones of the gHN's IC.

Such a map has to be placed in each gHN in a file named $GLOBUS_LOCATION/config/ServiceMap_<scope name>.xml

IS-InformationCollector

Installation

The installation of the IS-IC service is a two-step process:

  1. firstly, the back-end XML database (eXist) has to be installed and the environment properly configured
  2. then, the service is installed on the gHN
eXist 1.1

After having downloading the package, the following steps has to be performed:

  • enter the following Java command in a Unix shell or Windows command prompt using the -jar option:
java -jar eXist-1.1.1-newcore-build4311.jar -p <target folder>
This will launch the installer using the specified target folder as destination. Simply follow the steps to complete the installation process;
  • configure the EXIST_HOME environment variable to point to the target folder as follows:
export EXIST_HOME=<target folder>
Ideally, the command above should be placed in the $HOME/.bashrc (if the bash shell is used) or any other script loaded at login time;
  • ensure that you have "write" permissions set for the data directory located in $EXIST_HOME/webapp/WEB-INF/.
Service

[TBC]

IS-Registry

Installation

The IS-Registry can be deployed on a gHN as any other gCube Service by typing:

gcore-deploy-service <path>/org.gcube.informationsystem.registry.gar

gHN Configuration

The gHN where an IS-Registry instance is running has to be configured in a special way:

  1. it must be declared a STATIC node (GHNtype parameter), i.e. a node where no dynamic deployment activities can be performed
  2. it must run in a ROOT mode (mode parameter), meaning that it starts up in a special way

These two configuration settings have to be specified in the $GLOBUS_LOCATION/config/GHNConfig.xml file as reported in the following example:

<?xml version="1.0" encoding="UTF-8"?>
<jndiConfig xmlns="http://wsrf.globus.org/jndi/config">
    <global>    
 
                <environment
                        name="securityenabled"
                        value="false"
                        type="java.lang.Boolean"
                        override="false" />
        <!-- setting for ROOT mode -->
                <environment
                        name="mode"
                        value="ROOT"
                        type="java.lang.String"
                        override="false" />
                <environment
                        name="startScopes"
                        value="devsec"
                        type="java.lang.String"
                        override="false" />             
                 <environment
                        name="infrastructure"
                        value="gcube"
                        type="java.lang.String"
                        override="false" />
                <environment
                        name="labels"
                        value="GHNLabels.xml"
                        type="java.lang.String"
                        override="false" />             
        <!-- setting for STATIC gHN -->
                <environment
                        name="GHNtype"
                        value="STATIC"
                        type="java.lang.String"
                        override="false" />
                <environment
                        name="localProxy"
                        value="/home/globus/..."
                        type="java.lang.String"
                        override="false" />
                <environment
                        name="coordinates"
                        value="43.719627,10.421626"
                        type="java.lang.String"
                        override="false" />
                <environment
                        name="country"
                        value="it"
                        type="java.lang.String"
                        override="false" />
                <environment
                        name="location"
                        value="Pisa"
                        type="java.lang.String"
                        override="false" />
                <environment
                        name="updateInterval"
                        value="60"
                        type="java.lang.Long"
                        override="false" />
 
    </global>
</jndiConfig>

Instance Configuration

The configuration of an IS-Registry instance is a two-step process:

  • since an IS-Registry can act in one and only one scope, its JNDI file ($GLOBUS_LOCATION/etc/org.gcube.informationsystem.registry/jndi-config.xml) must be configured to join only one scope. In the following example, the instance is configured to join the scope named /testing/vo1:
<?xml version="1.0" encoding="UTF-8"?>
<jndiConfig xmlns="http://wsrf.globus.org/jndi/config">
 
    <service name="gcube/informationsystem/registry">
 
                <environment 
                        name="configDir" 
                        value="etc/org.gcube.informationsystem.registry" 
                        type="java.lang.String"
                        override="false" />
 
                <environment 
                        name="securityManagerClass" 
                        value="org.gcube.common.core.security.GCUBESimpleServiceSecurityManager" 
                        type="java.lang.String"
                        override="false" />
 
                <!-- Lifetime for temporary resources, after this period temporary resources are destroyed-->
                <environment
                        name="temporaryResourceLifetimeInMs"
                        value="480000"
                        type="java.lang.Long"
                        override="false" />     
 
 
 
                <environment 
                        name="startScopes" 
                        value=" /testing/vo1" 
                        type="java.lang.String"
                       override="false" />         
 
    </service>
 
	...
</jndiConfig>
  • due to its role, the IS-Registry requires a special Service Map for its scope. In that map, the EPR of the RegistryFactory itself must be reported. Let's suppose that an instance running on a node named grid5.4dsoft.hu joins the /testing/vo1 scope, the $GLOBUS_LOCATION/config/ServiceMap_vo1.xml file must be filled as follows (the reported EPRs are just for sample purposes):
<ServiceMap>
        <Service name ="ISICAllQueryPT" endpoint ="http://grid1.4dsoft.hu:8080/wsrf/services/diligentproject/informationservice/disic/DISICService"/>
        <Service name ="ISICAllRegistrationPT" endpoint ="http://grid1.4dsoft.hu:8080/wsrf/services/diligentproject/informationservice/disic/DISICRegistrationService"/>                        
        <Service name ="ISRegistry" endpoint="http://grid5.4dsoft.hu:8080/wsrf/services/gcube/informationsystem/registry/RegistryFactory" />
</ServiceMap>
IS Filters

Optionally, a set of filters can be configured in order to prevent the publication of some GCUBEResources matching the given criteria. Actually, gHN and RI resources can be banned with the filtering mechanism.

Filters are defined on the value of some Profile child elements (Domain, Site, Name for gHN, Endpoint for RI). Two filtering operations are available:

  • exclude: if the value of the element is equal to the value specified in the filter, the resource is banned
  • exclude_if_contains: if the value of the element contains the string (even as substring) specified in the filter, the resource is banned

IS filters can be stored in two places:

  • as GenericResource with secondary type equals to ISFilters registered on the IS in the same IS-Registry scope
  • as a GenericResource serialization in a file stored in $GLOBUS_LOCATION/etc/org.gcube.informationsytem.registry/ResourceFilters.xml

They are mutually esclusive: if both of them are used, the filters on the IS

The following example defines two filters:

  1. all the gHNs with the "localhost" string in the GHNDescription/Name's value are banned
  2. all the RI with the "localhost" string in the AccessPoint/RunningInstanceInterfaces/Endpoint/Name's value are banned
<Resource> 
   <ID>db7b21f0-4acb-11de-b519-8417e45ea243</ID> 
   <Type>GenericResource</Type> 
   <Scopes> <Scope>/gcube/devsec</Scope> </Scopes> 
   <Profile> 
     <SecondaryType>ISFilters</SecondaryType> 
     <Name>ISFilters</Name> 
     <Description>Filtering rules applied on the IS at GCUBEResource registration time</Description> 
     <Body>
	<Filters> 
	     <Filter resourceType="GHN"> 
	    	<Target>GHNDescription/Name</Target> 
		<Value>localhost</Value> 
		<Operation>exclude_if_contains</Operation>
	     </Filter> 
	     <Filter resourceType="RunningInstance"> 
	 	<Target>AccessPoint/RunningInstanceInterfaces/Endpoint</Target> 
		<Value>localhost</Value> 
		<Operation>exclude_if_contains</Operation> 
	     </Filter>
	</Filters> 
     </Body> 
  </Profile>
</Resource>

Verify the Installation

Once the IS-Registry has been configured, the gHN can be started.

The nohup.out file has to report (among the others) the following portTypes:

gHN started at: http://host:port/wsrf/services/ with the following services:

GCUBE SERVICES:
...
[4]: http://host:port/wsrf/services/gcube/informationsystem/registry/Registry
[5]: http://host:port/wsrf/services/gcube/informationsystem/registry/RegistryFactory


Then, a set of messages stating that the local profiles are registered or updated with the local event mechanism has to appear in the $GLOBUS_LOCATION/logs/container.fulllog file.

This is an example of such messages:

2009-06-20 00:31:41,409 DEBUG contexts.ServiceContext [GHNConsumer$<anon>,debug:66] [0.165s] GHNManager: Publishing GHN profile in scope /testing/vo1
2009-06-20 00:31:41,410 TRACE impl.GCUBEProfileManager [GHNConsumer$<anon>,trace:82] GCUBEProfileManager: Configured ISRegistry instance detected
2009-06-20 00:31:41,410 TRACE impl.GCUBEProfileManager [GHNConsumer$<anon>,trace:82] GCUBEProfileManager: Checking local configuration for http://host:port/wsrf/services/gcube/informationsystem/registry/RegistryFactory
2009-06-20 00:31:41,410 TRACE impl.GCUBEProfileManager [GHNConsumer$<anon>,trace:82] GCUBEProfileManager: Local ISRegistry instance detected
2009-06-20 00:31:41,411 TRACE impl.GCUBELocalPublisher [GHNConsumer$<anon>,trace:82] GCUBELocalPublisher: Updating resource ea5bd570-4ad5-11de-a511-84b4178b18ed via local event

IS-Notifier

Installation

The IS-Notifier can be deployed on a gHN as any other gCube Service by typing:

gcore-deploy-service <path>/org.gcube.informationsystem.notifier.gar

gHN Configuration

TBP

Instance Configuration

The configuration of an IS-Notifier instance does not require any special setting. The only thing to take into account is that there must exist one and only one instance of the service per scope. The scope(s) of the instance can be set in the JNDI file ($GLOBUS_LOCATION/etc/org.gcube.informationsystem.notifier/jndi-config.xml) of the service as follows:

<?xml version="1.0" encoding="UTF-8"?>
<jndiConfig xmlns="http://wsrf.globus.org/jndi/config">
 
	<service name="gcube/informationsystem/notifier">
 
		<environment 
		name="configDir" 
	 	value="@config.dir@" 
	 	type="java.lang.String"
	 	override="false" />
 
		<environment 
		name="securityManagerClass" 
	 	value="org.gcube.common.core.security.GCUBEServiceSecurityManagerImpl" 
	 	type="java.lang.String"
	 	override="false" />	
 
                <environment 
                name="startScopes" 
                value="/testing/vo1" 
                type="java.lang.String"
                override="false" /> 
 
	</service>
 
	...
</jndiConfig>

In this example, the instance is configured to join the scope named /testing/vo1. If one wants to configure the instance for serving multiple scopes, a comma-separated list must be provided as value of the startScopes variable. If the configuration above is not provided, the instance is joined by default to all the gHN scopes.

Verify the Installation

Once the IS-Notifier has been installed, the gHN can be started.

The nohup.out file has to report (among the others) the following portType:

gHN started at: http://host:port/wsrf/services/ with the following services:

GCUBE SERVICES:
...
[6]: http://host:port/wsrf/services/gcube/informationsystem/notifier/Notifier

IS-gLiteBridge

[TBP]