Amazon Web Services ブログ
SSL/TLS を経由して RDS MySQL, RDS MariaDB, and Amazon Aurora MySQL に sysbench を実行する
sysbench は MySQL 互換のデータベースでベンチマークを実行するために有用なツールです。もし、sysbench を使って Amazon Aurora MySQL のパフォーマンスの評価をしたい場合、Amazon Aurora Performance Assessment Technical Guide が役に立つでしょう。しかし、もし SSL/TLS を経由して sysbench を実行したい場合、このツールや AWS のサービスにあるいくつかの制限について考える必要があります。
この投稿では、RDS MySQL, RDS MariaDB, and Aurora MySQL で sysbench を実行するにあたっての考慮点と、どのように準備するべきかについて、お話いたします。
(2023年5月8日:原文の変更に合わせて一部修正・更新いたしました)
考慮点
sysbench の最新のパッケージリリースは 1.0.17 になります。もし、yum や RPM のようなパッケージマネージャから sysbench をインストールした場合、このバージョンがインストールされます。このバージョンでは、sysbench は SSL/TLS を使用するにあたって、以下のような制限を持っています:
--mysql-ssl
オプションは ON または OFF のみが指定可能でSSL_MODE
はREQUIRED
固定- クライアント秘密鍵、クライアント公開鍵、CA 証明書のすべてが必須
- クライアント秘密鍵、クライアント公開鍵、CA 証明書のパスはそれぞれ
client-key.pem
,client-cert.pem
,cacert.pem
に固定
RDS は SSL 接続のためのクライアント秘密鍵を提供しておらず、しかし sysbench 1.0.17 がこれを必要とするため、sysbench は SSL/TLS 経由で RDS MySQL, RDS MariaDB および Aurora MySQL に接続できなくなっています。もし、SSL/TLS が sysbench 1.0.17 で有効になっている場合、以下のようなエラーが出力されるでしょう:
上記の制限はバージョン 1.1 からこちらのコミットにより撤廃され、下記が可能となりました:
--mysql-ssl
オプションに sysbench バイナリをビルドするのに使用された MySQL クライアントでサポートされてい任意のSSL_MODE
を指定可能- 証明書ファイルは任意で指定可能
- それぞれの証明書ファイルのパスは
--mysql-ssl-key
,--mysql-ssl-cert
,--mysql-ssl-ca
オプションで任意に指定可能
そのため、もし sysbench 1.1 を使用していれば、下記のように SSL_MODE = REQUIRED
で SSL/TLS 経由で sysbench を RDS MySQL, RDS MariaDB, or Aurora MySQL に実行することができます:
しかし、sysbench 1.1 はパッケージとしてはリリースされていないため、ソースコードからビルドする必要があります。
sysbench 1.1 をビルドする
必要な前提パッケージをインストールする
まず最初に、MySQL ライブラリのインストールと sysbench のビルドの前提となるパッケージをインストールする必要があります。もし Amazon Linux AMI や Amazon Linux 2 または Red Hat Enterprise Linux AMI をご利用中の場合、これらのパッケージは yum コマンドで下記のようにインストールすることができます:
さらに、MySQL クライアントライブラリとヘッダファイルのインストールをする必要があります。もし、Red Hat Enterprise Linux AMI をご利用中であれば、MySQL 公式の yum リポジトリを使用することができます。MySQL Community Downloads にある RPM パッケージを利用して MySQL yum リポジトリを追加してください。リポジトリをインストールしたら、下記のように MySQL クライアントライブラリとヘッダファイルを yum 経由でインストールすることができます:
もし、Amazon Linux AMI または Amazon Linux 2 をご利用中の場合、MySQL 8.0.17 以降で必要となる OpenSSL 1.1.1 および glibc 2.28 が Amazon Linux リポジトリに存在しないため、MySQL 8.0.16 の RPM パッケージを MySQL Product Archives からダウンロードし、下記のようにインストールする必要があります:
Aurora Serverless がワイルドカード証明書を使用しており、また MySQL はワイルドカード証明書を 8.0.12 からサポート開始したため、MySQL 8.0.12 以降の MySQL クライアントライブラリおよびヘッダファイルをインストールする必要があります。この変更は MySQL 8.0.12 のリリースノートで下記のようにご確認いただけます:
以前はSSL_MODE = VERIFY_IDENTITY は、オプションについて、クライアントは接続に使用したホスト名が証明書の Common Name Value と一致するかどうかをチェックしていましたが、Subject Alternative Valueはチェックしていませんでした。現在クライアントが OpenSSL 1.0.2 以降を使用している場合は、クライアントはホスト名がサーバー証明書のSubject Alternative ValueまたはCommon Name Value のどちらかと一致するかどうかをチェックします。この変更の基礎となるパッチを提供してくれたDaniël van Eedenに感謝します。 (Bug #16211011, Bug #68052, Bug #27511233, Bug #89578)
sysbench のソースコードを GitHub リポジトリのクローンで取得する
下記のように、git clone を使用して sysbench GitHub リポジトリをクローンすることができます:
sysbench をビルドする
下記のように、ソースコードのディレクトリに存在する automake と libtool を使用したスクリプトで、sysbench をビルドすることができます:
SSL/TLS 経由で RDS MySQL, RDS MariaDB および Aurora MySQL に sysbench を実行する
これまでの手順により、下記のように、SSL/TLS 経由で RDS MySQL, RDS MariaDB および Aurora MySQL に sysbench を実行することができるようになりました:
RDS MySQL, RDS MariaDB および Aurora MySQL で SSL_MODE = VERIFY_IDENTITY
または VERIFY_CA
を使用するためには rds-combined-ca-bundle.pem 証明書をダウンロードしてください。Aurora Serverless MySQL の場合は、AmazonRootCA1.pem 証明書をダウンロードしてください。
まとめ
セキュリティはアプリケーションを実行する上で最も重要な要素で、SSL/TLS はデータベースのワークロードをセキュアに保つために有用です。しかし、SSL/TLS の使用はオーバーヘッドや通常よりも高いリソース消費を引き起こします。そのため、SSL/TLS によって引き起こされる影響の基準値を計測するために、ベンチマークは非常に重要になります。
この投稿では、なぜ SSL/TLS 経由で RDS MySQL, RDS MariaDB および Aurora MySQL に sysbench を実行するためにいくらかの準備が必要なのか、このユースケースをカバーするために sysbench をビルドする方法、そして SSL/TLS を RDS MySQL, RDS MariaDB および Aurora MySQL で使用するにあたってのいくつかの考慮点について説明いたしました。
この投稿を読むことで sysbench を SSL/TLS によって引き起こされる影響の基準値を計測するために RDS MySQL, RDS MariaDB および Aurora MySQL に sysbench を実行することができるようになり、またそれらがどのように動作するかについてさらに理解が進むことを願っています。
原文: Running sysbench on RDS MySQL, RDS MariaDB, and Amazon Aurora MySQL via SSL/TLS
About the Author
Yoshihiko Matsuzaki is a Database Engineer with the Relational Database Services (RDS) team at Amazon Web Services.