ssh環境での実行

リモートの計算機を使う方法として、一般的に使われているのがssh (Secure shell)です。ここでは、sshを用いてOmniRpcで記述されたプログラムを実行す る方法を説明します。 なお、globusの時と同様に、 リモートホストにおいてリモート実行プログラムを 作成、登録、プログラミングについてはかわりません。変わるのは、 ホストファイルhosts.xmlの記述だけです。
sshの準備
SSHのためのホストファイル
ファイヤウォールがある場合の設定: port forwardingの利 用
クライアントプログラムの実行

sshの準備

以下の環境を仮定します。

  1. クライアントホストは、alice.hpcs.is.tukuba.ac.jp
  2. リモートホストは、dennis.hpcc.jp
  3. リモートホストとクライアントホストの間ではファイヤウォールが無い。 つまり、非特権ポートで制限なしに通信ができる。

ここでは、既にsshが利用できるということを前提に説明します。 すなわち、alice.hpcs.is.tsukuba.ac.jpから、dennis.hpcc.jpにsshでアクセ スすることができると仮定します。

まず、sshを利用する場合には、クライアントにおいて、ssh-agentによる自動 認証を設定する必要があ ります。詳しくは、???を参照することにして、以下に概略のみを説明してお きます。

  1. ssh-agentコマンドでssh-agentを起動し、そのPIDを環境変数にセットし ておく。
  2. ssh-addでパスフレーズを登録。

ここで、ssh-agentによる自動認証が動いているかどうかを確認してください。

% ssh dennis.hpcc.jp

上記のコマンドで、リモートホストにパスワード入力無しでloginできればOK です。

SSHのためのホストファイル

deniss.hpcc.jpを使うためには、hosts.xmlに記述し、このホストファイルを 使ってクライアントプログラムを実行します。sshを用いたリモートホスト の場合は以下のように記述します。

<?xml version="1.0" ?>
<OmniRpcConfig>
   <Host name="dennis.hpcc.jp" arch="i386" os="linux">
   <Agent invoker="ssh" />
   </Host>
</OmniRpcConfig>

これはリモート実行プログラムを起動するためのagentをsshを使って行う ための記述です。この指定でのagentとrexの関係は以下のようになります。

ファイヤウォールがある場合の設定: mxioの利 用

リモートホストがクライアントホストとは異なる組織の場合には、リモートホ ストとクライアントホスト間にファイヤウォールが設定されていることがあり ます。sshで起動する場合にはsshのport forwardingを利用して、クライアン トとAgentの間の通信を行っていますが、さらにクライアントで実行 されるリモート実行モジュールとクライアントプログラムとの通信をこのport forwardingを使って通信させることができます。この機能が、通信の多重化機 能です。そのためには、Agentの記述にmxio属性を指定します。

<?xml version="1.0" ?>
<OmniRpcConfig>
   <Host name="dennis.hpcc.jp" arch="i386" os="linux">
   <Agent invoker="ssh"  mxio="on"  />
   </Host>
</OmniRpcConfig>

この指定でのagentとrexの関係は以下のようになります。この場合は、rexと クライアントとの通信は、agentを経由して行われます。

クライアントプログラムの実行

上のhosts.xmlを使う以外は同じ手順で実行することができます。

% a.out --hostfile hosts.xml  args ... 

なお、クライアントホストとリモートホストでユーザ名が異なる場合、などに ついては、Tipsを御覧ください。