2013-03-09 2 views
1

Соблюдайте документацию, но я не могу сделать работу по репликации RavenDB над WAN.Ошибка репликации RavenDB - база данных не найдена

Сценарий:

  • Использование Raven построить # 2261
  • Мастер DB: имеет местное название "it23"
  • работорговли БД: имеет выносной название "http://184.169.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 
    } 
    ] 
} 

При просмотре на удаленном сервере, используя тот же URL из: http://184.169.xxx.xxx:8080, студия RavenDB запускает правильно, и я могу видеть базы данных TestTony. Это похоже на то, что URL-адрес отформатирован правильно.

Однако, основная база данных немедленно генерирует документ с указанием неисправности:

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

Когда мы смотрим на журналы для удаленной БД, мы видим, что есть связь с мастером, но репликация не полный.

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» не может быть найден, но он был создан.

Может кто-нибудь обнаружить свою ошибку?

запрос Per 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 тихоокеанскому времени Я сейчас наблюдаем следующие ошибки в MASTER/Местные журналы воронов:

Не удалось закрыть ответ

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<--- 
+0

Журнал назначения не имеет отношения к делу. Какая ошибка вы видите в источнике? –

+0

Привет Айенде. Я скопировал некоторые из журналов Local/Source выше. Кажется, мы не видим ошибок, которые я узнаю. Есть идеи? –

+0

Еще одно обновление, я создал второй экземпляр RavenDB на своем ПК и смог полностью воспроизвести его. Какие специальные конфигурации необходимы для репликации по глобальной сети? –

ответ

1

решили эту проблему. Хотя я не понимаю всю причину.

На сервере SLAVE, необходимо установить raven.server.exe конфигурационный файл, чтобы иметь следующий ключ:

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

по умолчанию был

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

по умолчанию работало нормально, когда мастер и ведомые были на одной машине. Но когда мастер и подчиненный были на отдельных компьютерах (либо в локальной сети, либо через WAN), репликация не удалась.

Я никогда не мог найти запись в журнале о хозяине, которая указывала на его проблему. Единственная запись в журнале, которую я мог видеть, была на рабе, который сказал, что Raven/Replication/Sources/не найден. Я понял, что мастер подключился к подчиненному устройству, но подчиненный не смог удаленно создать документ «Raven/Replication/Sources /».

Смежные вопросы