SlideShare a Scribd company logo
2020/1/25
Kirino Minato / imksooo
@imksoo@mstdn.blue.wirednet.jp
Mastodonをお引っ越しした話
-1-
はじめに
◼ ざっくり言えば
– AWS上で構築していたMastodonインスタンスを、Azure上にお引っ越しした
◼ 理由
– Azureの勉強のため
– Azureだと(略)課金が抑えられるため
-2-
元々の構成
(2017時点の構成図なのでアイコンが古い)
-3-
DBサーバ(RDS)
db.t2.micro
Mastodon鯖
t2.large
Redis(ElastiCache)
cache.t2.micro
ロードバランサ
ACM+ALB
メディアファイル
S3Bucket+
StaticWebHosting
CDN(CloudFront)
メール通知
SES
権威DNS
Route53
Mastodon
ユーザ
SSL証明書は
ACMで発行管理
Azureに持って行くものとして想定したもの
-4-
移行対象 移行先サービス 移行方法 備考
DNSゾーン Azure DNS Zoneレコードを手動登録後、
NSレコード切り替え
メール送信 SendGrid 新規構築
ロードバランサー (URL-path
routing)
Azure Front Door 新規設定後、DNS切り替え
CDN (静的ファイル配信) Azure Front Door 新規設定後、DNS切り替え
オブジェクトストレージ (静的
ファイル保管)
Azure Storage BLOB サービス停止中にazcopy 多数のオブジェクトが入ってい
たため現実的じゃない…?
Dockerホスト Azure App Service
(Linux Container)
新規構築
Redis Azure Cache for Redis 新規構築
DB Azure Database for
PostgreSQL
pg_dumpしてリストア
想定した移行の流れ
-5-
1) DBデータの引っ越し、切り替え
2) Dockerホストの構築
3) Redis/SendGridの切り替え
4) S3オブジェクト移動、CDN切替
5) AWS上のお掃除
年末年始のまとまった時間を使って作業を行う。
前提として、アクティブユーザはそこまで多くないインスタンスなので、何度もサービス停
止しても良い。
移行の順序は、手をつけやすい&AWSのコストがかかっているところからとした。
DBデータの移行
◼ Mastodonインスタンスを停止し、DBデータをエクスポート (pg_dump)
◼ Azure上のDBインスタンスにインポート (pg_restore)
◼ インポート処理はDBに大量のinsertとalter indexを行う
– インデックスの再作成が実施されるので、テーブル行数(=保持しているトゥートの数)に比例して、数時間かかる
– うちのインスタンスの場合は、最初期から稼働している&連合先が多いため非常に多くのトゥートを保持していた
◼ Azure Database for PostgreSQLでハマったこと
– デフォルトだとSSL通信を強制される
– 内部的にはPgBouncerを使っているみたいな動き
▪ → MastodonのStreamingプロセスが上手くPostgreSQLと通信できずに、WebSocketを開くタイミングで
failed: HTTP Authentication failed; no valid credentials available
というエラーをはき続ける
▪ メッセージだけ見てもフロント側のロードバランサーの問題なのか、バックエンドのDBとの接続の問題なのか判然としな
くて数週間悩んだ。
-6-
2020/1/3 DBがAzureに
-7-
Mastodon鯖
t2.large
Redis(ElastiCache)
cache.t2.micro
ロードバランサ
ACM+ALB
メディアファイル
S3Bucket+
StaticWebHosting
CDN(CloudFront)
メール通知
SES
権威DNS
Route53
Mastodon
ユーザ
SSL証明書は
ACMで発行管理
Azure Database
for PostgreSQL
The
Pacific
Ocean
Azure West USリージョンAWS東京リージョン
Web/StreamingとDBのレイテン
シが大きくなりすぎてストレフスル
な状況に
Dockerホストの再構築
◼ うちのポリシーとして、master追従はDocker Hubのイメージでやっている
◼ Azure上でDockerイメージの実行環境と言えば
– Azure Kubernetes Service
– Azure Container Instances
– Azure App Service / Linux Containers
◼ 直近で、Azure App Service P1v2 (1core/3.5GB)でWordpressなブログを立てていてちょっと
余っていたのがあったので、Mastodonも同居させようとしてみた
-8-
Azure App Service / Linux Containers で Docker-composeする
◼ あまり悪いことは言わない
◼ Azure App ServiceでDocker-composeは茨の道なので止めた方が良い
– 構成に失敗した場合にログが出てこなくなる(ことが多い)
– Linux ContainerはAzure Monitor統合がまだサポートされていない
▪ Log Analyticsへログ転送出来ない
▪ SSHログインなどの手が出ない
– KuduもLinux Containerにはあまり手が出せなくなる
◼ 何かあっても何があったのかよく分からない
-9-
諦めてAzure VMにUbuntu入れてDocker-compose
◼ Ubuntuは良いものや。
◼ 長時間停止してたMastodonインスタンスを起動すると、周囲のインスタンスから一気にその間
のトゥートを再送される
– Sidekiqプロセスがやたらと大量のログを出力する
▪ 標準のログドライバーだと、そのままログをディスクに吐き出す (バッファリングなどは無い)
– 大量のディスクI/Oで瀕死の状態になる
– Azure VM D2s_v3 + Premium SSDでも Disk I/Oが足りない
▪ ログドライバーをCloudwatch Logsにして、オンメモリ+Network I/Oにしたほうが良さそう
-10-
2020/1/5 Azure上に主要機能を持って行った
-11-
Azure VM
(Ubuntu + Docker)
Azure Cache
for Redis
CDN/ロードバランサ
Azure Front Door
メディアファイル
S3Bucket+
StaticWebHosting
CDN(CloudFront)
メール通知
SES
権威DNS
Azure DNS Zones
Mastodon
ユーザ
Azure Database
for PostgreSQL
The
Pacific
Ocean
Azure West USリージョン
WebSocketをサポートしていないの
でタイムラインがぶつ切り状態に
SSL証明書は
Front Doorで発行
Azure Front Door
◼ WebSocket通信
– Azure CDNであればサポートするがお高い
◼ SSL証明書管理
– AWS ACMに比べて発行までに時間がかかる
– CNAME認証でも30分程度かかる。Domain apexの場合は、8時間程度かかる。
– Whoisのメールアドレスに承認用のメールが来るまで大体半日。
– 待っていられない。
◼ CloudFrontとALBの良いところを併せ持っている
– URL-path base routing出来る
– 構成変更のデプロイはALBほどではないが、CloudFrontよりは全然早い
-12-
WebSocketを通すために
◼ Azure Front Doorを使い続けられないと判断
◼ ALB+ACMの組み合わせはやっぱり便利
– 制約) ALBは所属するVPCからルーティング可能な範囲のIPアドレスにしかフォワードできない
– ALBから直接Azure VMにトラフィックを回すには、VPC-VNET間VPNを貼るしかない=高い
◼ ALB配下に、EC2のパケットフォワーダーを立ててごまかすことにした
-13-
IptablesでHTTPパケットをそのまま
Azure VMに転送する
TCP 3000/
TCP 4000
TCP 3000/
TCP 4000
Azure West USリージョンAWS オレゴンリージョン
2020/1/20 AWS+Azureのハイブリッド構成に
-14-
Azure VM
(Ubuntu + Docker)
Azure Cache
for Redis
メディアファイル
S3Bucket+
StaticWebHosting
CDN(CloudFront)
メール通知
SES
Mastodon
ユーザ
Azure Database
for PostgreSQL
The
Pacific
Ocean
Azure West USリージョン
AWS オレゴンリージョン
権威DNS
Azure DNS Zones
今後について
◼ メールのSendGrid化
– そのうちやるかもしれないけども、コストメリットが全くないのでやらないと思う
◼ S3オブジェクトのお引っ越し
– 静的ファイルの切り替えは数が多すぎて現実的ではない
– 当面このままにすると思う
-15-

