Robocopyを使用したIISレプリケーション上のWordPress


10

4つのIISサーバーにワードプレス環境をセットアップしました。robocopyスクリプトをトリガーするスケジュールされたタスクを使用して、5分ごとにwordpressディレクトリを複製することを検討しています。

そのようなアプローチについての意見は何ですか?誰かがこれまたは類似のものを使用したことがありますか?


4 IISサーバーの物理またはVMとは何ですか?データまたはデータベースと構成を複製していますか?機能しないHAを実現しようとしている場合に、4つのサーバー1がマスター(私は想定している)で、他のサーバーはパッシブである理由がわかりません。
Anthony Fornito 2016年

1
2番目の質問(そしておそらく最も重要な質問)は、なぜWindowsでワードプレスを実行しているのですか?
Anthony Fornito 2016年

@AnthonyFornito、返信ありがとうございます。内部的な理由により、Windowsでワードプレスを実行しています。私はそれで作業しようとしています。私はウェブサイトファイルの複製の後にいます(データベースの複製はすでにMYSQLで処理されています)。フロントエンドはAzure上のVMです。私は主に、すべてのフロントエンドが同じWebサイトファイルを共有するソリューションを求めています。何か提案したいことはありますか?
joebegborg07

回答:


12

同じファイルを同時に共有する4つのフロントエンドサーバーがあり、それぞれが何らかの種類のDFSやディレクトリ同期専用のサードパーティプログラムを使用せずに書き込むことができるのは、悪夢です。

紺碧を使用すると、3つのことを調べることができます。

  1. 共有ストレージ。独自の専用ストレージの取得に関連するコストが発生する可能性があります。Azureはこれを提供していますが、構成はわかりません。これにより、すべてのファイルが書き込まれるとすぐに各サーバーで使用できるようになります。

  2. Azure DFS、DFSはWindowsベースのディレクトリ同期ツールであり、かなりうまく機能します。また、コストについてはわかりませんが、構成は少し簡単かもしれません。DFSは非同期で動作するため、多少の遅延はありますが、それほど多くはありません。

  3. (これはどのように行われるかを説明し、それについては二度と話しません。これは恐ろしい考えであり、失敗します。)最初に4つのサーバーすべてのデータを比較し、次に差分データをコピーするスクリプトを作成します。スクリプトを実行する1台のサーバーで各ディレクトリを共有し、サーバーが読み取りと書き込みを行えるようにアクセス許可をセットアップしてから、トラブルシューティング、トラブルシューティングを行う必要があります。

上記のどちらのオプションでも問題ありません。あなたの仕事がこの作業に依存している場合は、オプション3を避けてください。

それは言われていて、あなたはお金を使わないでください、以下のステップに従ってください。

  1. 「無料ファイル同期」と呼ばれるプログラムを見てください。無料版には本当に良い機能がいくつかありますが、有料版があると思いますが、あなたが得る拡張機能についてはよくわかりません。私が開発環境の多くで使用しているのは、あなたが何をしようとしているかに似ていて、DFSをセットアップするのが面倒だったのと同じようなことを達成しようとしたときです。

  2. 1つのサーバーのみを書き込み可能にします。これは、記事の作成がServerAに移動するか、web.configでURLを書き換えるか、またはWordPressがphpを使用するかを示す各サーバーのURIを設定することで簡単に行えます。

    header( '場所:http : //myhost.com/mypage.php ');

それぞれが少しのコーディングとPHP、IISの知識を必要とします。

  1. ServerAが作成者サーバー(書き込み可能なサーバーのみ)である本当に楽しい部分は、ロードバランサーなしで読み取るためにトラフィックをどのようにServerB、ServerC、およびServerDに転送するのですか?

答えは簡単ではありませんが、そうではありません。ある顧客が、負荷分散装置を使用せずに、一連のPowerShellスクリプトを使用して、あるサーバーから別のサーバーに接続を移動できるロードバランサーを使用しないことを強く求めていました。各ボックスまたはそのようなものでワーカープロセス。どちらにしても、実行するのは非常に難しく、時間とエネルギーを費やす価値はありません。

