日本情報通信の江口です。
本記事はNI+C TeamGCP Advent Calendar 2023 16日目の記事となります。
はじめに
2023/12/08のリリースノートにて、CloudSQLに関するアップデートがありました。
とはいえ、要は何なのか?何をすればいいのか?もまだ公式の情報を頼りにするしかないですが、速報的に整理してみます。
New Network Architectureとは
公式ページでの説明の通り、様々な機能面での更新があるネットワーク構成の上にCloudSQLが乗るようになるようです。
目を引くものとしては、Alloyとのマイグレーション、Assured Workloadsが利用できる、という部分でしょうか。
NewとOld
今使っているのはNewなのかOldなのか、2023/12/13時点では画面から見てわかるものではありませんので、確認が必要です。
まず定義としては、
「Cloud SQL インスタンスが 2021 年 8 月より前に作成された Virtual Private Cloud (VPC) ネットワーク プロジェクトを使用している場合」
にそのネットワーク上に作られているCloudSQLインスタンスがOldです。
あくまで、ネットワークプロジェクトが 2021 年 8 月より前なので、最近作ったインスタンスだとしてもOld Network Architectureの可能性がある点はご注意ください。
実際に該当するインスタンスを確認するには、gcloudコマンドで実施する必要があります。SDK 455.0.0から関連パラメータが使えるようになっているようです(Release Notes)
$ INSTANCE_NAME=sample-instance
$ PROJECT=sample-project
$ gcloud sql instances describe $INSTANCE_NAME --project $PROJECT
databaseVersion: POSTGRES_13
region: asia-northeast1
sqlNetworkArchitecture: OLD_NETWORK_ARCHITECTURE
state: RUNNABLE
私が過去に作成していたインスタンスはOld Network Architectureということでした。
バージョンアップは必要?
まず、このバージョンアップにかかわる期限は12/13時点では説明されていません。したがって、少なくとも急いで実施する必要は無いでしょう。
さらに、バージョンアップをするにあたっても課題が複数あります。
-
リージョン制限
インスタンスをアップグレードできるのは、それがリージョン内のネットワーク内の唯一のインスタンスである場合のみです。同一ネットワークに複数のインスタンスがあるとアップグレードできない、というのも何がどういうことなのか不明ですが、実際にやってみた結果が以下でした。
$ gcloud sql instances patch $INSTANCE_NAME --project $PROJECT --upgrade-sql-network-architecture
ERROR: (gcloud.sql.instances.patch) INVALID_ARGUMENT: Request contains an invalid argument.
CloudLoggingにも出力はありましたが、同一のリージョン&ネットワークで複数のインスタンスはバージョンアップをサポートしていない、という、制約事項の説明通りのものだけでした。
Upgrading SQL network architecture is not supported in Network/Region combinations with multiple CloudSQL instances.
-
Cloud SQLでのHA
フェイルオーバー レプリカを備えた従来の高可用性 (HA) インスタンスは、アップグレードではサポートされていません。
New Network Architectureでのネットワーク構成が、高可用性に伴うリージョンでの取り扱いなどに影響するのでしょうか。高可用性インスタンスがサポートされなくなるのは本番系での利用ではリスクといえます。
-
Cloud SQLでの対障害設定
ポイントインタイム リカバリまたは レプリケーションが有効化または無効化されている場合、インスタンスをアップグレードすることはできません。
文言からはもはや判断が出来ません。このあたりの障害に備えた設定のなんらかがあるとするとアップグレードできない、というくらいまでの解釈が限界です。
それでもバージョンアップするなら
上記の通り、バージョンアップするうえではSQLのバージョンだとかインスタンス単体の話ではなく、ネットワークの都合だったり、他インスタンスの都合などに引っ張られ、バージョンアップができないケースが多いです。
これらを乗り越えてまでバージョンアップすることが必要かどうかは難しいところでしょう。
そのうえでバージョンアップをするなら、その際にも気にかけるべきことがあります。
- 本番系で利用しているなどの場合には、バージョンアップの計画を立てましょう。
バージョンアップの際、データベースのダウンタイムが約 2 分発生するためです。Cloud SQL Enterprise Plusエディションなどでダウンタイムが短くなったなどの発表がありましたが、こういうところではまだインパクトの大きいダウンタイムがあるようです。
- レプリカを作成している場合、プライマリとレプリカは個別にアップグレードが必要です。レプリカインスタンスを作って運用している場合には忘れずに実施しましょう。
まとめ
リリースしたばかりのものとはいえ、課題が多くて実施しづらいというのが正直な感想です。
Assured Workloadsを使いたいなど、このアップグレードをしないと得られない恩恵がある場合でしたら、制約に引っかからないようなPoC的な環境にて試してみるのは選択肢としてあるかもしれません。
個人的には、しばらくは様子見をしてアップグレードが現実的にできるようになるのを待ちたいと思います。
参考
- https://cloud.google.com/sql/docs/mysql/upgrade-cloud-sql-instance-new-network-architecture#upgrade-network-architecture
Google Cloud、Google Workspace に関するご相談はXIMIXへ!
Google Cloud、Google Workspaceに関する お問い合わせはこちら