〜Express Connect VS Internetを題材に〜
こんにちは!SBクラウドソリューションアーキテクトのLeoです。当ブログでは我々のサービスであるExpress Connectに関する記事をいくつか掲載してきました。本日もその1つなのですが、日中間動画配信をテーマにしてみました。
以前にも動画配信の速度を比べてみたという記事はご紹介しています。(以下参照)ExpressConnectがそもそも何なのかをお知りになりたい場合は下の記事からお読みください。
→SoftBankワールド2017でExpress Connectのデモを実施しました
↑只今工事中です。
対して今回は動画配信の構成をメインに据えてお話ししていければと思います。
国際間動画配信の構成
では中国から日本へ動画配信する際の構成を考えて見ましょう。下の図は中国上海に動画配信元のサーバーを構築し、ストリーミングサーバーを日本に構築、その間をインターネットで繫いでいるという形です。
ではExpress Connectを用いる場合はこの構成がどう変わるのでしょうか?
はい、実はほとんど変わりません。リージョン間をインターネットで直接通信させるか、Express Connectを通すかの違いだけになります。
触れていませんでしたが、動画配信ソフトにはOBSというオープンソースのソフトを用いています。流行りのYouTuberさんも使っていらっしゃるとか…?このソフトに弊社のプロモーション動画を配信させるとい内訳になっています。サーバーのスペックも図に記載の通りです。
Express Connectの設定
VPCの作成
Express ConnectはAlibaba CloudのVPCとVPCを結ぶものであるため、構成図のように配信元(上海)と中継地点(日本)にそれぞれVPCを立てる必要があります。VPCはAlibaba Cloudへログインし、コンソールから「VPC 」> 「VPCを作成」の流れで進んでいきます。
Express Connectの設定
今回は構成図のように上海と日本リージョンに作成しています。2つ作れたらいよいよExpress Connectの設定ですが、こちらもまずはコンソールから「 Express Connect」>「ルーターインタフェイスの作成」を選択して進んでいきます。
次にどのリージョンからどのリージョンのVPCに繋ぐかを設定、購入します。最後にルートテーブルで日本なら上海、上海なら日本のCIDRを設定して終了です。金額が金額ですので、購入の周辺でお困りの方はSBクラウドへご相談ください。特に法人の方は担当のソフトバンク営業を通しても相談いただけます。
OBSを入れてみる
次に配信元(上海)にサーバーを立て、OBSを導入していきます。ここからは以下のページを参考にもさせていただいています。ありがとうございます。
Qiitaリンク:https://qiita.com/sparkgene/items/c3ac042f30cc5d0fe324
ECSの購入
購入リージョンが上海あることに注意してください。また購入したいサーバーのスペックが作成したVSwitchにあるかどうかにも気をつけておいてください。(たまにラインナップにばらつきがあります)rtmpやsshを使いますのでセキュリティグループを確認し、適切なポートが開いているかも確認をお願いします。
Qiitaリンク:https://qiita.com/sparkgene/items/c3ac042f30cc5d0fe324
リモートログインしてOBSをダウンロード
ECSの購入が完了したらリモートログインしてOBSをダウンロードしてきましょう。OBSのダウンロードサイトはこちらになります。
無事にOBSを開けるようになると上のような操作画面が出てくると思います。動画をはじめ配信したいファイルはソースの「+」マークを選択して指定していきましょう。余談ですが中国側に配信したい動画を持ってくるためOne Driveを用いました。Gドライブユーザーには不便です…
肝心の配信先ですが、設定(または「ファイル」>「設定」)を選択し、下の画像のように配信先のアドレス(今回は日本リージョンに立てたECSのプライベートアドレス)を記述します。認証はあとで任意で構いませんが、日本でrtmpを構築する際にも用います。
nginx-rtmp-moduleでストリーミングサーバーを構築
最後に日本側で立てたECSにsshでログインし、nginx-rtmp-moduleを入れていきます。
sudo su yum update yum groupinstall "Development Tools" yum -y install pcre-devel zlib-devel openssl-devel cd /usr/local/src/ wget http://nginx.org/download/nginx-1.8.0.tar.gz sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz tar -zxvf nginx-1.8.0.tar.gz wget https://github.com/arut/nginx-rtmp-module/archive/master.zip unzip master.zip # build cd nginx-1.8.0 ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master make make install
無事に作成できたら、nginxのconfファイルを編集していきます。場所は以下です。
# cd /usr/local/nginx/conf # ls fastcgi.conf koi-win scgi_params fastcgi.conf.default mime.types scgi_params.default fastcgi_params mime.types.default uwsgi_params fastcgi_params.default nginx.conf uwsgi_params.default koi-utf nginx.conf.default win-utf
rtmp { server { listen 1935; chunk_size 4096; application src { live on; push rtmp://localhost/hls; } } }
上記の記述をconfファイルの最後尾に追加すれば準備完了です。nginxを起動しておきましょう。OBSに戻り画面右手にある「配信開始」を選択してください。
動画視聴
視聴は手軽にVLCから行いました。ダウンロードしてネットワークに
rtmp://日本のECSのIP/src/ストリームキー
と書くだけです。(日本語の部分はOBSで設定したものに書き換えてください)
そして実際に視聴結果を比較したのが下の動画になります。
動画をご覧になっていかがでしたでしょうか?インターネットに比べてExpress Connectの方が安定して配信できていることがお分りいただけたのではないでしょうか?いわゆる中国特有のネットワーク事情の影響を受けづらくできていたのが再認識いただけたものと思います。もちろん、インターネットが常にこのような通信状況という訳ではありませんが、もしもの時にも遅くならないというのがシンプルですが大きなメリットかと思います。
まとめ
諸先輩方を参考に日中間に発展させた動画配信の構築をご紹介してきました。本来はCDNを使うなどの構成案はあるとは思うのですが、シンプルな速度勝負ということでご容赦ください。日中間で手頃かつ安定的にデータが送信したい!いざ遅延したら困る!という方はぜひExpress Connectの存在を思い出してください。