IIS で Umbraco の負荷分散を設定する方法に関する公式ドキュメントに従って、ファイル レプリケーションを使用するファイル ストレージの推奨オプションを選択しました。
config/umbracoSettings.config で distributedCall 要素をセットアップしました....
<distributedCall enable="true">
<user>0</user>
<servers>
<server>ourserver-node1</server>
<server>ourserver-node2</server>
</servers>
</distributedCall>
しかし、コンテンツを公開するたびに失敗し、ログに次のように表示されます...
2013-10-01 17:42:34,054 [12] INFO Umbraco.Core.Publishing.PublishingStrategy - [Thread 23] Content 'testing page' with Id '1215' has been published.
2013-10-01 17:42:34,101 [12] INFO Umbraco.Core.Sync.DefaultServerMessenger - [Thread 23] Submitting calls to distributed servers
2013-10-01 17:42:34,179 [12] ERROR Umbraco.Core.Sync.DefaultServerMessenger - [Thread 23] Error refreshing a node in the distributed list, URI attempted: http://ourserver-node1/umbraco/webservices/cacheRefresher.asmx
System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)
at Umbraco.Core.Sync.DefaultServerMessenger.PerformDistributedCall(IEnumerable`1 servers, ICacheRefresher refresher, MessageType dispatchType, IEnumerable`1 ids, Type idArrayType, String jsonPayload)
2 つのノードが構成されており、それぞれのエントリを取得します。両方のサーバーに同じアプリ プール ID を使用しています。
umbraco の Web サイト全体は、Active Directory アカウントを介して記事のコメントを識別するイントラネット アプリとして、Windows 認証を使用するように構成されています。
webservices ディレクトリで Windows 認証を削除し、匿名を許可すると、umbraco バックエンド cms 全体が失敗します (ノード コンテンツ ローダーなど、webservices ディレクトリ内のサービスへのすべての呼び出しが失敗します..)
スタック トレースから、ユーザーを認証できないようです。
マシンキーを確認しましたが、どちらも同じです。
それでも 401 unauthorized が返されるのはなぜですか?
ブラウザ経由で cacheRefresher.asmx をヒットできますが、同じ 401 でフィドラー経由で失敗します。そのため、ブラウザ経由で Windows の資格情報を使用して収集します。