ハイパーグリッドのインストールと運用
From OpenSimulator
Contents |
ハイパーグリッドモードでの OpenSimulator のインストールと運用
ハイパーグリッドのセットアップは OpenSimulator をスタンドアロンモードで動かしているかグリッドモードで動かしているかによって違います。バージョン 0.7 でもかなり変わっています。0.6.x の古いバージョンの OpenSimulator シミュレータを使っている場合は、このページの下のほうにある #OpenSimulator 0.6.x での設定を参照してください。
設定
OpenSimulator シミュレータをハイパーグリッドからアクセスできるようにするには、外部から参照できる IP アドレスかドメイン名を使う必要があります。また、OpenSimulator シミュレータや地域が使う全てのポート (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 での設定
インストール
OpenSimulator をチェックアウトし、プレビルド・ビルドを通常通り行うか、バイナリパッケージを メインページ からダウンロードします。OpenSimulator を他のマシンと一緒にグリッドモードで運用している場合、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"
これで OpenSimulator シミュレータは内向き・外向きともにハイパーグリッドが使えるようになります。
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 サーバにリンクリストを作って、誰でも自分の地域を追加できるようになります。その際は、必ず自分自身のセクション名を自分の地域の除外リストに追加しなければなりません。
例えば、OpenSimulator の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つ以上の自分の地域からアクセスできるか OpenSimulator シミュレータで検証されるようになりました。リンクしようとしている地域から 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)