1

ドキュメントに従っていますが、WAN 経由で RavenDB のレプリケーションを機能させることができません。

シナリオ:

  • Raven ビルド #2261 の使用
  • マスター DB: 「it23」のローカル名を持つ
  • スレーブ DB: リモート名は " http://184.169.xxx.xxx " (xxx はプライバシー用)

両方のサーバーで、「TonyTest」というデータベースを作成しました。

マスター データベースで、次のドキュメントを使用してレプリケーションをセットアップしました。

{
  "Destinations": [
    {
      "Url": "http://184.169.xxx.xxx:8080",
      "Username": null,
      "Password": null,
      "Domain": null,
      "ApiKey": null,
      "Database": "TonyTest",
      "TransitiveReplicationBehavior": "None",
      "IgnoredClient": false,
      "Disabled": false,
      "ClientVisibleUrl": null
    }
  ]
}

http://184.169.xxx.xxx:8080の同じ URL を使用してリモート サーバーを参照すると、RavenDB スタジオが正しく起動し、TestTony データベースが表示されます。これは、URL が正しくフォーマットされていることを確認しているようです。

ただし、マスター データベースは、失敗を示すドキュメントをすぐに生成します。

{   
  "Destination": "http://184.169.xxx.xxx:8080/databases/TonyTest",  
  "FailureCount": 142 
}

REMOTE db のログを見ると、マスターとの IS 通信があることがわかりますが、レプリケーションは完了していません。

Debug   3/9/2013 12:19:44 AM    Document with key 'Raven/Replication/Sources/http://it23:8080/databases/TonyTest' was not found     Raven.Storage.Esent.StorageActions.DocumentStorageActions

リモートサーバーは、データベース「TonyTest」が見つからないと言っているようですが、作成されています。

誰かが私の間違いを見つけることができますか?

Ayende のリクエストにより、レプリケーションのセットアップを試行した後の LOCAL サーバーからのログ サンプルをいくつか示します (ここでも、プライバシーのために IP を xxx に置き換えました)。LOCAL db のログにエラーはありません。また、REMOTE db ログにエラー ポップアップが表示されます。これは、LOCAL db が REMOTE db に接続していることを示しているようですが、レプリケーションは行われません。ローカル ログは次のとおりです。

Debug   3/11/2013 3:17:00 PM    No work was found, workerWorkCounter: 17626, for: ReducingExecuter, will wait for additional work       Raven.Database.Indexing.WorkContext
Debug   3/11/2013 3:17:00 PM    Going to index 1 documents in IndexName: Raven/DocumentsByEntityName, LastIndexedEtag: 00000001-0000-0100-0000-000000002265: (Raven/Replication/Destinations/184.169.xxx.xxx8080databasesTonyTest)      Raven.Database.Indexing.AbstractIndexingExecuter
Debug   3/11/2013 3:17:00 PM    Document with key 'Raven/Studio/PriorityColumns' was not found      Raven.Storage.Esent.StorageActions.DocumentStorageActions
Debug   3/11/2013 3:16:56 PM    Going to index 1 documents in IndexName: Raven/DocumentsByEntityName, LastIndexedEtag: 00000001-0000-0100-0000-000000002256: (Raven/Replication/Destinations/184.169.xxx.xxx8080databasesTonyTest)      Raven.Database.Indexing.AbstractIndexingExecuter

Update 3/11 8:24p Pacific time 現在、MASTER/Local raven ログに次のエラーが表示されています。

応答を閉じることができませんでした

System.AggregateException: One or more errors occurred. ---> System.Net.HttpListenerException: An operation was attempted on a nonexistent network connection
   at System.Net.HttpResponseStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at Raven.Database.Util.Streams.BufferPoolStream.Dispose(Boolean disposing) in c:\Builds\RavenDB-Stable\Raven.Database\Util\Streams\BufferPoolStream.cs:line 144
   at System.IO.Stream.Close()
   at Raven.Database.Impl.ExceptionAggregator.Execute(Action action) in c:\Builds\RavenDB-Stable\Raven.Database\Impl\ExceptionAggregator.cs:line 23
   --- End of inner exception stack trace ---
   at Raven.Database.Impl.ExceptionAggregator.ThrowIfNeeded() in c:\Builds\RavenDB-Stable\Raven.Database\Impl\ExceptionAggregator.cs:line 38
   at Raven.Database.Server.Abstractions.HttpListenerResponseAdapter.Close() in c:\Builds\RavenDB-Stable\Raven.Database\Server\Abstractions\HttpListenerResponseAdapter.cs:line 94
   at Raven.Database.Server.Abstractions.HttpListenerContextAdpater.FinalizeResponse() in c:\Builds\RavenDB-Stable\Raven.Database\Server\Abstractions\HttpListenerContextAdpater.cs:line 92
---> (Inner Exception #0) System.Net.HttpListenerException (0x80004005): An operation was attempted on a nonexistent network connection
   at System.Net.HttpResponseStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at Raven.Database.Util.Streams.BufferPoolStream.Dispose(Boolean disposing) in c:\Builds\RavenDB-Stable\Raven.Database\Util\Streams\BufferPoolStream.cs:line 144
   at System.IO.Stream.Close()
   at Raven.Database.Impl.ExceptionAggregator.Execute(Action action) in c:\Builds\RavenDB-Stable\Raven.Database\Impl\ExceptionAggregator.cs:line 23<---
4

1 に答える 1

1

これを解決しました。完全な理由はわかりませんが。

SLAVE サーバーでは、raven.server.exe 構成ファイルを次のキーを持つように設定する必要があります。

<add key="Raven/AnonymousAccess" value="All"/>

デフォルトは

<add key="Raven/AnonymousAccess" value="Get"/>.

マスターとスレーブが同じマシン上にある場合、デフォルトは正常に機能しました。しかし、マスターとスレーブが別々のマシン (LAN 上または WAN 経由) にある場合、複製は失敗しました。

彼の問題を指摘するマスターのログ エントリを見つけることができませんでした。私が確認できた唯一のログ エントリは、Raven/Replication/Sources/ が見つからないというスレーブに関するものでした。マスターがスレーブに接続していることに気付きましたが、スレーブは "Raven/Replication/Sources/" ドキュメントをリモートで作成できませんでした。

于 2013-03-13T02:45:34.807 に答える