このセクションでは、ベスト プラクティスを要約し、AWS クラウドで OPDK を使用するための推奨事項を示します。
Cassandra は、ほぼすべてのポリシーのバックエンドおよびデータストアとして使用され、Apigee Edge ランタイム環境の重要な部分です。このドキュメントでは、AWS 環境向けに Casssandra を最適化する方法について説明します。
ストレージと I/O の要件
ほとんどの Cassandra I/O は順次ですが、ランダム I/O が必要な場合もあります。たとえば、読み取りオペレーション中にソート済み文字列テーブルを読み取る場合です。SSD は、ランダム読み取りオペレーションに対して非常に低レイテンシのレスポンス時間を提供し、コンパクション オペレーションに対して十分なシーケンシャル書き込みパフォーマンスを提供するため、Cassandra に推奨されるストレージ メカニズムです。レプリケーションも考慮されます。
AWS EC2 の多くのインスタンスには、EC2 インスタンスがホストされているハードウェアにハードドライブが物理的に接続されているローカル ストレージが付属しています。本番環境で Cassandra を実行する場合は、SSD とインスタンス ストアの両方を活用することをおすすめします。複数の SSD を備えたインスタンス タイプを使用する場合は、RAID0 を使用してスループットとストレージ容量を増やすことができます。
ネットワークの要件
Cassandra は Gossip プロトコルを使用して、ネットワーク トポロジに関する情報を他のノードと交換します。Gossip の使用と Cassandra の分散性(読み書き操作のために複数のノードと通信する)により、多くのデータがネットワークを通じて転送されます。Apigee でインスタンス タイプを使用する際、ネットワーク帯域幅は最低でも 1 Gbps、本番環境のシステムでは 1 Gbps を超える帯域幅を用意することをおすすめします。
CIDR が /16 の VPC を使用します。AWS のサブネットは複数の AZ にまたがることができないため、Apigee では次のことをおすすめします。
- アベイラビリティ ゾーン(AZ)ごとに 1 つのサブネットを作成する
- Apigee のインストールに 3 つのプライベート サブネットを使用し、各 AZ に 1 つの Cassandra ノードを配置します。3 つのサブネットには、Cassandra クラスタの水平拡張に対応できる十分な CIDR ブロックが必要です。
- Cassandra がソフトウェアのダウンロードとセキュリティ アップデートのためにインターネットと通信できるように、専用の NAT を使用して 3 つのパブリック サブネットを構成します。
従来のマスター / スレーブ アーキテクチャとは異なり、Cassandra はマスターレス アーキテクチャを採用しています。すべてのノードが同じ役割を果たすため、単一障害点はありません。高可用性を実現するために、Cassandra ノードを複数の AZ に分散することを検討してください。AZ 間でノードを分散することで、障害が発生した場合でも可用性と稼働時間を維持できます。
インスタンス ファミリーの選択
Cassandra の CPU 要件を確認する際は、挿入負荷の高いワークロードが IO バウンドになる前に Cassandra で CPU バウンドになることに注意してください。つまり、すべての書き込みオペレーションが commit ログに送られますが、Cassandra は書き込み効率が高いため、CPU が制限要因になります。Cassandra は同時実行性が高く、使用可能な CPU コアをすべて使用します。
Apigee では、CPU とメモリのバランスが取れたインスタンス ファミリーを使用することをおすすめします。具体的には、AWS リージョンで利用可能な場合は C5 ファミリー インスタンスを使用し、フォールバック オプションとして C3 を使用することをおすすめします。場合によっては、4xlarge が両方のファミリーで最適なインスタンスであり、最高の費用対効果を実現します。
Apigee では、Cassandra インスタンスにデフォルトのテナンシーを使用することもおすすめします。AZ あたり 1 つ以上のインスタンスにスケーリングする場合、テナンシーを専用に設定すると、すべての Cassandra インスタンスが同じ基盤となるハードウェアに配置される可能性が高くなります。ハードウェア障害が発生すると その AZ のインスタンスがすべて失われます
最適化案の概要
次の表に、Apigee Edge for Private Cloud で AWS を使用する場合の Apigee の推奨事項をまとめます。
| インスタンス ファミリー | C5d(推奨)または C3 |
| インスタンス タイプ | C(x).4xlarge |
| インスタンスストア | RAID0 を使用した SSD(ローカル ストレージ) |
| テナンシー タイプ | デフォルト |
| ノードの配置 | AZ ごとに 1 つの Cassandra ノード |
| VPC とサブネット | AZ ごとに 1 つのサブネット、リージョンごとに 1 つの VPC |
詳細については、Amazon インスタンス タイプをご覧ください。