Edited at

Speedtest.netの速度測定サーバを構築してみた


はじめに

こんにちは、 @CloudRemix です。

alt

https://account.idcfcloud.com/auth/loginより引用

本日9月10日はクラウドの日です。

記念日ということで、クラウドを使った速度測定サーバの作り方をご紹介します。


Speedtest.netの速度測定サーバ???

Speedtest.net自体はご存知と思うので省略。

alt

早速ですが、Speedtest.netの速度測定サーバを構築とは?

自分だけの測定サーバを作ること?

残念!少し違います。

あまり知られていませんがSpeedtest.netは、Speedtest.netが用意したサーバではなく、有志が設置したサーバを使って速度測定を行っています。

そのため同じSpeedtest.netでも測定サーバによって結果が大きく異なります。

今回はこの速度測定サーバの作り方+有志サーバへの登録方法となります。

注意!1TB/Dayのネットワーク転送が発生します。設置は自己責任で・・


目次


  • サーバを選ぶ

  • OS・ミドルウェアのセットアップ

  • アプリケーションのセットアップ

  • サーバの申請


サーバの選び方

まずは、使用するサーバを選択しましょう。

選択肢としては自宅サーバ、VPS、クラウドが挙げられます。

公式サイトによると、最低でも1Gbpsの回線帯域が必要なため、ネットワークで選ぶと良いでしょう。

また、毎日500GB超1TB超の通信が発生するため、従量課金or速度規制にも注意が必要です。

CPU
RAM
Network
Disk

最低
4コア
4GB
1Gbps
1GB

推奨
4コア
8GB
2Gbps
1GB

参考:Speedtest Server Requirements – Ookla

(1コア0.5GBでも普通に動きます。ネット帯域だけが重要です)

今回は3,240GBまで従量課金なし、2Gbps接続のIDCFクラウドを選択しました。

3日で無料枠を使い切ったので、今はCloudGarageを使っています。

→怒られたので、やめました。

個人的には、従量課金一切なしの Cloudn と CloudGarage が気になりましたが、


  • Cloudn - 回線帯域が不明 非公開だそうです

  • CloudGarage - BANの危険性あり(構築自体は問題はないが、他の利用者に影響がある場合は停止・制限措置とのこと)

ということで今回は見送ります。

基本的には、ネットワークに定評のあるWebARENAのVPSクラウド(6GB)か、SuitePRO V4(2G)がオススメです。


  • VPSクラウド(6GB):1Gbps、3,600円

  • SuitePRO V4(2G):2Gbps、8,400円~

転送量からWebARENAも無理です。

なお、自宅サーバ(家庭用回線)はプロパイダーによる総量規制(30GB/日?)があるため避けたほうが良いでしょう

VPSはそもそも1Gbpsも帯域がないため、論外です。(↓参照)

参考:VPS・クラウドのネットワーク仕様一覧 - Qiita


サーバのセットアップ

使用するサーバを選択したら、OS・ミドルウェアをセットアップしましょう。

ウェブサーバとアプリケーションが動作すれば、ソフトウェアに制限はありません。(Windows ServerもOK)

参考:Speedtest Server Requirements – Ookla

言語はPHP, ASP, ASP.NET,JSPのいずれかとなります。

今回はCentOS7 / nginx / PHPの組み合わせとしました。


OSのセットアップ

実際にセットアップをしていきます。

各ソフトウェアの設定は各自におまかせですが、ポート開放は必須です。(あとドメインの割り当て)


ポート開放とドメイン

最低2つのポート開放が必要となります。ポート番号は80+8080です。

IDCFクラウドでは、標準で無料FW、ルータが用意されていますので、管理画面から80ポートと8080ポートを開放するだけとなります。

また、IP直打ちはダメらしいので、ドメインを割り当てます。

ドメイン設定は省略

以下ソフトウェアのセットアップ。参考程度に


nginx

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum -y install nginx

mkdir -p /var/www
mkdir -p /var/lib/nginx/fastcgi

cd /etc/nginx/
mv nginx.conf nginx.conf.backup
vi nginx.conf

config


nginx.conf

user              nginx;

worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
keepalive_timeout 5;
client_max_body_size 10m;
server_tokens off;
server_name_in_redirect off;
server {
listen 80;
root /var/www;
charset utf-8;
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
}
}
}


PHP

必要なパッケージは各自で確認してください

yum -y install --enablerepo=epel,remi-php71 php php-devel php-fpm php-gd php-mbstring

