質問

以前にこれを行ったように、ロードバランシングに移行するすべての人にとって役立つ情報を収集したいと思います。 コードが認識しておく必要がある問題。

1 台の Apache サーバーから、背後に 3 台の Apache サーバーを備えたリバース プロキシ/ロードバランサーとしての Squid に移行しました。

PHP/MySQL を使用しているため、問題が異なる場合があります。

解決しなければならないこと:

セッション

「デフォルト」の php セッション (ファイル) から分散 memcached セッションに移行しました。単純な解決策を実行する必要があります。こうすることで、ロードバランサーに「スティッキー セッション」も必要なくなります。

キャッシング

Web サーバーごとの非分散 APC キャッシュに、分散オブジェクト キャッシュ用の別の memcached レイヤーを追加し、すべての古い/時代遅れのファイル キャッシュ システムをそれに置き換えました。

アップロード

アップロードは共有 (nfs) フォルダーに移動します。

速度に関して最適化したもの:

静的ファイル

私たちのメイン NFS は lighttpd を実行し、(ユーザーがアップロードした) 画像を提供します。Squid はそれを認識しており、Apache ノードに画像をクエリすることはありません。これにより、パフォーマンスが大幅に向上しました。Squid は、これらのファイルを RAM にキャッシュするようにも構成されています。

コード/プロジェクトをロードバランシングに対応させるために何をしましたか。この移行を検討している人にとってその他の懸念事項はありますか。使用しているプラ​​ットフォーム/言語は何ですか?

役に立ちましたか?

解決

これを行う場合:

http ノードの場合は、単一のシステム イメージを強くプッシュし (これには ocfs2 が適しています)、シナリオに応じてポンドまたはクロスロードのいずれかをロード バランサーとして使用します。ノードには、スワップ用に小さなローカル ディスクが必要であり、CDSL の問題のほとんど (すべてではありません) を回避できます。

次に、Xen をミックスに加えます。少量の一時的な情報を Xenbus に配置した場合 (つまり、Linux が実際に VM ごとに処理することを約束している仮想メモリ (Committed_AS) の量)、脳死状態のロード バランサーをすぐに検出して調整できます。オラクルもこれに気づきました。現在、Linux のバルーン ドライバーの改善に取り組んでいます。

その後、特定のアプリのデータベース使用量を sqlite3 とアプリがネイティブに必要とするデータベースに分割するコストを調べますが、posix_fadvise() がその仕事を実行し、カーネル バッファを不必要に汚染しないようにデータベースを分割する必要があることに気づきました。ほとんどの DBMS サービスは独自のバッファリングを実行する必要があるため、独自のクラスタリングも実行できるようにする必要があります。これは、使用する DB クラスターのタイプとバルーン ドライバーに対して何を行うかを決定します。

その後、Memcache サーバーはスキニー initrd から起動しますが、特権ドメインはメモリと CPU の使用状況を監視し、いつさらに起動すべきかを判断します。

ハートビート/テイクオーバーの選択は、実際には、特定のネットワークとクラスターの予想される使用状況によって異なります。それを一般化するのは難しいです。

最終結果は通常、ミラーリングされたストレージに接続された状態で、仮想マシン モニターとゲストを起動するかなりのメモリを備えた 5 つまたは 6 つの物理ノードになります。

ストレージも一般的な言葉で説明するのは困難です。クラスターLVMを使用する場合もあれば、使用しない場合もあります。LVM2 が現在の文字列ベースの API から最終的に移行すると、この条件は変わります。

最終的に、このすべての調整の結果は次のようになります。 アウギアス Xenbus 経由で通信されたイベントに基づいて、その場で構成を更新します。これには、ocfs2 自体、または構成を単一のシステム イメージに常駐させることができないその他のサービスが含まれます。

これは実際にはアプリケーション固有の質問です。例を挙げてもらえますか?私は memcache が大好きですが、たとえば、誰もが memcache を使用することで恩恵を受けられるわけではありません。構成を見直しているのでしょうか、それとも一般的なベスト プラクティスについて話しているのでしょうか?

編集:

Linux中心になってしまい申し訳ありません...これは通常、クラスターを設計するときに使用するものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top