2016-06-30 2 views
2

私は紺色のサービスファブリックでPOCに取り組んでいます。私のサービスをローカルクラスタにデプロイしました.Local.xmlのデフォルト設定で正常に動作しています。Azureサービスファブリックインスタンス数

私がインスタンス数を変更した瞬間、それは例外として投げられます。インスタンス数を変更するオプションはどこですか?基本的に私は今2つのノードで私のサービスを実行しようとしています。それは1

のInnerExceptionあるデフォルト値であるとき、それは正常に動作しています:すでに使用中の ソース= Microsoft.AspNetCore.Server.Kestrel のStatusCode = HRESULT = -2146233088 メッセージ=エラー-4091 EADDRINUSEアドレス-4091

マイlocal.xmlはここ

<Parameters> 
    <Parameter Name="Product_InstanceCount" Value="2" /> 
    </Parameters> 

コピーされたすべてのヘルプは本当に感謝しています。

おかげで

答えて

5

公式Microsoftの資料によると、あなたはあなたが同じポートを聞いて、複数のプロセスとの競合に実行されますローカルcluster.Otherwiseに展開するときにサービスのインスタンスが1つだけ実行されていることを確認する必要がありますAzureにデプロイするときに複数のインスタンスを設定できます。

は、ドキュメントを参照してください: - https://azure.microsoft.com/en-us/documentation/articles/service-fabric-add-a-web-frontend/

+2

新しいバージョンのツールではこれでハードに失敗するのではなく、ノードの1つにエンドポイントを割り当て、クラスタが不健全であることに関する警告の生成を開始します。 ETWイベントを見ると、「Microsoft.Net.Http.Server.WebListenerException(0x80004005):プレフィックス「http:// +:6001 /」は既に登録されています。 –

+0

既に登録されているポートを解放する方法 – abhi

1

あなたはASP.NetやOwinのいくつかの種類を実行している場合は、サービスを開催しました。インスタンスカウント-1を使用する必要があります。これにより、各ノードに1つのインスタンスが設定されます。インスタンスカウントが2の場合、2つのインスタンスが取得されます。これらのインスタンスは、同じノードにある場合とない場合があります。

3

ローカルsfクラスタを使用していて、サービスエンドポイントポートを固定している場合は、1つのインスタンスだけを使用します。例:

Service.Endpointは8090ポートを使用します。これはServiceManifest.xmlで定義されています。ローカルクラスタでは、実際にはすべてが1つのノード、つまり開発マシンで実行されます。厳密に定義されたポートを持つ同じサービスの2つのインスタンスを作成しようとすると、Port already in useエラーが発生します。

インスタンスを1つに変更するか、実際のAzureクラスタに移動するか、ハードコードされたポート番号を削除してください。

0

同様の問題があり、ビルドスクリプトで解決しました。ビルドスクリプトを使用してServiceManififestを置き換えるか、またはTokenizerを使用してポート値を置き換えることができます。

ローカルでは、アップデート/アシストされたパッケージファイルを作成してインストールし、DeployFabricApplciationを使用してそれらをデプロイして、そのようにテストすることができます。

1

この問題は発生していません。

あなたは、ファブリックのクライアントを使用してプログラム的にインスタンス数を変更することができます。

var fabricClient = new FabricClient(); 
var instanceCount = 3; 
var services = await fabricClient.QueryManager.GetServiceListAsync(new Uri("fabric:/MyMicroServiceApp")); 
var service = services.FirstOrDefault(e => e.ServiceName.AbsolutePath.Contains("MyService")); 
var updateDescription = new StatelessServiceUpdateDescription(); 
updateDescription.InstanceCount = instanceCount; 
await fabricClient.ServiceManager.UpdateServiceAsync(new Uri(service.ServiceName.AbsoluteUri), updateDescription); 

私はキューのサイズに応じて、ワーカー・プロセスの数を増やすための概念実証を開発するために、これを使用していました。 サービスのインスタンス数を変更すると、Service Fabricフレームワークはノードの間でサービスのインスタンスを自動的に展開/削除します。

関連する問題