sed -i 's/apache/nginx/g' /etc/php-fpm.d/www.conf
sed -i 's/listen = 127.0.0.1:9000/listen = \/var\/run\/php-fpm\/php-fpm.sock/g' /etc/php-fpm.d/www.conf
sed -i 's/listen.mode = 0660/listen.mode = 0660\nlisten.owner = nginx\nlisten.group = nginx/g' /etc/php-fpm.d/www.conf
sed -i 's/;clear_env = no/clear_env = no/g' /etc/php-fpm.d/www.conf
chown -R nginx:nginx /var/lib/php/


起動

systemctl start php-fpm.service

systemctl start nginx.service
systemctl enable php-fpm.service
systemctl enable nginx.service


アプリケーションのセットアップ

OS・ミドルウェアが用意できたら、いよいよ速度測定のアプリをインストールします。

フロントエンドはダウンロードして展開するだけですが、バックエンドは少々複雑です。

参考:Installing HTTP Legacy Fallback – Ookla


フロントエンド

cd /var/www/

wget http://install.speedtest.net/httplegacy/http_legacy_fallback.zip
unzip http_legacy_fallback.zip
rm -f http_legacy_fallback.zip
rm -f speedtest/upload.asp
rm -f speedtest/upload.aspx
rm -f speedtest/upload.jsp


バックエンド

同様にダウンロードして展開しますが、こちらは設定の編集と起動が必要となります。

また、セキュリティ上の理由から専用ユーザが推奨されていますので、新たにユーザを作成します。

useradd ookla

passwd ookla

su ookla
cd
mkdir ooklaserver
cd ooklaserver
wget http://install.speedtest.net/ooklaserver/ooklaserver.sh
chmod a+x ooklaserver.sh

インストール

./ooklaserver.sh install

#64bitOSなら y 押下
This will install the Ookla server for linux64 to the current folder. Please confirm (y/n) >

設定の編集は最低3ヶ所(上側は必須)

参考:OoklaServer Daemon Advanced Configuration – Ookla


OoklaServer.properties

vi OoklaServer.properties

OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net #コメントを除去

OoklaServer.tcpPorts = 5060,8080
#↓ポートの指定
OoklaServer.tcpPorts = 8080

OoklaServer.udpPorts = 5060,8080
#↓ポートの指定
OoklaServer.udpPorts = 8080

OoklaServer.maxThreads = 512
#↓お好みで(マルチセッションの最大値、負荷軽減)
OoklaServer.maxThreads = 32


自動起動を設定

su -

chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local

#su ookla -c '/home/ookla/ooklaserver/OoklaServer --daemon'

reboot


動作確認

テスターが公開されているので、必ず動作確認を行いましょう。

alt


記入例

全項目がPASSEDとなればOK


サーバの申請

セットアップが終わって、動作確認もできたら早速有志サーバとして申請します。(これで終わりです)

http://www.ookla.com/host

利用条件等に同意して、

alt

項目を埋めていきます。


  • Server Installation


    • Ookla Server:ホスト名(テスターの一番上の項目)



  • Hardware Information


    • Current Processor:CPUのコア数

    • Memory Amount:物理メモリサイズ



  • Connection Information


    • Available Bandwidth:回線帯域

    • Uplink/Ethernet Connectivity:回線帯域



  • Hosted By Credit(この部分は公開されます)


    • Sponsor Name:サーバ名

    • Sponsor URL:サーバ名のリンク先

    • Server City:サーバの区市郡町村

    • Server State or Region:サーバの都道府県

    • Country:Japan。



alt

すべての項目を埋めたら、SUBMITをクリックして、申請完了です!!

すぐに確認の自動送信メール(件名:Ookla.com Account Registration)が届き、審査待ちとなります。

2,3日程で審査結果が届くので、ゆっくり待ちましょう。

合格していれば、管理者用のアカウント情報、そして専用のカスタムドメインがメールに記載されています。

アカウント情報は、専用サイトにログインすることで、自身の測定サーバで測定された結果を見れます。

alt


一言

ネットの情報から1日300GBほどかな~と思っていたけど、

開始1日で600GB1TBを軽く超えた・・・。

九州地域のサーバが少ないようです。私(福岡)と鹿児島だけです。

誰か従量課金がなくて、1Gbps接続の格安サーバ(西日本)を知っていれば教えてください。(切実)


参考

Speedtest Servers – Ookla

Speedtest.net by Ookla ホスト登録 – がとらぼ

oklaServer(Speedtest.net ホスト)のセットアップのやり方 | ichigo-lab BLOG

peedtest.netの測定サーバ提供はじめました。 – satoweb-blog