サーバーでネットワーク負荷分散を構成できないかどうかを確認します。追加のIPが必要ですが、DNSの変更は1つだけであり、トラフィックを分散して3つのサーバー間で読み取ることができます。

幸運を!


あなたの提案に感謝します。単一の中央ストレージは、以前にそのセットアップを行ったものの、高トラフィックに対応していないため、私たちにとってボトルネックでした。期限のため、迅速な解決策が必要でした。最終的には、ピアツーピアのリアルタイム同期ソリューションであるresilioを使用しました。これは、任意のサーバーの変更を検出し、他のサーバーに複製します。同じまたは類似の問題を抱えている人なら誰でも、これで私たちと同じように問題を解決できると思います。WPバックエンドのURL書き換えの提案をテストし、他のマシンに変更をプッシュしています。再度、感謝します。
joebegborg07 2016年

NLBはAzureでは機能しません(本当に恐ろしい悪夢が必要な場合は、Azure VMのARPテーブルを調べてみてください。レイヤー2はありません)。
Massimo 2017

12

すべての提案の人々に感謝します。

私たちのソリューションは、resilioと呼ばれるツールを使用したピアツーピア同期アプローチを使用していました。

Resilioを使用すると、ピアツーピアの同期クラスターで多数のコンピューター(この場合はIISフロントエンド)を構成できます。クラスター内の各コンピューターからフォルダーが選択され、同期プロセスに使用されます。

resilioサービス(バックグラウンドで実行されるWindowsサービス)は、これらのフォルダーの変更を監視し、問題のフロントエンドで指定されたフォルダーのいずれかに変更が加えられた場合、resilioはその変更を他のサーバーにプッシュします。

これが将来同様の問題に直面している他の人たちの助けになることを願っています。


11

スケジュールされたタスクはないと思います。Robocopyは素晴らしいアプローチです。5分のウィンドウがあるため、リソースが要求される場合がありますが、ロードバランサーによって選択されたサーバーはリソースを利用できません。ほぼ静的なサイトの場合、これは頻繁に変更されるビジーなサイトよりもはるかに少ない頻度で発生します。周波数を高くするか、Bittorrent Sync(現在はResilio Syncと呼ばれます)などの別の同期テクノロジを使用すると、これはかなり改善されますが、問題は解消されません。

wp-contentまたはwp-content / uploadsフォルダーを共有ドライブに置くと、より良いソリューションになります。これを見る別の方法は、サーバーの1つにそのフォルダーをホストさせ、他のサーバーにそれを共有させることです。ディスクキャッシュを使用すると、サーバーの負荷が他のサーバーよりもはるかに高くなることはありません。

更新

ページキャッシングに関するアイデアについては、この記事をご覧ください。これはCDNに関するものです。これはNginxに関するものであるため、IISで使用する必要がありますが、その背後にある理論はどのWebサーバーでも有効です。


@Timの提案に感謝します。あなたが言ったように、ウェブサイトは動的であり、WordPressプラグインによる定期的なマイナーファイル更新があります。つまり、すべてのフロントエンドで、時々異なるファイルが存在する可能性があります。このような本番環境(約500〜1000人の同時ユーザー)をテストしたことがありますか。つまり、中央リポジトリにWebサイトファイルを保存し、共有ドライブを介してマッピングしますか?はいの場合、体験はどうでしたか。
joebegborg07

いいえ、そのシナリオはテストしていません。CDNをキャッシュして使用するため、テストする必要はありません。バックエンドファイルサーバーを含むフロントエンドサーバーの負荷テストを行う必要があります。ただし、ページがユーザーごとにカスタマイズされていない場合、コンテンツディストリビューションを使用する場合と同様に、ページキャッシュによって負荷を大幅に削減できます-CloudFlareには無料枠があります。5分ごとに更新する場合も同様です。その背後にある理論については、Googleの「Nginx Microcaching」ですが、IISで明らかに異なる方法で実装する必要があります。この方法を使用する場合、ヘッダーのキャッシュは非常に重要です。上記の更新も参照してください。
Tim
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.