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