iCAT-enabled slave servers

75 views
Skip to first unread message

Vladimir Mencl

unread,
Jan 21, 2010, 3:07:48 PM1/21/10
to iROD-Chat

Hi,

I'm preparing the deployment of iRODS in New Zealand - and I'm so far
planning to do the deployment as close to the Australian ARCS DataFabric
as possible.

One of the features used in the ARCS DataFabric is that all iRODS
servers are compiled as iCAT-enabled, and one of them is selected as the
master and configured with "icatHost" in server/config/server.config


I would like to know what are the benefits (and possible issues) with a
setup like this.

(1) Are there any benefits from having the other servers compiled as
iCAT enabled? I heard some explanation that servers compiled without
iCAT support had some limitations in how they would execute rules.

I understand there should be only one RuleExecution server running in
the zone (and that can be controlled with "reServerOnIes" in
irodsctl.pl). The explanation I heard was related to non-delayed rules,
which would be executed on the server the client is connected to.

Are there any limitations (in rule execution or elsewhere) in having
slave servers compiled without iCAT support ?

Are there any benefits from having iCAT support compiled in?

And any risks (on iCAT database consistency) ?


(2) I wasn't sure what "slaveIcatHost" in server.config actually does -
but from what I found in the iROD-chat archives, the server configured
as an slaveIcatHost would be used for read-only operations (like "ils",
"iget"...)

Would it make sense to configure each of the slave iCAT-enabled servers
with direct access to the single Postgres database running on the master
- and then tell each server to use itself as an iCat slave host?

Would that provide a speedup (in not having to talk to the iRODS master) ?

Would that be still safe - not to break database consistency?

(3) If each iRODS server in the zone was configured as iCAT-enabled and
talking to a single database, would things break if the servers were not
marked as slaves but each thought of itself as a master ?
(But only one would be running the ReServer)

I guess this one would be stretching it in terms of consistency - but
I'm curious to know what the rules for consistency are.

Thanks a lot in advance for any answers. I would like to understand
this deeper before I decide on a deployment plan.

Cheers,
Vlad

--
Vladimir Mencl, Ph.D.
E-Research Services and Systems Consultant
BlueFern Supercomputing Services
University of Canterbury
Private Bag 4800
Christchurch 8140
New Zealand

http://www.bluefern.canterbury.ac.nz
mailto:vladimi...@canterbury.ac.nz
Phone: +64 3 364 3012
Mobile: +64 21 997 352
Fax: +64 3 364 2332

schr...@diceresearch.org

unread,
Jan 22, 2010, 6:56:29 PM1/22/10
to irod...@googlegroups.com
Hello,

Welcome. I'll try to answer some of your questions, and then we can
follow up with additional discussion. I'm not too familiar with the
ReServer and the Rule system, so others are better able to help you with
those questions.

There are some benefits and some trade-offs in making all your servers
ICAT-Enabled. The typical iRODS system would have one ICAT-Enabled
server and the other servers non-ICAT. The main benefit of having
slave-ICATs is some of the queries can be done to the slave ICAT host,
instead of going over the WAN. The main drawback is that the system is
more complicated, as so there are more places where things can go wrong.

We do not test master/slave ICAT configurations here at DICE. But I
believe ARCS has had good success running that way.

The impact on rules depends on the nature of the rules and
micro-services that you are making use of.

I believe the reServerOnIes environment variable is no longer being used
and the comment in irodsctl.pl is out of date.

I don't believe it would be useful to configure each of the slave


iCAT-enabled servers with direct access to the single Postgres database

running on the master. If you did that, the slave would communicate
with the master at the ODBC level, but you'd be better off letting the
iRODS code handle that partitioning of the communications. The iRODS
servers talk to each other as needed, and handle that pretty efficiently
(in both deciding when they need to, and in the protocol used).

Yes, a "slaveIcatHost" is used for read-only ICAT access, like 'ils' and
perhaps part of 'iget'. If your slave ICAT is local, and the master is
remote across a WAN, it can be somewhat faster.

If you have multiple Masters, things would get out of sync, as the iRODS
system as a whole would not consistently be updating the same ICAT
Master.

- Wayne -


Hi,

Cheers,
Vlad

--
"iRODS: the Integrated Rule-Oriented Data-management System; A community
driven, open source, data grid software solution" https://www.irods.org

iROD-Chat: http://groups.google.com/group/iROD-Chat

Reply all
Reply to author
Forward
0 new messages