ハイパーグリッドのインストールと運用

From OpenSimulator

Revision as of 00:50, 11 June 2011 by MakoBot (Talk | contribs)

Jump to: navigation, search

Contents

ハイパーグリッドモードでの OpenSim のインストールと運用

ハイパーグリッドのセットアップは OpenSim をスタンドアロンモードで動かしているかグリッドモードで動かしているかによって違います。バージョン 0.7 でもかなり変わっています。0.6.x の古いバージョンの OpenSim シミュレータを使っている場合は、このページの下のほうにある #OpenSimulator 0.6.x での設定を参照してください。

設定

OpenSim シミュレータをハイパーグリッドからアクセスできるようにするには、外部から参照できる IP アドレスかドメイン名を使う必要があります。また、OpenSim シミュレータや地域が使う全てのポート (TCP と UDP) にポートフォワーディングを設定しないといけないかもしれません。通常は、グリッドモードでインストールすると 8002, スタンドアロンでは 9000 となります。地域は通常 9000 以降のポートを使います。詳細は、Network Settings を参照してください。

スタンドアロン

ハイパーグリッドの設定は OpenSim.ini の [Architecture] セクションで行われます。Include-HGStandalone の行のコメントだけを解除するようにしてください。

[Architecture]
    ;Include-Standalone    = "config-include/Standalone.ini"
    Include-HGStandalone = "config-include/StandaloneHypergrid.ini"
    ;Include-Grid         = "config-include/Grid.ini"
    ;Include-HGGrid       = "config-include/GridHypergrid.ini"
    ;Include-SimianGrid   = "config-include/SimianGrid.ini"

StandaloneCommon.ini では、[LoginService] と [GatekeeperService] セクションのネットワークアドレスを外部ネットワークアドレスに変更してください。

[LoginService]
    ; ... (このセクションの他の設定) ...
    HomeURI = "http://example.com:9000"
    GatekeeperURI = "http://example.com:9000"
    InventoryServerURI = "http://example.com:9000"
    AssetServerURI = "http://example.com:9000"
 
 [GatekeeperService]
    ; ... (このセクションの他の設定) ...
    ExternalName = "http://example.com:9000"

これらのアドレスに違うポートを使いたいときは、OpenSim.ini の [Network] セクションにある HTTP リスナーポートの設定も修正してください。

[Network]
    ; ... (このセクションの他の設定) ...
    http_listener_port = 9000

最後に、今までに変更した設定に応じて地域設定を修正してください。#グリッド・スタンドアロン共通の地域設定 を参照してください。

グリッドモード

グリッドモードでハイパーグリッドを使えるようにするには、Robust サーバと地域サーバ(シミュレータ)の設定を修正する必要があります。

Robust サーバ

Robust サーバは Robust.ini の代わりに Robust.HG.ini ファイルを使って起動します。このファイルがインストールパッケージに含まれていない場合は、Robust.HG.ini.example をコピーして作成してください。動作環境に合わせて適切な変更を行ってください(例:データベースの接続文字列の修正)。ハイパーグリッドには、次の設定項目が関連します。

[LoginService]
    ; ... (このセクションの他の設定) ...
    HomeURI = "http://example.com:8002"
    GatekeeperURI = "http://example.com:8002"
    InventoryServerURI = "http://example.com:8002"
    AssetServerURI = "http://example.com:8002"
 
[GatekeeperService]
    ; ... (このセクションの他の設定) ...
    ExternalName = "http://example.com:8002"

これらのアドレスに違うポートを使いたいときは、[Startup] セクションの 'ServiceConnectors' パラメタにあるポート番号を修正する必要があります。また、[Network] セクションにあるポート番号も修正しなければならないでしょう。

これらの修正が終わったら、Robust サーバを起動できます。Windows/.NET では、次のようにします。

Robust -inifile=Robust.HG.ini

Mono (例:Linux や OSX) では、次のようにします。

mono Robust.exe -inifile=Robust.HG.ini

シミュレータ

Robust サーバに接続する地域サーバ(シミュレータ)は OpenSim.ini ファイルから設定を読み込みます。ハイパーグリッドを有効にするには、[Architecture] セクションの Include-HGGrid の行のコメントを外してください。

[Architecture]
    ;Include-Standalone    = "config-include/Standalone.ini"
    ;Include-HGStandalone = "config-include/StandaloneHypergrid.ini"
    ;Include-Grid         = "config-include/Grid.ini"
    Include-HGGrid       = "config-include/GridHypergrid.ini"
    ;Include-SimianGrid   = "config-include/SimianGrid.ini"

グリッド・スタンドアロン共通の地域設定

最後に、全ての地域が同じ外部ネットワークアドレスを使う必要があります。これは GatekeeperService に設定します。例えば、次のようにします。

[Region One]
    ; ... (このセクションの他の設定) ...
    ExternalHostName = "example.com"

地域が使うポートに到達できるように、ネットワークを保護するファイアウォールは TCP と UDP のリクエストを通さなければなりません。

OpenSimulator 0.6.x での設定

インストール

