web-dev-qa-db-ja.com

クラスタリングIISおよびSQLServer

IISにWCFサービスを展開し、SQL Server2008をバックエンドとして使用しています。

私の質問は、IISおよびSQLServerでcluster(load-balance/fail-over)を作成するにはどうすればよいですか?また、これを行う前にどのようなことを覚えておく必要がありますか?(たとえば、セッションをメモリ内からSQLサーバーなどに移動する必要がありますか?)

また、両方のSQLサーバーに常にミラーデータがあり、両方のSQLサーバーがロック(行、ページ、テーブル)情報をリアルタイムで共有していることを確認するにはどうすればよいですか?

これは初めてです。これはウェブファーミングと呼ばれていますか?

4
Mubashar

IISとSQLは別々のサーバーにあると思います:

IIS:Microsoft NLB機能を使用して、2つ以上のサーバー間で負荷を分散できます。それらは、WindowsのWebエディションにすることができます。それはウィンドウズに含まれています。クライアントが接続する仮想IPがあります。サーバーはこのIPを「共有」し、クライアントを別のサーバーに拡散します。マルチキャスト/ユニキャストは、ネットワーク、NICの数、およびサーバー内通信の有無によって異なります。 NLBはアプリケーションを認識しません。IISをシャットダウンすると、アフィニティがある場合にユーザーが失われます。 NLBは、IPの観点からサーバーがダウンしている場合、サーバーを削除するだけです。ここで説明されているように、IISメタベース(loadbalancercapabilities)を変更する必要があります: http://technet.Microsoft.com/en-us/library/cc757659(WS.10) .aspx ライセンスの観点からは、Windowsに含まれており、追加料金はかかりません。

WCFの観点から:クライアントはXWebサーバーの1つに接続します。これが機能している間(アフィニティを介して)、同じサーバー上でそれらを維持できます。アフィニティは、クライアントIPと仮想IP間のハッシュに基づいています。サーバーに障害が発生した場合、クライアントは他のサーバーにディスパッチされます。 httpセッション/認証を使用する場合は、データベースなど、サーバーの外部にセッションを保存する必要があります。それ以外の場合、サーバーに障害が発生すると、クライアントセッションは失われます。

SQL:さまざまなオプションがあります。SQLメカニズムを使用してデータベースを複製するか、Microsoft MSCS(クラスター)を使用します。最後の1つは、Windowsエンタープライズバージョンと外部共有ストレージを意味します。これは、高コストを意味します(ただし、SQL標準バージョンです)。 SQLピュアレイヤーを使用すると、データベースをミラーリングできます。各サーバーはローカルストレージを取得し、プライマリはその場でスタンバイサーバーにトランザクションを送信します(同期または非同期)。 Webサーバーが接続すると、サーバーは、SQLネイティブクライアントまたはADO.Netを介して、問題が発生した場合にスタンバイサーバーが使用可能であることを通知します。そのため、問題が発生した場合、Webサーバーは自動的にスタンバイサーバーに切り替わります。これはすべて、標準のSQLバージョンで機能します。データベースは完全復旧モードである必要があります。これはデータベースごとであるため、WCFが複数のデータベースを使用していて、1つだけが壊れている場合、1つのデータベースがスタンバイサーバーでアクティブになり、他のすべてのデータベースはまだプライマリサーバーにあるため、問題が発生します。

詳細はこちら: http://technet.Microsoft.com/en-us/library/cc917680.aspx

1
Mathieu Chateau

6台のサーバーIISを取得し、WCFサービスも取得しました。

IISモジュール拡張であるARR(Application Request Routing)を使用して、要求をWebファームにルーティングします。これは非常に正常に機能しています。

Mathieuが言うように、WCFサービスにもNLBを使用しています。

私のSQLサーバーでは、Hyper-Vを使用しています。SQLサーバーでは2つのVM、SQLクラスターとWindowsフェイルオーバークラスターおよびライブマイグレーションを使用しています。

フランス語でお答えしますので、翻訳して頂ければ幸いです。

Ce que vous devez faire、c'est avoir un servur decluster。 Ceserveurvaserviràmaintenirle "heart beat" entre vos deuxserveurSQL。 LesdeuxserveurSQLdoiventêtresurdesmachinesdistinct、maisdoiventpartagerlemêmepartageréseaux(SAN ou NAS ou autre)。Lesbasesdedonneesontmontésurunseulserveuràlafois。Lorsque le "heart beat"estbrisé、l'autre serverprendlarelève、et monte en unefraction de seconde lesbasededonnee et votre service est Revenue、ceci est le "failovercluster"。Lorsqueleprocessus de transfert deserveur begin vous pouvez perdrequelquespings。Cequivadétruiretousvosconnectionactuelle verslabasededonnee。Laseulfacons quevouspoovezêtre "UP"à99%c'est d'y ajouterlivemigration。Vousavezun 2 serverHyper-V。 (ホスト)qui monte vos deux server SQL(un sur chaque Host)、vous activer le live Migration entre vos deux machine virtuel、doncsivousavezàredémarerunHost(serveurquihébergeSQL)、vous faites un live Migration de votre machine sqld'unHostàl'autre.Lamémoireseratransfererd'uncotéàl'autreetvousn'aurez aucune perte de c接続。 Votreフェイルオーバー機能toujours、donc si c'est la machinevirtuellequidétientleservicesqlqui plante、alors c'est l'autre qui vaprendrelarelèveetvousperdrezalors quelques ping maisvotreserviceseraremontétrèsrapidement。

J'epèrequecelavavous aider、etdésolerpourlefrancais、mais enanglaisj'auraissurementétémalcompris。

1
Cédric Boivin