Cloud Spanner 組み込みのオートスケーラー、Managed autoscaler が登場!
こんにちは、クラウドエースの SRE チームに所属している妹尾です。
今回は Cloud Spanner の運用が劇的に楽になるアップデートがあったのでご紹介します!
概要
2023/11/14 に Cloud Spanner に組み込みのオートスケーリング機能が実装されました![1]
この機能を使うと今まで外部プログラムに依存していたオートスケール機能を Cloud Spanner の設定だけで実現することが可能になります。
利用方法
利用方法は作成時にコンソールから指定するだけでとても簡単です。
コマンドにオプションを付与して指定もできます。
クラスタを新規作成する場合は gcloud spanner cluster create
に、
既存のクラスタの構成変更をしたい場合は gcloud spanner cluster update
に以下のフラグを追加するだけです。
--autoscaling-min-nodes
--autoscaling-max-nodes
--autoscaling-min-processing-units
--autoscaling-max-processing-units
--autoscaling-high-priority-cpu-target
--autoscaling-storage-target
- ノード(
nodes
)と処理ユニット(processing-units
)はどちらか片方を使う - ノード(もしくは処理ユニット)と、ストレージ容量の設定は両方指定する
の2つを満たす必要があるようですので注意しましょう。
実際にこれらのフラグを利用したインスタンスを作成してdescribe
コマンドで確認してみると、
セットされた値が確認できます。
seno:~$ gcloud spanner instances create autoscale-instance --config=PROVISIONED \
--autoscaling-max-nodes=3 \
--autoscaling-min-nodes=1 \
--autoscaling-high-priority-cpu-target=80 \
--autoscaling-storage-target=80
seno:~$ gcloud spanner instances describe autoscale-instance
autoscalingConfig:
autoscalingLimits:
maxNodes: 3
minNodes: 1
autoscalingTargets:
highPriorityCpuUtilizationPercent: 80
storageUtilizationPercent: 80
config: projects/ca-seno-test/instanceConfigs/regional-asia-northeast1
createTime: '2023-10-27T22:31:06.337485Z'
displayName: autoscale
instanceType: PROVISIONED
name: projects/ca-seno-test/instances/autoscale
nodeCount: 1
processingUnits: 1000
state: READY
updateTime: '2023-10-27T22:31:06.337485Z'
seno:~$
検証
どのような挙動をするのか、実際に構築して確認してみました!
オートスケールをONにしたインスタンスを建てて、そこへ ComputeEngine で負荷をかけます。
簡単のために、閾値はかなり低めの 20% を指定してみました。
負荷の生成は、Golang で簡単な INSERT クエリを発行するプログラムを書いて go test -benchmark
で回す事で負荷を生成してみました。
結果は以下のようになりました!
負荷が閾値を越えてから5分も経たずにスケールする事ができています。
スケールインは、負荷が下がってから15分程度で実行されている事がわかりますね。
念のため書いておきますが、 この間僕はクラスタに対して一切の操作をしていません!
完全自動でインスタンスのスケールを行なってくれています。
これはSpannerの特徴で皆様ご存じかもしれませんが、この間全てのクエリは成功しております。
無限にスケールする最大 SLA 99.999% のデータベース これが Spanner の真価です。
まとめ
今回は新しく登場した Spanner の自動スケーリング機能について検証してみました。
元々強力なデータベースでしたが、この機能の登場でさらに簡単かつ気軽に使えるデータベースとなりました。
コスト面でもかなり有用な機能ですので、皆様ぜひとも導入してみましょう!
紹介が最後になってしまいましたが、この機能は Preview 段階となっています。
Spanner が利用されるシステムはミッションクリティカルで、Prewiew な機能はできるだけ避けたいシステムが多い印象です。
一日も早い GA が待たれますね!
-
(実は 10/24 にフラグだけひっそりと追加されていたようです) ↩︎
Discussion