Skip to content
Snippets Groups Projects
README 14.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • ARC Middleware
    ==============
    
    
    The Advanced Resource Connector (ARC) middleware, introduced by
    NorduGrid (www.nordugrid.org), is an open source software solution
    enabling production quality computational and data grids.
    
    Since the first release (May 2002) the middleware has been deployed and
    been used in production environments. Emphasis is put on scalability,
    
    stability, reliability and performance of the middleware. A growing
    
    number of grid projects, like Swegrid, DCGC, NDGF has chosen ARC as their
    
    
    This release (October 2007) is a technology preview version of the
    next generation of ARC. It is based on a service container - the
    Hosting Environment Daemon (HED) - and different grid capabilities are
    implemented as Web Services residing in HED. Currently, an OGSA BES
    compliant execution service - ARC Resource-coupled EXecution service
    (A-REX) - and an echo service (for testing purposes) are included, but
    the set of services is rapidly growing.
    
    
    
    Dependencies
    ============
    
    The middleware is written in C/C++ and some smaller part in Perl. ARC
    builds upon standard Open Source libraries and solutions. Building the
    software from source or installing a precompiled binary requires
    different external packages, furthermore the client and server
    packages have different dependencies too. The detailed compile and
    runtime external dependencies are given in the INSTALL file, below a
    
    merged list of the explicit requirements (build, install, server, 
    client) is shown:
    
      Mandatory (on client as well as server side):
    
        o gnu make, autotools (autoconf>=2.56)
        o C++ compiler and library
        o libtool
        o pkg-config
        o gthread-2.0 version 2.4.7 or later
        o glibmm-2.4 version 2.4.7 or later
    
        o libxml-2.0 version 2.4.0 or later
    
        o openssl version 0.9.7a or later
        o e2fsprogs-devel
        o doxygen
    
    
      Optional (mainly applicable on server side):
    
        o swig version 1.3.28 or later
        o java sdk 1.4 or later for Java bindings
        o python-devel for Python bindings
        o Grid Packaging Tools (GPT) (http://www.gridpackagingtools.org/)
        o Globus Toolkit 4 (http://www.globus.org/) which contains
          - Globus RLS client
          - Globus FTP client
          - Globus RSL
    
    Getting the software
    ====================
    
    The middleware is free to deploy anywhere by anybody. Pre-built binary
    
    releases for a dozen of Linux platforms can be downloaded from the
    NorduGrid software repository at download.nordugrid.org.
    
    
    The software is released under the GNU General Public License (GPL)
    (see the LICENSE file).
    
    
    The NorduGrid repository hosts the source code, and provides most of
    the required external software which are not part of a standard Linux
    
    distribution.
    
    
    Building & Installation
    =======================
    
    The ARC middleware can be built from the openly available source code
    
    provided as a tarball. The build uses the GNU autotools. This
    
    means that a standard installation into /usr/local can be made with:
    
    
      ./configure
      make
      make install
    
    
    If you wish to install into <directory>, use the following instead:
    
      ./configure --prefix=<directory>
      make
      make install
    
    
    Grid Certificates
    =================
    
    
    In order to use ARC, a grid certificate is necessary. More information
    
    about grid certificates in general and how to get them can be found on
    
    http://www.nordugrid.org/documents/certificate_howto.html
    
    
    Please make sure correctly configure the certificates on client and service 
    sides. The configuration about certificate for MCCTLS in the service.xml 
    should like this:  
          <KeyPath>./key.pem</KeyPath>
          <CertificatePath>./cert.pem</CertificatePath>
          <CACertificatePath>./ca.pem</CACertificatePath>
    or this:
          <KeyPath>/etc/grid-security/hostkey.pem</KeyPath>
          <CertificatePath>/etc/grid-security/hostcert.pem</CertificatePath>
          <CACertificatesDir>/etc/grid-security/certificates</CACertificatesDir>
    Note if you configure <CACertificatePath>, that implicitly means the certificates
    for client and service sides are signed by one specific CA.
    The key file can be with or without passphrase.
    
    If you would test ARC with TLS support, the certificate generated by yourself ("untrusted"
    certificate) is recommended; or you can also use some certificate genertated by authorized CA, 
    such as NorduGrid CA. 
    For testing, you can use the same certificates for the client and service sides.
    
    
    For testing purposes, an "untrusted" self-signed certificate can be generated by
    
    the following commands:
    
      openssl genrsa 1024 > key.pem
      openssl req -config ./openssl.cnf -new -x509 -nodes -sha1 -days 365 -key key.pem > cert.pem
      cp cert.pem ca.pem
    
    
    
    ARC Server Setup & Configuration
    ================================
    
    
    The configuration of the ARC server is specified in an XML file, the
    location of which is specified as a command line argument with the -c
    option. An example of a configuration file that sets up an A-REX
    
    execution service and an echo service (intended for testing purposes)
    is shown below:
    
    
    <?xml version="1.0"?>
    <ArcConfig 
      xmlns="http://www.nordugrid.org/schemas/ArcConfig/2007"
      xmlns:tcp="http://www.nordugrid.org/schemas/ArcMCCTCP/2007"
      xmlns:arex="http://www.nordugrid.org/schemas/a-rex/Config"
    
      xmlns:echo="urn:echo_config"
    
    >
      <Server>
        <Foreground/>
    
        <Pidfile>./arched.pid</Pidfile>
    
        <Logger level="WARNING">./logfile</Logger>
      </Server>
      <ModuleManager>
    
      </ModuleManager>
      <Plugins><Name>mcctcp</Name></Plugins>
      <Plugins><Name>mcctls</Name></Plugins>
      <Plugins><Name>mcchttp</Name></Plugins>
      <Plugins><Name>mccsoap</Name></Plugins>
      <Plugins><Name>arex</Name></Plugins>
    
      <Plugins><Name>echo</Name></Plugins>
    
      <Chain>
        <Component name="tcp.service" id="tcp">
          <next id="tls"/> 
          <tcp:Listen><tcp:Port>60000</tcp:Port></tcp:Listen>
        </Component>
        <Component name="tls.service" id="tls">
          <next id="http"/>
          <KeyPath>/etc/grid-security/key.pem</KeyPath>
          <CertificatePath>/etc/grid-security/cert.pem</CertificatePath>
          <CACertificatePath>/etc/grid-security/ca.pem</CACertificatePath>
        </Component>
        <Component name="http.service" id="http">
          <next id="soap">POST</next>
        </Component>
        <Component name="soap.service" id="soap">
          <next id="plexer"/>
        </Component>
        <Plexer name="plexer.service" id="plexer">
          <next id="a-rex">/arex</next>
    
        </Plexer>
        <Service name="a-rex" id="a-rex">
          <arex:endpoint>https://localhost:60000/arex</arex:endpoint>
          <arex:username>nobody</arex:username>
          <arex:gmconfig>/etc/arc.conf</arex:gmconfig>
        </Service>
    
        <Service name="echo" id="echo">
          <echo:prefix>[ </echo:prefix>
          <echo:suffix> ]</echo:suffix>
        </Service>
    
      </Chain>
    </ArcConfig>
    
    
    If you generated your own certificate according to the instructions in
    
    the previous section, remember to update the KeyPath, CertificatePath,
    and CACertificatePath elements accordingly.
    
    The echo service is "atomic" and has no additional dependencies other
    
    than what is provided by the Hosting Environment Daemon (HED). If you
    
    do not want to run the echo service, simply remove the lines
    'xmlns:echo="urn:echo_config"', '<Plugins><Name>echo</Name></Plugins>',
    '<next id="echo">/echo</next>', and '<Service name="echo" id="echo">
    [...] </Service>' from the configuration file.
    
    In order to use the A-REX service, however, you need to run a
    Grid-Manager as well. There is not yet a Grid-Manager available in the
    new generation of ARC, but the Grid-Manager from ARC 0.6.x can be used
    
    in the meantime. How to install and set up that Grid-Manager is
    described in detail on
    http://www.nordugrid.org/documents/ng-server-install.html and in
    NORDUGRID-TECH-14 "The ARC Computational Job Management Module -
    A-REX: Description and Administrator's Manual".
    
    
    Please note, that there is a reference to the configuration file for
    the Grid-Manager in the configuration file for the HED:
    "<arex:gmconfig>/etc/arc.conf</arex:gmconfig>". If your configuration
    file for the Grid-Manager is located somewhere else or has another
    name, you must update the configuration file for HED accordingly.
    
    Worth mentioning is also that the user account from which the HED
    containing the A-REX service is run, will be the owner of the jobs in
    the local batch system, and that this account must have write
    permission in the session and control directories of the Grid-Manager.
    
    If you do not want to run the A-REX service, simply remove the lines
    
    'xmlns:arex="http://www.nordugrid.org/schemas/a-rex/Config"'
    '<Plugins><Name>arex</Name></Plugins>', '<next id="a-rex">/arex</next>',
    and '<Service name="a-rex" id="a-rex"> [...] </Service>' from the
    
    Starting the Server
    ===================
    
    To start the ARC server, type the following on the command line:
    
    
      /usr/local/sbin/arched -c /etc/arcserv.xml &
    
    If the server complains about "libglobus..." and that it cannot open a
    shared object file, try to add "/opt/globus/lib" to your
    LD_LIBRARY_PATH:
    
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/globus/lib
    
    In the current release, the server prints some warnings and messages
    that can safely be ignored. Those are:
    - Unknown element "Server" - ignoring
    - Not a '__arc_***_modules__' type plugin
    - Assigned new informational document
    
    
    Remember to also start the Grid-Manager, as described above, in order
    to be able to use the A-REX service.
    
    
    
    The A-REX Client
    ================
    
    
    The configuration of the ARC A-REX client is specified in an XML
    file. The location of the configuration file is specified by the
    environment variable ARC_AREX_CONFIG. If there is no such environment
    variable, the configuration file is assumed to be arex_client.xml in
    the current working directory. An example configuration file is shown
    below:
    
    <ArcConfig
      xmlns="http://www.nordugrid.org/schemas/ArcConfig/2007"
      xmlns:tcp="http://www.nordugrid.org/schemas/ArcMCCTCP/2007">
      <ModuleManager>
    
      </ModuleManager>
      <Plugins><Name>mcctcp</Name></Plugins>
      <Plugins><Name>mcctls</Name></Plugins>
      <Plugins><Name>mcchttp</Name></Plugins>
      <Plugins><Name>mccsoap</Name></Plugins>
      <Chain>
        <Component name='tcp.client' id='tcp'>
          <tcp:Connect>
            <tcp:Host>127.0.0.1</tcp:Host>
            <tcp:Port>60000</tcp:Port>
          </tcp:Connect>
        </Component>
        <Component name='tls.client' id='tls'>
          <next id='tcp'/>
          <KeyPath>/etc/grid-security/key.pem</KeyPath>
          <CertificatePath>/etc/grid-security/cert.pem</CertificatePath>
          <CACertificatePath>/etc/grid-security/ca.pem</CACertificatePath>
        </Component>
        <Component name='http.client' id='http'>
          <next id='tls'/>
          <Method>POST</Method>
          <Endpoint>/arex</Endpoint>
        </Component>
        <Component name='soap.client' id='soap' entry='soap'>
          <next id='http'/>
        </Component>
      </Chain>
    </ArcConfig>
    
    
    
    Using the A-REX Client
    ======================
    
    
    To submit a job, type
    
    
      <install-prefix>/bin/apsub <JSDL-file> <JobID-file>
    
    
    where <JSDL-file> is the location of a file that contains the job
    specification in JSDL format and <JobID-file> the location of a file
    in which the Job ID will be stored.
    
    To query the status of a job, type
    
    
      <install-prefix>/bin/apstat <JobID-file>
    
    
    where <JobID-file> the location of the file in which the Job ID is
    stored (the file created when the job was submitted).
    
    To terminate a job, type
    
    
      <install-prefix>/bin/apkill <JobID-file>
    
    
    where <JobID-file> the location of the file in which the Job ID is
    stored (the file created when the job was submitted).
    
    
    More detailed information about how to use the client tools is
    available in NORDUGRID-TECH-15 "WS-Based ARC Clients".
    
    The Echo Client
    ===============
    
    The configuration of the ARC echo client is specified in an XML
    file. The location of the configuration file is specified by the
    environment variable ARC_ECHO_CONFIG. If there is no such environment
    variable, the configuration file is assumed to be echo_client.xml in
    the current working directory. An example configuration file is shown
    below:
    
    
    <ArcConfig
      xmlns="http://www.nordugrid.org/schemas/ArcConfig/2007"
      xmlns:tcp="http://www.nordugrid.org/schemas/ArcMCCTCP/2007">
      <ModuleManager>
        <Path>/usr/local/lib/arc/</Path>
      </ModuleManager>
      <Plugins><Name>mcctcp</Name></Plugins>
      <Plugins><Name>mcctls</Name></Plugins>
      <Plugins><Name>mcchttp</Name></Plugins>
      <Plugins><Name>mccsoap</Name></Plugins>
      <Chain>
        <Component name='tcp.client' id='tcp'>
          <tcp:Connect>
            <tcp:Host>127.0.0.1</tcp:Host>
            <tcp:Port>60000</tcp:Port>
          </tcp:Connect>
        </Component>
        <Component name='tls.client' id='tls'>
          <next id='tcp'/>
          <KeyPath>/etc/grid-security/key.pem</KeyPath>
          <CertificatePath>/etc/grid-security/cert.pem</CertificatePath>
          <CACertificatePath>/etc/grid-security/ca.pem</CACertificatePath>
        </Component>
        <Component name='http.client' id='http'>
          <next id='tls'/><Method>POST</Method>
          <Endpoint>/echo</Endpoint>
        </Component>
        <Component name='soap.client' id='soap' entry='soap'>
          <next id='http'/>
        </Component>
      </Chain>
    </ArcConfig>
    
    
    Using the Echo Client
    ======================
    
    To use the echo client, type
    
    
      <install-prefix>/bin/apecho <message>
    
    where <message> is the message which the echo service will return.
    
    Contributing
    ============
    
    The open source development of the ARC middleware is coordinated by
    the NorduGrid Collaboration. Currently, the main contributor is the
    KnowARC project (www.knowarc.eu), but the Collaboration is open to new
    members. Contributions from the community to the software and the
    
    documentation is welcomed. Sources can be downloaded from the software
    repository at download.nordugrid.org or the Subversion code repository at
    svn.nordugrid.org.
    
    The technical coordination group defines outstanding issues that have
    to be addressed in the framework of the ARC development. Feature
    requests and enhancement proposals are recorded in the Bugzilla bug
    tracking system at bugzilla.nordugrid.org. For a more detailed
    description, write access to the code repository and further
    questions, write to the nordugrid-discuss mailing list (see
    www.nordugrid.org for details). Ongoing and completed Grid Research
    projects and student assignments related to the middleware are listed
    on the NorduGrid Web site as well.
    
    
    
    Support, documentation, mailing lists, contact
    ==============================================
    
    User support and site installation assistance is provided via the
    request tracking system available at nordugrid-support@nordugrid.org.
    In addition, NorduGrid runs a couple of mailing lists, among which the
    nordugrid-discuss mailing list is a general forum for all kind of
    issues related to the ARC middleware.
    
    
    NorduGrid deploys the Bugzilla problem tracking system
    (bugzilla.nordugrid.org). Feature and enhancement requests, as well as
    discovered problems, should be reported there.
    
    
    Research papers, overview talks, reference manuals, user guides,
    installation instructions, conference presentations, FAQ and even
    tutorial materials can be fetched from the documentation section of
    www.nordugrid.org
    
    Contact information is kept updated on the www.nordugrid.org web site.