これが私のために働いたものです。
インフラストラクチャの観点からは、クラスター化された 2 つの Windows サーバーが必要です。(2 つの標準的な Windows Server ボックスで十分です。クラスタリング ピースをインストールして構成できます。ほとんどのシステム管理者は、この方法を知っているはずです。) 次に、クラスターの両方のノードにサービスをインストールし、両方をオフにして MANUAL に設定します。起動。次に、クラスタ化されたリソースをサービスの Windows クラスタ アドミニストレータに追加します。このアドミニストレータは、アクティブなノードでサービスのオンとオフを管理します。サービスがいつどのノードで実行されているかを Windows クラスターに管理させます。これは、サービスのクラスタリングの簡単な部分です。
サービスの観点からは、可能な限りステートレスになるようにサービスを設計する必要があります。これはちょっとつまらないアドバイスですが、実際にはサービスが何をしているかによって異なります。設計では、コードの存続期間中のある時点で最悪の時点で停止すると想定してください。node2 のサービスは、node1 が中断した場所をどこから取得するかをどのように知るのでしょうか? それはあなたが設計する必要がある難しい部分です. サービスの実行内容に応じて、最後に完了したタスクを db テーブルまたは共有データ ファイルに残すことができます。また、最初から開始して、そのタスクが完了しているかどうかを再確認してから実行することもできます。
繰り返しますが、実際には、サービスが何を達成する必要があるかによって異なります。お役に立てれば。