「Web開発」カテゴリーアーカイブ

WebPageTestのプライベートインスタンスを中国国内(金盾の中)に作成する話

WebPageTestというWebサービスがあります。Webページの表示速度等を詳細に計測してくれる便利なサービスです。Akamaiの日本語ブログなどでも紹介されていました。

このサービスには計測インスタンスのロケーションが複数準備されており、世界中から自分のサイトの表示速度を計測し、結果でガッツポーズをとったり、阿鼻叫喚することができます。また、Webサービスのプログラム自体もGitHubで公開されており、プライベートなインスタンスを立てて、秘密のサイトを自分だけでひっそり計測することができます。

 

さて、世界中に設置されているWebPageTestの計測インスタンスのロケーションですが、中国国内の金盾内部には設置されていません。(香港にはあります。)調べてみると2015年ごろにはBeijing(China Unicom系回線?)にあったようですが、現在では消えているようなので、なんらかの事情で閉鎖したようです。

中国国内での表示速度は金盾や中国の回線事情などの影響で他国とは大きく違うことが予想されますので、なんとかして計測したいところなので、今回WebPageTestの計測用のプライベートインスタンスを中国国内に設置し、計測を試みることにしました。

WebPageTestは、Webアプリと計測用のエージェントから構成されており、今回は計測用のエージェントのみ中国に設置し、Webアプリは日本に置きました。同じサーバーにまとめてもよいと思いますが、中国のクラウドだと80/443などにはドメイン名をつけて公開できないので、プロキシーをなど立ててアクセスすることになります。

準備するもの

Dockerイメージの準備

計測用エージェントは推奨されているwptagentをDockerで使います。手順はドキュメントに書いています。

中国国外の回線であれば、基本的にはdocker buildするだけで動いてしまう(すごい)のですが、中国国内からはDockerfileに書かれているChromeのリポジトリーURL(http://dl.google.com/linux/chrome/deb/)にはアクセスできないため、中国国内のECSインスタンスではdocker buildだけでは動かないようです。

そこで、日本国内の環境でdocker buildして、docker saveして書き出したイメージを中国に送って動かしてみることにします(多分現地でChromium落としてwptagentの設定変えたほうがメンテしやすいけど、後のことはあまり考えていないので場当たり的に対処します。)

#ローカル環境など、日本国内の環境にて
$ git clone https://github.com/WPO-Foundation/wptagent.git
$ cd wptagent
$ docker build --tag wptagent .
$ docker save wptagent > wptagent.tar

このgit cloneしたディレクトリーそのものを中国に送ります。(方法はなんでもよい)

 

必要なプログラムの準備

ECSインスタンスにsshログインし、aptで次のパッケージをインストールする

  • docker (docker.io)
$ apt update
$ apt install docker.io

先ほどのgit cloneしたディレクトリーを持ってきて、以下のようにimageをloadします。

$ cd wptagent
$ docker load < wptagent.tar

ガガガッっとイメージが読み込まれて完成します。

後は、ドキュメントにしたがって立ち上げます。

modprobe ifb numifbs=1
docker run -d \
  -e SERVER_URL="http://my-wpt-server.org/work/" \
  -e LOCATION="docker-location" \
  -e NAME="Docker Test" \
  --cap-add=NET_ADMIN \
  wptagent

モチベーションが切れたので以上です。