Shinobar Martinek による投稿

今日の午後2時ごろ自宅のIPが変わりました。shinogrid に入ってみると、今回も ROBUSTに問題は見られず。SIMサーバーでTP障害が見られましたが、SIMサーバーを再起動しなくてもTP障害は解消しました。TP障害解消のきっかけも判明しました。以下にその様子を報告します。

1. 自宅IPが変更される。DDNSに再登録。5分ほど後、VPSのDNSに反映を確認後にTP実験を開始。

2. (しのぐりの) shinobar( VPSでIP固定) に問題なくログイン。しかし Shinobar South など周辺リージョンは自宅サーバー(DDNS)で、これらリージョンは見えないし、世界地図に現れるもののテレポートできない。

3.いったんログアウトし、今度は自宅サーバー(DDNS)の Shinobar South をログイン先に指定すると、Shinobar South に問題なく立てる。Shinobar South からは 固定IPの Shinobar や周辺のDDNSリージョンもすべて見え、テレポートもできる。しかし固定IPの Shinobarに入ると、DDNSの周辺リージョンは(ビューアーにバッファされているからか)見えるが、そこへはテレポートできない。

4. ふたたびログアウトし、また 固定IPのShinobar にログインする。周辺のDDNSリージョンは視界から消えていて、(世界地図には現れるが)テレポートもできない。すなわち、2と同じ状態。

5. この状態から世界地図で別のDDNSリージョンである NextDarwin1 を検索し、テレポートする。(ここのIPは変わっていないのでしょう)テレポートできた。

6.  NextDarwin1から Shinobar へテレポートで戻る。すると、さっきまで見えていなかった周辺リージョンが現れ、テレポートもできるようになった。

以降ログアウト、ログインしてみたが、TP障害は無くなっていた。

 

以上の shinobargrid での経験と、JOGとでは次のような違いがあります。

1. JOGではIPが変わった自宅サーバーSIMへの直接ログインができなくなる。

2. JOG Center SIMから自宅サーバーSIMへのTP障害が起きたとき、別のリージョンを経由するとTPできることがありますが、JOGの場合は、そこから JOG Center Sim へ戻っても自宅サーバーSIMへの直接TPは、相変わらずできません。JOG Center Simが再起動されるまでTP障害は続きます。

 

ありがとうございます。もとちゃさんのブログでも触れていた、これですね。

http://www.nsl.tuis.ac.jp/DownLoad/etc/opensim_man_1.1.0.pdf

ずっと前にダウンロードしましたが、読んでませんでした。m(_ _)m

冒頭に目次など10ページほどあるので、ページ数がずれていて、該当個所はPDFファイル63ページあたりからでした。

前記スクリプト最終行で

screen -dmS opensim sudo -u opensim mono OpenSim.exe

としてバックグラウンンド起動し(sudo によりユーザー opensimで実行。スクリーン名も opensim)、別のターミナルで

screen -S opensim -p 0 -X stuff $'quit\n'

で正常終了することを確認しました。

 

 

ご教示ありがとうございます。screen コマンドで SIMサーバーを起動しておき (opensim はセッションの名前。jogrid_rewriteip はSIMサーバー起動スクリプト)

screen  -S opensim -X exec jogrid_rewriteip

別のターミナルから

 screen -S opensim -X eval 'stuff quit\015'

とすれば、正常終了できることを確認しました。

screen の使い方はよく分かってません。他に良い方法があるのかもしれません。

バグレポート ダイナミックDNSにおけるTP障害について などで報告しているように、Dynamic DNSを用いた自宅サーバーにおいて、自宅サーバーのIPが変更されると、テレポートに障害が出ます。この問題の調査は継続中ですが、シノバーのSIM群では次のような応急的対処をしています。参考までに紹介します。

要はROBUSTサーバーなどにDNSを引かせないように、Region.ini に記載される ExternalHostName にFQDNではなく、直接グローバルIPを書き込んでしまいます。

添付のスクリプトは SIMサーバー起動時にグローバルIPを調べ、Regions.ini を書き換えます。グローバルIPが変わるたびにこのスクリプトを起動すればよいのですが、現在はこのスクリプト起動を手動で行ってますす。SIMサーバーを外から正常終了させる方法が分からないので。良い方法があればお教えください。killall mono とかで強制的にシャットダウンさせても問題はないのかも?

添付スクリプトで外部IPの取得には icanhazip.com を利用してます、IPアドレスを返してくれるようです。特権ユーザ rootで動作するパピーリナックスで書いていますので、SIMサーバーを非特権ユーザである opensim で実行するよう細工しています。もともと非特権ユーザで起動される環境では、そこのところは修正してください。シェルは bash です、

#!/bin/sh

# see my location
MYNAME=$(basename $0)
TMPFILE=/tmp/$MYNAME.txt
APP=$(readlink -e $0)
[ "$APP" ] || APP=$0
APPDIR=$(dirname "$APP")
[ "$APPDIR" = "." ] && APPDIR=$(pwd)
GUEST_PREFIX=$APPDIR/opensim-0.8.2.1-jog
GUEST_BINDIR=$GUEST_PREFIX/bin
REGIONFILE=$GUEST_BINDIR/Regions/Regions.ini

#rewrite IP
if [ ! -r "$REGIONFILE" ]; then
  echo "'$REGIONFILE' not found."
  exit 1
fi
if [ ! -w "$REGIONFILE" ]; then
  echo "'$REGIONFILE' rewriting denied.."
  exit 1
fi
echo "Trying to get the external IP..."
EXTERNALIP=$(wget -t 3 -O - -q icanhazip.com)
if [ -z "$EXTERNALIP" ]; then
  echo "External IP cannot obtained."
  exit -1
fi
sed -e 's/ExternalHostName.*$/ExternalHostName = '$EXTERNALIP'/g' "$REGIONFILE" > "$TMPFILE"
if [ ! -s "$TMPFILE" ]; then
  echo "Rewriting failed."
  exit 1
fi
mv -f "$TMPFILE" "$REGIONFILE"
echo "'$REGIONFILE' updated."

# clear old stuff
rm -f "$GUEST_BINDIR"/OpenSim.log*
rm -fr "$GUEST_BINDIR"/assetcache

#launch opensim
chown opensim.opensim -R "$GUEST_BINDIR"
export PATH="$PATH:$GUEST_BINDIR"
export HOME="$APPDIR"
cd "$GUEST_BINDIR"
sudo -u opensim mono OpenSim.exe

JOG Center Sim にはすでに Yan さんによるハイパーグリッドへのTP看板群がありますが、このほど私がよく利用しているOpenSim世界内のショップへのTP看板を設置しました。OSG内のショップガイドともどもご利用ください。

この中で Clutterfly は、OpenSim界で有名なクリエーター Linda Kellie さんが 最近Metropolis内にオープンしたものです。ほとんどすべての商品がフルパーミッションです。JOG内の Avatar Center や Funiture などの商品のほとんどは Linda Kellie の作品。

JOG Center Sim にはJOG内ショップガイドも設けています。ハイパーグリッドともども、自薦他薦、情報をお寄せください。

い。JOG Center SimにあるTP看板