Azure SQL Database Hyperscale HA レプリカの監視
by
SansanTech
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Azure SQL Database Hyperscale HA レプリカの監視 Sansan株式会社 木下賢也
Slide 2
Slide 2 text
2 ©Sansan, Inc. 自己紹介 2021年に新卒でSansanに入社。 入社当初からSansan Data Hubの開発メンバーとして従事 している。 ソフトウェアエンジニアリングの中でも特に技術的なアプ ローチが好きで、得意なことはモデリングです。 最近気になっているテーマは可観測性の向上です。 木下 賢也(Kinoshita Kenya)
Slide 3
Slide 3 text
3 ©Sansan, Inc. 今日のテーマ Azure SQL Database Hyperscale を運用して、 監視の仕組みを工夫してみた話
Slide 4
Slide 4 text
4 ©Sansan, Inc. ※詳細は省略しています (各マイクロサービスのデータストア等) Sansan Data Hubの全体像 管理用画面 組織データなど データ書き出し先 データ取り込み元 データ連携用API 組織情報作成処理群 書き出し処理群 取り込み処理群 コアデータ群
Slide 5
Slide 5 text
5 ©Sansan, Inc. ※詳細は省略しています (各マイクロサービスのデータストア等) Sansan Data Hubの全体像 管理用画面 組織データなど データ書き出し先 データ取り込み元 データ連携用API 組織情報作成処理群 書き出し処理群 取り込み処理群 コアデータ群 Azure Cosmos DB での 時系列ログの運用と改善 Azure SQL Database Hyperscale HA レプリカ の監視
Slide 6
Slide 6 text
6 ©Sansan, Inc. Azure SQL Database SQL Server の PaaS サービスレベル デプロイ vCore コンピューティング、ストレージを 個別にスケール出来る。 - General Purpose - Business Critcal - Hyperscale - Single - Elastic pool DTU コンピューティング、ストレージを DTU という単位に丸めてスケール 出来る。 - Standard - Premium - Single - Elastic pool
Slide 7
Slide 7 text
7 ©Sansan, Inc. - とあるドメインで DTU モデルを採用したけど、運用辛すぎる - vCore にしたい - 見積もり時点で分かっているデータ量だけでも vCore の他のプラン のストレージ容量上限を超すことが分かり切っていた - Table Storage もどんどんリプレイス出来たらうれしい > 100 TB やっぱ欲しい Why Hyperscale => Hyperscale だな!
Slide 8
Slide 8 text
8 ©Sansan, Inc. - 2 種類のコンピューティングノードがある - プライマリ - セカンダリ - レプリカの種類 - 高可用性レプリカ (以降 HA レプリカ) - 名前付きレプリカ - GEO 冗長レプリカ Why Hyperscale HA
Slide 9
Slide 9 text
9 ©Sansan, Inc. Azure SQL Databse Hyperscale レプリカの種類 HA レプリカ - データベース名はプライマリのものと同じ - レプリカ毎のメトリクスを取得できない - レプリカが複数ある場合でも接続文字列は同じで、任意のノー ドに分散してくれる - 接続文字列に ReadOnly を付ける - プライマリのダウンタイムを極限まで抑えたい時に使える - Zone 冗長にするには少なくとも一つの高可用性レプリカが 必要
Slide 10
Slide 10 text
10 ©Sansan, Inc. Azure SQL Databse Hyperscale レプリカの種類 名前付きレプリカ - データベース名はレプリカ毎に異なる (任意の名前を付けられ る) - レプリカ毎のメトリクスを取得できる - レプリカ毎に接続文字列が異なるので、接続先は開発者が 何とかする - 読み取りワークロード毎に適したリソースを準備できる
Slide 11
Slide 11 text
11 ©Sansan, Inc. Azure SQL Databse Hyperscale レプリカの種類 GEO 冗長レプリカ - データベース名はプライマリと同じ - プライマリとは異なるリージョンにレプリカを作成できる - 作成できるレプリカは一つのみ - リージョン跨いで冗長化させたい時に使う - プライマリがダウンした時に自動で切り替えてくれる
Slide 12
Slide 12 text
12 ©Sansan, Inc. Azure SQL Databse Hyperscale レプリカの種類 読み取り負荷分散のために高可用性レプリカを使った理由 - ゾーン冗長にしており、HA レプリカを最低 1 つ持つ必要があ る - これを上手く使って節約したい - とりあえず本番にデプロイしてフィードバックを得たい - 必要な時に追加できればいいよね
Slide 13
Slide 13 text
13 ©Sansan, Inc. 全体構成 Function Apps Service Bus Function Apps Service Bus Function Apps Service Bus SQL Database Read Write
Slide 14
Slide 14 text
14 ©Sansan, Inc. Hyperscale HA レプリカの運用のつらみ - Read レプリカに接続している処理系がスローダウンした時 に調査が辛い - レプリカのメトリクスを Azure Monitor 上で確認できない - 都度 SQL Server にログインして~を繰り返す - ログインして監視用の SQL を実行して~ - 接続文字列に `ReadOnly` を指定するの忘れがち - 定常状態が分からないと、ピンポイントの数値を見ても何 をどう評価すればよいのかわからない
Slide 15
Slide 15 text
15 ©Sansan, Inc. 全体構成 Function Apps DMV の読みとり メトリクスの送信 開発・運用 メンバー Function Apps Service Bus Function Apps Service Bus Function Apps Service Bus SQL Database Read Write
Slide 16
Slide 16 text
16 ©Sansan, Inc. HA レプリカの状態を監視する 動的管理ビューとは - SQL Server インスタンスの状態などが記録された View - SQL Database のメトリクスで表示されているのも実態 はこれ - インスタンスのヘルス状態の監視、パフォーマンスの チューニングに使える
Slide 17
Slide 17 text
17 ©Sansan, Inc. HA レプリカの状態を監視する カラム名 説明 avg_cpu_percent Service Tier の制限に対する CPU 使用率の平均値。 avg_data_io_percent Service Tier の制限に対する Data IO 使用率の平均値。 avg_memory_usage_percent Service Tier の制限に対する Memory 使用率の平均値。 avg_log_write_percent Service Tier の制限に対するトランザクションログ (MB/s) の平均 書き込み量の割合。 max_session_percent Service Tier の制限に対する最大同時セッションの割合。 (最大同時ワーカ数が 100 で 50 ワーカ使っていれば 50%) max_worker_percent Service Tier の制限に対する最大同時ワーカの割合。 (最大同時ワーカ数が 100 で 50 ワーカ使っていれば 50%) view 名: dm_db_resource_stats
Slide 18
Slide 18 text
18 ©Sansan, Inc. カスタムメトリクス用の REST API - REST API で Azure Monitor にメトリクスを送信できる - 参考: https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/metrics-store- custom-rest-api?tabs=rest#metric-values - メトリクスを記録したいリソースのリソース ID、リージョン があればとりあえず使える - あと認証
Slide 19
Slide 19 text
19 ©Sansan, Inc. カスタムメトリクス用の REST API - 送信すべきもの - メトリクスの名前空間 - メトリクスの名前 - メトリクスのタイムスタンプ - ディメンション - メトリクスの値 ■ sum, min, max, count
Slide 20
Slide 20 text
20 ©Sansan, Inc. 運用してみて
Slide 21
Slide 21 text
21 ©Sansan, Inc. 運用してみて - コンピューティングとストレージを分離してスケール出来 るのはやっぱいいよね - 定常状態の確認、スローダウン時の状態を確認し、比較で きるのはやっぱり嬉しい - 手順も減るし - Azure Monitor の UI に乗っかれるので楽 - 運用の認知負荷とか
Slide 22
Slide 22 text
22 ©Sansan, Inc. 運用してみて - 低レベルのメトリクスなので、もっとユーザーに近いメト リクスが欲しい - HA のままレプリカを増やすとうまくいかないだろうなぁ - 複数レプリカがある場合、それらを見分けることは出来 ない