
※2022/1/12 レコード周りを修正
この記事はFIXER Advent Calendar 2021(https://adventar.org/calendars/6837)17日目の記事です。
今回は、Azureリソースを使って動画配信をしてみます。
はじめに
大雑把な図です。

あらかじめ以下のリソースを作成しておきます。
- グローバル
- TrafficManager
- 東日本
- CDN (Akamai)
- MediaService
- ストレージアカウント
- 西日本
- CDN (Verizon)
- MediaService
- ストレージアカウント
カスタムドメインの登録をするので何かしらDNSも必要です。
CDN統合を有効にする
MediaServiceのストリーミングエンドポイントから有効にします。今回はStandard Akamaiを使用するのでポータル以外から有効にします。というのも、ポータルからだとStandard VerizonとPremium Verizonしか選択できないためです。
今回はAzCLIを使用します。
az ams streaming-endpoint create `
--account-name {MediaService名} `
--name {ストリーミングエンドポイント名} `
--resource-group {リソースグループ名} `
--scale-units 0 `
--auto-start `
--cdn-profile {CDNプロファイル名} `
--cdn-provider StandardAkamai
ここまで来たらついでにVerizonもコマンドで有効にした方が早い(気がする)です。
az ams streaming-endpoint create `
--account-name {MediaService名} `
--name {ストリーミングエンドポイント名} `
--resource-group {リソースグループ名} `
--scale-units 0 `
--auto-start `
--cdn-profile {CDNプロファイル名} `
--cdn-provider StandardVerizon
カスタムドメインの追加
Akamai
Akamaiの場合は以下2つのレコードをCNAMEで登録します。
cdnverify.<custom domain hostname> -> CNAME -> cdnverify.<cdn endpoint hostname>
_acme-challenge.<custom domain hostname> -> CNAME -> <custom domain hostname>.ak-acme-challenge.azureedge.net
<cdn endpoint hostname> にはCDNのエンドポイントを指定します。
例:cc9ada1caba64401990c40a3508fd000.azureedge.net
その後、CDNエンドポイントでカスタムドメインの追加をし、カスタムHTTPSを有効にします。
有効になるまで最大 6 ~ 8 時間かかるのでそれまで待機が必要です。
問題なく有効にできると以下の画像のようになります。

Verizon
Verizonの場合は以下のレコードをCNAMEで登録します。
※Akamaiで設定したcdnverifyレコードを編集し、レコード値を書き換えればOKです。
cdnverify.<custom domain hostname> -> CNAME -> cdnverify.<cdn endpoint hostname>
その後、CDNエンドポイントでカスタムドメインの追加をし、カスタムHTTPSを有効にします。
有効になるまで最大 6 ~ 8 時間かかるのでそれまで待機が必要です。
問題なく有効にできると以下の画像のようになります。

TraffcManager
TrafficManager用にCNAMEでレコード登録します。
<custom domain hostname> -> CNAME -> <trafficmanager hostname>
レコードについて補足
①cdnverify
AzureCDNにおける一時サブドメイン。AzureCDN上でカスタムドメインを構成するために用いられるもの。
②_acme-challenge ~ ak-acme-challenge.azureedge.net
AkamaiCDNを使用している際に、自動ドメイン検証を実施するようにするレコード。これがあれば証明書の更新も自動で実施される。
TrafficManagerで負荷分散
外部エンドポイントでAkamaiとVerizonを追加します。モニターの状態がオンラインになれば正常です。

ちなみに構成設定は画像の通りです。

配信テスト
適当に配信して、TrafficManagerから通信できているか確認します。

MediaServiceのストリーミングエンドポイントのホスト名を、カスタムドメインの値に書き換えます。
書き換えた後も配信ができていればOKです。

最後に
プライマリ側で障害が起きた際はTrafficManagerで切り替わるので問題が無いんですが、セカンダリ側に動画が無かったりするので完全な冗長とは言えません。その辺は別途、うまいことやってあげる必要があります。