Evernoteアーキテクチャでシャードの構成を変更した方法と理由

Evernoteアーキテクチャに関する昨年のレビュー投稿では、データストレージとアプリケーションロジックの両方に使用する「シャード」サーバーの概要を説明しました。 Evernoteは、たとえばソーシャルネットワークよりも個人的なサービスであるため、個々のユーザーのデータを異なるシャードに簡単に拡散して、かなり単純な線形スケーラビリティを提供できます。 このようなシャードの各ペアは、2つの仮想マシンを制御します。



画像



これらの各仮想マシンは、15,000 rpmのスピンドル速度を持つ300ギガバイトのCheetahドライブのペアのRAID-1アレイ上のMySQLデータベースにトランザクション「メタデータ」を保存します。 3テラバイトのConstellationドライブの独立したRAID-10アレイ(7200 rpm)がパーティション化され、各ユーザーの大きなLuceneテキスト検索インデックスファイルが保存されます。 ペアの仮想マシンは、同期DRBDを使用して、これらの各パーティションを現在のプライマリマシンから現在のセカンダリマシンに複製します。



これらのシャードには、少なくとも4年間、100,000人のEvernote登録ユーザーの快適なデータ処理に十分なディスク容量とI / Oサポートがあり、4Uの場合には追加のドライブベイも装備されているため、必要に応じて後でアップグレードできます。 デュアルL5630プロセッサと48ギガバイトのRAMを考えると、各ユニットのコストは最大10,000ドルで、エネルギー消費量はそれぞれ約374ワットです。 つまり、登録ユーザーは、ハードウェアコストとエネルギーの3.7ミリワットで約0.10ドルを占めます。



改善の機会



上記のシャードの生成により、非常に高いレベルのデータ冗長性を備えた優れた価格性能比が得られました。 しかし、この構成が私たちの目的にとって理想的ではないいくつかの領域を発見しました。 例:

  1. MySQLデータベース用の15,000 rpmのディスクは、通常、InnoDBがキャッシュとI / Oのシリアル化で素晴らしい仕事をしたため、95%の時間アイドル状態になります。 ただし、大規模なアカウントを持つユーザーが新しいデバイスでプライマリデータの同期を開始すると、ランダムなボトルネックが発見されました。 それらのメタデータがRAMバッファーにまだ存在しない場合、大量のI / O操作は非常にコストがかかる可能性があります。
  2. ユーザーのLucene検索インデックスは、予想よりもはるかに多くのI / Oを生成します。 Luceneは、MySQLの2倍の読み取り/書き込み操作を占めることがわかります。 これは主に使用モデルによるものです。メモを作成または編集するたびに、所有者のインデックスを更新し、変更に関する情報をディスクに送信して、すぐに有効にする必要があります。
  3. DRBDは、1つまたは2つの小さなパーティションを複製するのに最適ですが、各サーバーのかなりの数の大きなパーティションに関しては非常に不便です。 各セクションは、個別に構成、管理、および監視する必要があります。 さまざまな問題により、すべてのリソースの完全な同期が必要になる場合があり、1 Gb / sの帯域幅を持つ専用クロスオーバーケーブルがある場合でも、長時間かかることがあります。


これらの制限は、各シャードに割り当てることができるユーザーの数を制限する主な要因でした。 メタデータI / O操作の管理性とパフォーマンスを改善することで、ユーザーアカウントの密度を安全に増やすことができます。 新世代のシャード、ソリッドステートドライブへのメタデータストレージの転送、オペレーティングシステムからアプリケーションへの過剰なファイルストレージのロジックでこれらの問題を解決します。



新しい構成



新しい構成では、ラックが12個の4Uサーバーラックに置き換えられます。これらのラックには、メタデータとアプリケーション用の14個の1Uシャードと、ファイルストレージ用の4個の4Uシャードがあります。



画像



Shard 1Uは、よりシンプルな仮想マシンのペアを管理します。各仮想マシンは、300 GB Intel SSDの個別のRAID-5アレイ上の単一パーティションを使用します。 これら2つのパーティションはDRBDを使用して複製され、仮想マシンイメージは一度に1つのサーバーでのみ実行されます。 ソリッドステートドライブの容量の最大80%を使用しているため、入出力操作の記録の信頼性とスループットが大幅に向上します。 RAID-6を使用する代わりに、各ブロックにスペアSSDを含めました。これにより、回復時間が短くなり、DRBDを使用したレプリケーションにより、複数のディスクの仮想的な障害が発生した場合に安全になります。



ファイルストレージは、メインサーバー上のローカルディスクから、RAID-6アレイ上の巨大なファイルシステムを管理する個々のWebDAVサーバーのプールに転送されました。

リソースファイルをEvernoteに追加するたびに、アプリケーションは、メタデータトランザクションが完了する前に、このファイルのコピーを同じラック内の2つの異なるファイルサーバーに同期的に書き込みます。 冗長性の原則のリモート実装は、バックグラウンドでの非同期データ転送を介して各新しいファイルをリモートWebDAVサーバーに複製するアプリケーションによっても保証されます。



結果



この新しい構成には、少なくとも4年間、単一のシャードで最大200,000人のユーザーを処理するのに十分なI / Oおよびメモリ操作の容量があります。 14個のシャードと4個のファイルサーバーのラックには約13万5千ドルの費用がかかり、3900ワットを消費します。



したがって、将来のサーバーの特定の数と新しいサーバーの電力消費は60%減少しました。 他のサービス機器(スイッチ、ルーター、ロードバランサー、画像認識テキスト認識サーバーなど)の特定の電力消費は、以前のアーキテクチャと比較して合計で50%減少しました。 これらの変更はすべて、長期的にはホスティングコストを削減します。



注目度の高い環境宣言を行いたくありません(そして、KDPVとしてふわふわの服を抱きしめているPhil Libinの写真を挿入することもできます)。



明らかな節約に加えて、ソリューションを評価およびテストするプロセスにより、使用するコンポーネントとテクノロジーをよりよく理解することができます。 SSDからのRAIDアレイのテストと最適化の詳細、I / O帯域幅、DRBD管理などに関するXenとKVMの比較評価について、さらにいくつかの投稿を書く予定です。この情報が同僚に役立つことを願っています。負荷の高いサービスを作成します。



All Articles