クラスター内のサーバー間でファイルを同期する

高負荷でトラフィックが増え続けるアプリケーションをホストするには、大量のリクエストを処理するために追加の電力と設定が必要です。 この場合の解決策は、サーバーを環境に追加して、アプリケーションの完全な機能をサポートすることです。

その結果、1つのサーバーを使用する場合と比較してインストールがより複雑になるという別の困難に直面します。 主な問題は、 WordPress、Drupal、Joomla、Liferay、Redmineなどのアプリケーションです。 デフォルトでは、ダウンロードされたすべてのファイルを1つのサーバーにのみ保存し、クラスター内のサーバー間でそれらを同期しません。 つまり、ファイルアップロードリクエストを処理したサーバーのみに新しいコンテンツが含まれます。

したがって、本日の記事では、Jelasticプラットフォームが提供するファイル同期の問題に対する可能な解決策を説明します。

ファイル同期


現時点では、これは複数のアプリケーションサーバー上のコンテンツの同期を自動化するのに役立つ一時的なソリューションにすぎません。 将来(レビューの処理後)、この機能をJelasticシステムのコアに統合する予定です。

このソリューションは、 ブックマークレットとサーバー側のスクリプトの組み合わせです。 基本的に、サーバー側のスクリプトは、 lsyncdやcrownなどのユーティリティを使用して実行されます。

Lsyncdは、軽量のアプリケーションサーバー同期ソリューションです。 inotifyと組み合わせて lsyncdは、システムの実際の変更が検出された場合にのみファイル同期を開始します。 その結果、同期に多くのリソースを費やすことがなく、CPUの負荷が軽減されます。

ブックマークレットを使用して、lsyncdは環境内の各アプリケーションサーバーに自動的にインストールされます。 インストールの前に、同期用のフォルダーのリストが指定されます。 その結果、1つのサーバー上の指定されたフォルダーへの変更は、他のサーバーと自動的に同期されます。

したがって、このソリューションは、ファイル同期システムを可能な限り簡素化します。 それでは、その仕組みを見てみましょう。

この例では、2つのサーバーがある環境にデプロイされたWordPressを使用します。 このマニュアルは、Drupal、Joomla、Liferay、Redmineなど、他のPHP、Java、またはRubyアプリケーションにも完全に適しています。

アプリケーションのインストール


1. WordPressアプリケーションを手動でデプロイするか、JPSウィジェットを使用してワンクリックでインストールします。 指示とウィジェットは、 WordPressドキュメントで見つけることができます。

2.次に、環境内のサーバーの数を増やしてクラスターを作成しましょう。

アプリケーションサーバー

ドキュメントを使用すると、アプリケーションサーバーを簡単に追加したり、高可用性を実現したり、クラスター化されたソリューションを構成したりすることができます。

この例では、環境に別のサーバーを追加しました。 より複雑なシナリオを使用して、WordPressアプリケーションのクラスターソリューションをセットアップできます。

3.環境設定のブラウザー開くをクリックします。

ブラウザで開く

4.必要な情報を入力して、 WordPressのインストールを完了します。

ワードプレスをインストールする

同期せずにファイルのダウンロードをテストする


同期をオンにせずに、サーバーがダウンロードしたファイルの処理を確認しましょう。

1. コントロールパネルに移動して画像またはファイルのアップロード、テーマの編集などを変更します。 例として、1つの画像をMediaセクションにアップロードしました。

画像をワードプレスにアップロードする

2. Jelasticコントロールパネルに戻り、サーバーの横にある設定をクリックします。

サーバー設定

3. webroot> ROOT> wp-contentフォルダーに移動します。
そこに、アプリケーションサーバーの1つで、追加されたファイルがある新しいアップロードフォルダーが表示されます。

ファイルをアップロードする

ファイルをダウンロードするためのフォルダーは、ホストするアプリケーションによって異なります。

以下は、いくつかの一般的なアプリケーションのそのようなフォルダーのリストです。
WordPress :webroot / ROOT / wp-content
Drupal :webroot / ROOT /サイト
Joomla :webroot / ROOT / images
Liferay :webroot / home / liferay /データ

4. 2番目のサーバーには、 アップロードフォルダーがまったく存在しないことに注意してください。

ファイルなしのサーバー

ご覧のとおり、追加されたイメージは、ファイルをダウンロードしていたサーバーにのみ配置されます。

ファイル同期を構成する


それでは、クラスタ内のファイル同期の問題を解決しましょう。

1.まず、次の図に示すように、 ブログへリンクをたどり、ブックマークレットのファイル同期をブラウザーのブックマークバーにドラッグします(ブックマークレットは[ファイル同期適用]セクションにあります)。

同期用のブックマークレット

2. Jelasticコントロールパネルに移動し、ブックマークバーのファイル同期をクリックしてスクリプトを実行します。

しおり

3.開いたウィンドウで、アプリケーションのある環境を選択し、同期するフォルダー(または複数のフォルダー)をマークします。 インストールをクリックします

同期設定

webrootフォルダー全体を選択しないでください。この場合、同期は機能しません。

4.しばらく(約2分)待って、設定を適用します。 サーバーで最初に行うことは、 install.shファイルとreplication.tarファイル、およびlsyncdフォルダーです。



5.その後、すべてのアプリケーションサーバーでwebroot> ROOT> wp-contentフォルダーを確認します。
ご覧のとおり、以前にアップロードした画像は各ノードのアップロードフォルダーにあります。

ファイルは同期されます

とても簡単です。 その結果、WordPress(またはその他の)アプリケーションで何かを追加または変更するたびに、同期が自動的にトリガーされます。

トポロジ変更時の同期の保存


アプリケーションサーバーを追加して環境トポロジを変更する場合は、スクリプトを再度実行して、新しいノードの同期を確保する必要があります。

1. 環境トポロジの変更をクリックします。

トポロジを変更する

2.サーバーを追加して変更を適用します。

サーバーを追加

3.「 ファイル同期構成」セクションのステップ2〜4に従って、内部同期プロセスをセットアップします。

スクリプトをさらに起動すると、以前の設定がリセットされ、今回選択した新しい構成が適用されます。

ログを確認する


ログを使用して同期プロセスを監視できます。

1. webroot / lsyncd / var / logフォルダーに移動します。

2.同期ステータスは、 lsyncd.logおよびlsyncd.statusファイル確認できます

ログ

私たちのソリューションが役に立つことを願っています。 さらにエキサイティングなコンテンツをダウンロードして、より多くのユーザーを引き付けてください!

同期の問題を異なる方法で解決しますか? 以下のコメントであなたの経験を共有してください。

リードリサーチエンジニア、
アレクセイ・アレクサンドロフ

Source: https://habr.com/ru/post/J213001/


All Articles