OpenSim をチェックアウトし、プレビルド・ビルドを通常通り行うか、バイナリパッケージを メインページ からダウンロードします。OpenSim を他のマシンと一緒にグリッドモードで運用している場合、OpenSim.ini を修正してハイパーグリッドを有効にするだけでいいです。

スタンドアロンで運用していてネットワーク接続ができるようにしたい場合、またはループバックアドレス (127.0.0.1) でグリッドを運用している場合、[Network] セクションの全てのサーバアドレスを変更しなければなりません。以下を参照してください。

Network セクションの例

スタンドアロンのネットワーク設定の標準的な例

[Network]
http_listener_port = 9000
 
grid_server_url = "http://example.com:9000"
 
grid_send_key = null
grid_recv_key = null
 
user_server_url = "http://example.com:9000"
 
user_send_key = null
user_recv_key = null
 
asset_server_url = "http://example.com:9000"
 
inventory_server_url = "http://example.com:9000"
messaging_server_url = "http://example.com:9000"

グリッドサーバのネットワーク設定の標準的な例

[Network]
http_listener_port = 9000
 
grid_server_url = "http://example.com:8001"
grid_send_key = null
grid_recv_key = null
 
user_server_url = "http://example.com:8002"
user_send_key = null
user_recv_key = null
 
asset_server_url = "http://example.com:8003"
inventory_server_url = "http://example.com:8003"
messaging_server_url = "http://example.com:8006"

OSGrid に接続しているサーバのネットワーク設定

[Network]
http_listener_port = 9000
grid_server_url = "http://osgrid.org:8001" ;デフォルト 8003
grid_send_key = "1234"
grid_recv_key = "1234"
 
user_server_url = "http://osgrid.org:8002" 
user_send_key = "1234"
user_recv_key = "1234"
 
asset_server_url = "http://assets.osgrid.org:8003" 
inventory_server_url = "http://osgrid.org:8004" ;デフォルト 8003
messaging_server_url = "http://osgrid.org:8006"

ハイパーグリッドを有効にするには、OpenSim.ini の修正が必要です

- OpenSim.ini の上のほうにある以下の行を変更します。

hypergrid = false → true

- ### それから、WORLD MAP セクションを追加修正して次のようにします。

; ##
; ## WORLD MAP
; ##
 
WorldMapModule = "WorldMap"
MapImageModule = "MapImageModule"
WorldMapModule = "HGWorldMapModule" ;この行は OpenSim.ini.example にはありません

※ HGWorldMapModule は、他のグリッドにテレポートした後、元いたグリッドから残っている地図のタイルを除去します。

- それから、下の方の [Archictecture] セクションを修正します。

対応する Include-HG* = の行のコメントを外し、コメントが外れている行が1個だけになるようにします。(下の例は、スタンドアロンでハイパーグリッド対応する場合)

[Architecture]
;Include-Standalone = "config-include/Standalone.ini" ; デフォルトではコメントアウトされていません
Include-HGStandalone = "config-include/StandaloneHypergrid.ini"
;Include-Grid = "config-include/Grid.ini"
;Include-HGGrid = "config-include/GridHypergrid.ini"

これで OpenSim シミュレータは内向き・外向きともにハイパーグリッドが使えるようになります。

4096 の地域制限

ビューアの制約により、4096 個以上の地域をまたがったテレポートはうまくいきません。ほとんどのビューアがテレポートを実行しますが、テレポート先の地域が表示されないため、いつまで経っても見ることができません。具体的な例を出すと、(1000, 1000) の地域にいる場合、(5095, 5095) よりも離れた地域にテレポートすることができません。遠くの地域にテレポートするには、自分の地域をテレポート先の近くに置くか、テレポート元・先両方の地域からテレポートできるような中継地域を使う必要があります。

Public Hypergrid Nodes で有名なグリッドやスタンドアロンを参照し、これらがどこにあるかを調べてみましょう。

重要事項

必ず「ホーム」を設定しておいてください。ホームの地域がない場合、ハイパーリンクのテレポートは動作しないことがあります。ホームを設定するには、ローカルの地域のどれかに行き、ビューアで「ホームをここに設定」を選択します。

地域、スタンドアロン、ハイパーグリッド間などのテレポートをスクリプトで行うには、osTeleportAgent 関数を使います。例は右のリンク先にあります:OsTeleportAgent

地域同士をリンクする (オプション)

方法その1

コンソールで、次のように入力します。

link-region <Xloc> <Yloc> osl2.nac.uci.edu:9006

Xloc と Yloc は遠すぎず、近すぎず、自分の空間に適した値にしてください。
osl2.nac.uci.edu と 9006 には、リンクしたい地域のあるシミュレータのドメイン名/IP アドレスと http_listener_port が入ります。1つのインスタンス上で動作する地域を指定してリンクすることもできます。下の例のように、地域の名前を最後に付け加えます。

link-region 997 997 osl2.nac.uci.edu:9006:UCI Welcome

方法その2

XML ファイルからのリンクの読み込みもサポートするようになりました。

コンソールコマンドを使います: link-region <URI> [<excludeList>]

URI にはローカルにある XML ファイルか HTTP サーバにある XML 文書のパスが入ります。

XML ファイルの書式:

