Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HeatWave on AWS の PrivateLink インバウンドレプリケーション...
Search
hmatsu47
PRO
October 17, 2024
Technology
0
50
HeatWave on AWS の PrivateLink インバウンドレプリケーションで Aurora フェイルオーバーに追従する
HeatWavejp Meetup #10 2024/10/17
hmatsu47
PRO
October 17, 2024
Tweet
Share
More Decks by hmatsu47
See All by hmatsu47
PostgreSQL+pgvector で GraphRAG に挑戦 & pgvectorscale 0.7.x アップデート
hmatsu47
PRO
0
5
LlamaIndex の Property Graph Index を PostgreSQL 上に構築してデータ構造を見てみる
hmatsu47
PRO
0
7
PostgreSQL+pgvector で LlamaIndex の Property Graph Index を試す(序章)
hmatsu47
PRO
0
11
HeatWave on AWS という選択肢を検討してみる
hmatsu47
PRO
0
6
HeatWave on AWS のインバウンドレプリケーションで HeatWave エンジン有効時のレプリケーションラグを確認してみた!
hmatsu47
PRO
0
15
CloudWatch Database Insights 関連アップデート
hmatsu47
PRO
0
26
さいきんの MySQL との付き合い方 〜 MySQL 8.0 より後の世界へようこそ 〜
hmatsu47
PRO
0
29
ベクトルストア入門
hmatsu47
PRO
0
25
Aurora DSQL について
hmatsu47
PRO
0
27
Other Decks in Technology
See All in Technology
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
2
390
生成AIでwebアプリケーションを作ってみた
tajimon
2
130
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
160
Oracle Audit Vault and Database Firewall 20 概要
oracle4engineer
PRO
3
1.6k
第9回情シス転職ミートアップ_テックタッチ株式会社
forester3003
0
150
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1.3k
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
2
1k
本当に使える?AutoUpgrade の新機能を実践検証してみた
oracle4engineer
PRO
1
120
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
140
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
16
4.6k
AI技術トレンド勉強会 #1MCPの基礎と実務での応用
nisei_k
1
240
VISITS_AIIoTビジネス共創ラボ登壇資料.pdf
iotcomjpadmin
0
150
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
245
12k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
The Cult of Friendly URLs
andyhume
79
6.4k
Fireside Chat
paigeccino
37
3.5k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Done Done
chrislema
184
16k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.8k
Embracing the Ebb and Flow
colly
86
4.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
A Tale of Four Properties
chriscoyier
160
23k
How to Ace a Technical Interview
jacobian
277
23k
Transcript
HeatWave on AWS の PrivateLink インバウンドレプリケーションで Aurora フェイルオーバーに追従する HeatWavejp Meetup
#10 2024/10/17 まつひさ(hmatsu47)
自己紹介 松久裕保(@hmatsu47) • https://qiita.com/hmatsu47 • 現在: ◦ 名古屋で Web インフラのお守り係をしています
◦ SRE チームに所属しつつ技術検証の支援をしています ◦ HeatWave は諸事情で検証を一旦中止→最近復活しました ◦ 昨年 10 月(#04)以来の発表参加です 2
余談ですが • Oracle Cloud ホーム画面 3
余談ですが • サービスに移動後 🤔 4
本日お話しする内容 • HeatWave on AWS のインバウンドレプリケーション ◦ ソース DB が
Aurora → binlog を流せるのは Writer のみ ▪ Writer フェイルオーバーで新 Writer に接続し直す必要あり ◦ PrivateLink 経由→ NLB ターゲットが IP アドレスベース ▪ DNS でのフェイルオーバー追従ができない ◦ Aurora クラスターのイベントを捕捉してフェイルオーバー追従 →実際に試してみた • https://zenn.dev/hmatsu47/articles/heatwave-on-aws-privatelink 5
図にすると 6
設定の流れ…の前に • ここでフェイルオーバーのデモ①:仕込み ◦ Aurora 側のデータを確認 ◦ HeatWave 側のデータを確認 ◦
Aurora クラスターをフェイルオーバー ◦ インバウンドレプリケーションの異常が検知されたことを確認 ◦ Aurora 側でデータを追加 7
設定の流れ • ターゲットグループの属性を微調整 ◦ 旧ターゲット登録解除→新ターゲット登録が正常動作するように • Aurora クラスターに Reader を追加
• ターゲット入れ替え用の Lambda 関数を作成 • SNS トピックとサブスクリプションを作成 • Aurora(RDS)のイベントサブスクリプションを作成 ◦ クラスター failover イベント 8
ターゲットグループの属性を微調整 • ターゲットが入れ替わってもフェイルオープンは維持 ◦ ターゲットが 1 つの場合はデフォルト動作だが念のため設定 • ターゲットが入れ替わったときにできるだけ速く再接続 ◦
ターゲット登録解除で即接続終了(Draining なし) • クロスゾーン負荷分散を有効化 ◦ Aurora クラスターのインスタンスを複数 AZ で冗長化している ケースではこの設定が必要 9
Aurora クラスターに Reader を追加 • Writer 1 インスタンスのみの場合 ◦ フェイルオーバー先の
Reader インスタンスを追加しておく ◦ 通常は 1 インスタンス目の Writer とは別 AZ に(AZ 冗長化) 10
ターゲット入れ替え用の Lambda 関数を作成 • SNS のメッセージ内容を見てターゲットを入れ替える ◦ メッセージから切り替え後のインスタンス名を抽出 ◦ 現ターゲットと異なる場合、現ターゲットを外して切り替え後の
インスタンスを新たに登録する Python コードを実装 https://zenn.dev/hmatsu47/articles/heatwave-on-aws-privatelink-failover#%E3%82 %BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88%E5%85%A5%E3% 82%8C%E6%9B%BF%E3%81%88%E7%94%A8%E3%81%AE-lambda-%E9%96 %A2%E6%95%B0%E3%82%92%E4%BD%9C%E6%88%90 11
SNS トピックとサブスクリプションを作成 • Aurora のイベントを Lambda に受け渡すためのもの ◦ SNS トピックとサブスクリプションを作成
◦ サブスクリプションフィルターで failover 開始イベントのみを通 知 12
Aurora のイベントサブスクリプションを作成 • Aurora で発生したイベントを捕捉するためのもの ◦ ターゲット:先ほどの SNS トピックを指定 ◦
ソース:Aurora クラスターの failover イベントを指定 13
ところで • NLB ターゲットグループのヘルスチェックは? ◦ MySQL プロトコルを喋れない ◦ ヘルスチェックが「異常なリクエスト」と見なされないように TCP:40000
など MySQL に無関係なポート番号で上書き ▪ あえてヘルスチェックが効かないように設定(フェイルオープン狙い) ◦ 複数のターゲットを同時に登録すると誤動作リスクあり 14
ひととおり説明が終わったところで • フェイルオーバーのデモ②:結果確認 ◦ Aurora クラスターの Writer インスタンスを確認 ◦ インバウンドレプリケーションが復旧したことを確認
◦ HeatWave 側のデータを確認 15
まとめ • on AWS の PrivateLink インバウンドレプリケーション ◦ そのままではソース DB
のフェイルオーバーに追従できない ◦ Aurora の場合はフェイルオーバーイベントを捕捉して Lambda を実行して PrivateLink 内部 NLB のターゲット切り替えが可能 • 切り替え後の再接続タイムラグに注意が必要 ◦ フェイルオーバー開始を捕捉する場合、概ね 4 分程度 ▪ 同・完了を捕捉する場合、概ね 5 分程度 16
おまけ:PrivateLink 料金 • HeatWave on AWS 東京の PrivateLink 料金は割安? ◦
AWS のインターフェイスエンドポイント料金: USD 0.014/h + USD 0.01/GB(~ 1 PB) ◦ 同・NLB: USD 0.0243/h + USD 0.006/h(/NLCU) 17 3.317 円 1.643 円 出典:https://www.oracle.com/jp/mysql/pricing/#heatwave-on-aws