5

過去に行ったように、コードで認識しなければならない問題があるため、負荷分散に移行するすべての人に役立つ情報を収集したいと思います。

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

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

解決しなければならなかったこと:

セッション

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

キャッシング

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

アップロード

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

速度のために最適化したもの:

静的ファイル

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

コード/プロジェクトをロードバランシングに向けて準備するために何をしましたか?この移行について考えている人にとってのその他の懸念事項はありますか?また、使用しているプラ​​ットフォーム/言語は何ですか?

4

1 に答える 1

1

これを行うとき:

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

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

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

次に、Memcacheサーバーはスキニーinitrdから起動しますが、特権ドメインはメモリとCPUの使用状況を監視しているため、さらに起動するタイミングがわかります。

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

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

ストレージも一般的な用語で説明するのは難しいです。クラスターLVMを使用することもあれば、使用しないこともあります。LVM2が最終的に現在の文字列ベースのAPIから離れたときに、notは変更されません。

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

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

編集:

Linux中心でごめんなさい...それは私がクラスターを設計するときに通常使うものです。

于 2009-03-03T09:14:51.393 に答える