<Nini>
<Section Name="Region1"> 
<Key Name="xloc" Value="1002"/>
<Key Name="yloc" Value="1006" />
<Key Name="externalPort" Value="9006" />
<Key Name="externalHostName" Value="osl2.nac.uci.edu" />
<Key Name="localName" Value="OSGrid-Gateway" />
<Key Name="real-xloc" Value="10222"/> //元のグリッドにおける実際のロケーション(任意)
<Key Name="real-yloc" Value="10265" /> //元のグリッドにおける実際のロケーション(任意)
</Section>
<Section Name="Region2"> 
...
</Section>
...
</Nini>

[注意] セクションの名前 (Section Name) は何でもよいですが、一意でなければならず、名前の中に空白があってはいけません。

ExcludeList:(除外リスト)

除外リスト(Exclude List)は1つの文字列引数で、次のような書式となります。 excludeList:<SectionName>[;<SectionName>]

XML ファイルから読み込む際、リストに記載されたセクションは全て無視され、ハイパーグリッドへのリンクは生成されなくなります。

この仕組みにより、Web サーバにリンクリストを作って、誰でも自分の地域を追加できるようになります。その際は、必ず自分自身のセクション名を自分の地域の除外リストに追加しなければなりません。

例えば、OpenSim の2回目の誕生日に向けて、誰かがオンラインで編集可能なリストを作ったとします。このような感じでしょうか。

<Nini>
<Section Name="OSGrid-Party"> 
<Key Name="xloc" Value="1002"/>
<Key Name="yloc" Value="1006" />
<Key Name="externalPort" Value="9006" />
<Key Name="externalHostName" Value="osl2.nac.uci.edu" />
<Key Name="localName" Value="OSGrid-Gateway" />
</Section>
<Section Name="UCIGrid-Party"> 
...
</Section>
</Nini>

こうすると、自分の地域を "MW-Party" というセクション名で登録できます。その後、ハイパーグリッドへの参加を希望する当該地域を起動するときに、次のコマンドを使います。

"link-region <XML ファイルの URI> excludeList:MW-Party"

これで、自分の地域は自分自身へのハイパーリンクを作成しようとしなくなります。

方法その3 (動的リンク)

r8193 から、ハイパーグリッド対応地域にいると、下に書いた方法のどれかで(もっとありそうですが)、SIM に動的にリンクを貼ってテレポートすることができるようになります。下のほうにあるリストで調べるなどして、目的地のアドレスさえわかれば大丈夫です。

1) チャット画面から secondlife://ucigrid04.nacs.uci.edu:9007/ などと入力して、チャット履歴を表示してリンクをクリックします。

2) 世界地図を開いて検索窓に ucigrid04.nacs.uci.edu:9007 のように入力します。

3) 内蔵ブラウザを使って secondlife://ucigrid04.nacs.uci.edu:9007/ のようなリンクがあるページ(http://www.ics.uci.edu/~lopes/hypergrid/test.html など)にアクセスします。

ここでも、右のような感じで、1つのインスタンス上で動作する地域を指定してリンクすることができます。 secondlife://ucigrid04.nacs.uci.edu:9007:Gateway 7000/

4096 の地域制限をチェックする

4096 の地域制限により、0.7.0.1 からは、作成しようとしているリンクが1つ以上の自分の地域からアクセスできるか OpenSim シミュレータで検証されるようになりました。リンクしようとしている地域から 4096 以内の距離に、自分のグリッドやスタンドアロンの地域が1つもないと、リンクは却下されます。StandaloneCommon.ini(スタンドアロンの場合)や Robust.HG.ini(グリッドの場合)で、このチェックを行わないようにすることができます。

[GridService]
      Check4096 = false

地域の永久リンク

グリッドモードでは、方法その1とその2は Robust コンソールでも地域コンソールでも動作します。地域コンソールでは、リンクされた地域はデータベースに格納されず、地域がシャットダウンされると設定が消えます。Robust コンソールでリンクされた地域は unlink-region コマンドで明示的に解除されない限り再起動しても残ります。

リンクされている地域を一覧で表示する

リンクされている全ての地域の一覧を表示するには、コンソールで次のコマンドを実行してください(0.7.1 r/13457 以降で利用可能。0.7-post-fixes でも可)。

show hyperlinks

地域のリンクを解除する

コンソールで次のように入力してください。

unlink-region osl2.nac.uci.edu:9006

または

unlink-region <local region name>

データベースに MySQL を使っている場合、地域の名前は 32 文字までしか入りません。リンクされている地域の名前がそれよりも長い場合は、丸められます。名前が 32 文字に丸められると、リンク解除コマンドは1つの地域しか検索しません。

参考情報

実装された OSSL 関数: OSSL Implemented

利用可能な OSSL 関数: OSSL Enabling Functions

ハイパーグリッドのセキュリティ: Hypergrid Security

ハイパーグリッドでの外部ユーザの BAN: Banning Foreign Users in Hypergrid

ハイパーグリッドの公共ノード一覧: Public Hypergrid Nodes

ハイパーグリッドのインベントリアクセス: Hypergrid Inventory Access (proposal)

General
About This Wiki