More Related Content

PDF
20170429 jitakurack mastodon
PDF
Open Service Broker for Azure(OSBA)をつかう
PDF
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
PDF
Microsoft Azure超超入門_20140412
PDF
Ingress on Azure Kubernetes Service
PDF
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
PDF
Microsoft Azureを使ったバックアップの基礎
PDF
これから始めるAzure Kubernetes Service入門
20170429 jitakurack mastodon
Open Service Broker for Azure(OSBA)をつかう
[Azure Deep Dive] クラウド デザイン パターン ~優れたシステム構築のためのガイダンス~
Microsoft Azure超超入門_20140412
Ingress on Azure Kubernetes Service
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
Microsoft Azureを使ったバックアップの基礎
これから始めるAzure Kubernetes Service入門

What's hot (20)

PDF
CommVault with Cloudian for Data Backup and Archive
PPTX
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
PPTX
99999999 azure iaas_newportal版
PDF
デザインパターンから見た AWS と Azure
PDF
azureから使うlinux
PDF
Microsoft Azureから使うLinux
PPTX
Start learning Azure Cosmos DB with Azure Synapse Link
PPTX
Azure aws違い
PDF
Cloudian with CA ARCserve
PDF
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
PDF
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
PDF
20150821 Azure 仮想マシンと仮想ネットワーク
PDF
Real World Azure RBAC
PDF
[Azure Deep Dive] Azure ネットワーキングを理解しよう!
PDF
20130319勉強会
PPT
クラウド時代のストレージとは (Cloudian Summit 2012)
PDF
Azure Backup と Azure Site Recovery
PDF
次世代の企業ITインフラを支えるエンジニアとは
PDF
[修羅の街からこんにちわ♪JAZUG連動企画 by ふくあず] Windows Azureクラウド デザイン パターン
PDF
Demystifying Identities for Azure Kubernetes Service
CommVault with Cloudian for Data Backup and Archive
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
99999999 azure iaas_newportal版
デザインパターンから見た AWS と Azure
azureから使うlinux
Microsoft Azureから使うLinux
Start learning Azure Cosmos DB with Azure Synapse Link
Azure aws違い
Cloudian with CA ARCserve
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
20150821 Azure 仮想マシンと仮想ネットワーク
Real World Azure RBAC
[Azure Deep Dive] Azure ネットワーキングを理解しよう!
20130319勉強会
クラウド時代のストレージとは (Cloudian Summit 2012)
Azure Backup と Azure Site Recovery
次世代の企業ITインフラを支えるエンジニアとは
[修羅の街からこんにちわ♪JAZUG連動企画 by ふくあず] Windows Azureクラウド デザイン パターン
Demystifying Identities for Azure Kubernetes Service
Ad

