このセクションでは、ベスト プラクティスの概要と、AWS クラウドで OPDK を使用する際の推奨事項について説明します。
Cassandra は、ほぼすべてのポリシーでバックエンドおよびデータストアとして使用され、Apigee Edge ランタイム環境の重要な要素です。このドキュメントでは、AWS 環境向けの Casssandra の最適化について説明します。
ストレージと I/O の要件
Cassandra のほとんどの I/O はシーケンシャルですが、ランダム I/O が必要な場合もあります。たとえば、読み取りオペレーション中に並べ替えられた文字列テーブルを読み取る場合です。SSD は、Cassandra で推奨されるストレージ メカニズムです。これは、ランダム読み取りオペレーションの応答時間が非常に短く、コンパクション オペレーションに十分なシーケンシャル書き込みパフォーマンスを提供するためです。ここではレプリケーションも考慮されます。
AWS EC2 の多くのインスタンスにはローカル ストレージが付属しており、EC2 インスタンスがホストされているハードウェアにハードドライブが物理的に接続されています。Apigee では、本番環境で Cassandra を実行するときは、SSD ストアとインスタンス ストアの両方を利用することをおすすめします。複数の SSD を持つインスタンス タイプを使用する場合は、RAID0 を使用することでスループットとストレージ容量を増やすことができます。
ネットワークの要件
Cassandra は、Gossip プロトコルを使用して、ネットワーク トポロジに関する情報を他のノードと交換します。Gossip が使用されていることと、Cassandra の分散的な性質(読み取りと書き込みのオペレーションのために複数のノードと通信することを含む)により、ネットワーク経由で大量のデータ転送が発生します。ネットワーク帯域幅が 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 要件を確認すると、Cassandra で挿入負荷の高いワークロードは、IO バウンドになる前に CPU バウンドになることに注意してください。つまり、すべての書き込みオペレーションは commit ログに送信されますが、Cassandra は非常に効率的であり、CPU が制限要因になります。Cassandra は同時実行性に優れ、可能な限り多くの CPU コアを使用します。
CPU とメモリのバランスが取れたインスタンス ファミリーを使用することをおすすめします。具体的には、AWS リージョンで利用可能な場合は C5 ファミリー インスタンスを使用し、フォールバック オプションとして C3 を使用することをおすすめします。両方のファミリーで、4xlarge が最良のコスト パフォーマンスを提供する最適なインスタンスもあります。
また、Cassandra インスタンスではデフォルト テナンシーを使用することをおすすめします。テナンシーを専用に設定すると、AZ あたり 2 つ以上のインスタンスにスケールする場合、ほとんどの場合、すべての Cassandra インスタンスが同じ基盤となるハードウェアに配置されます。そのため、ハードウェアに障害が発生した場合、その AZ のすべてのインスタンスが失われる可能性があります。
推奨事項の概要
次の表は、Apigee Edge for Private Cloud で AWS を使用する場合の Apigee の推奨事項をまとめたものです。
インスタンス ファミリー | C5d(推奨)または C3 |
インスタンス タイプ | C(x).4xlarge |
インスタンス ストア | RAID0 の SSD(ローカル ストレージ) |
テナンシーの種類 | デフォルト |
ノードの配置 | AZ あたり 1 つの Cassandra ノード |
VPC とサブネット | AZ ごとに 1 つのサブネット、リージョンごとに VPC を割り当てる |
詳細については、Amazon インスタンス タイプをご覧ください。