Similar to Migrate mastodon instance to Azure from AWS (20)

PDF
Cloudian presentation for Cassandra Conference 2012 in Tokyo
PDF
Azure update flash
PDF
[Japan Tech summit 2017] CLD 011
PDF
M17_情シス必見、Azure Arc によるマルチプラットフォーム管理の今 [Microsoft Japan Digital Days]
PDF
Amazon Web Services(AWS)とcloudpack について
PPTX
LagopusとAzureとIPsecとDPDK
PDF
Snr001 azure iaa_s_応用編~実務で
PDF
AWS Black Belt - AWS Glue
PDF
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
PDF
クラウドとAWSの説明
PPTX
Azure Cosmos DB のキホンと使いドコロ
PDF
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
PPT
MySQL Multi-master on EC2
PDF
20120319 aws meister-reloaded-s3
PDF
20120319 aws meister-reloaded-s3
PDF
[AWS Summit 2012] クラウドデザインパターン#2 CDP 画像・動画配信編
PDF
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
PDF
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
PDF
20220624 私の検証環境のいま
PPTX
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
Cloudian presentation for Cassandra Conference 2012 in Tokyo
Azure update flash
[Japan Tech summit 2017] CLD 011
M17_情シス必見、Azure Arc によるマルチプラットフォーム管理の今 [Microsoft Japan Digital Days]
Amazon Web Services(AWS)とcloudpack について
LagopusとAzureとIPsecとDPDK
Snr001 azure iaa_s_応用編~実務で
AWS Black Belt - AWS Glue
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
クラウドとAWSの説明
Azure Cosmos DB のキホンと使いドコロ
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
MySQL Multi-master on EC2
20120319 aws meister-reloaded-s3
20120319 aws meister-reloaded-s3
[AWS Summit 2012] クラウドデザインパターン#2 CDP 画像・動画配信編
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
20220624 私の検証環境のいま
Db2をAWS上に構築する際のヒント&TIPS 2019年7月版
Ad

More from Minato Kirino (6)

PDF
ステイホーム期間を使って、家庭内LAN環境を見直した
PDF
#こみにょぴ結婚式 LT資料
PDF
#RouterBOARD 勉強会 OSPF検証班 発表資料
PDF
20120408 #自宅ラック勉強会 を監視してみたい
PDF
2011/06/11 #sfstudy ECCの遊び方。
PPT
qpstudy#6 勉強どうしてる
ステイホーム期間を使って、家庭内LAN環境を見直した
#こみにょぴ結婚式 LT資料
#RouterBOARD 勉強会 OSPF検証班 発表資料
20120408 #自宅ラック勉強会 を監視してみたい
2011/06/11 #sfstudy ECCの遊び方。
qpstudy#6 勉強どうしてる

Migrate mastodon instance to Azure from AWS