#はじめに
こんにちは、 @CloudRemix です。
https://account.idcfcloud.com/auth/loginより引用
本日9月10日はクラウドの日です。
記念日ということで、クラウドを使った速度測定サーバの作り方をご紹介します。
#Speedtest.netの速度測定サーバ???
Speedtest.net自体はご存知と思うので省略。
早速ですが、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
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
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
##動作確認
テスターが公開されているので、必ず動作確認を行いましょう。
###記入例
- OoklaServer/NetGauge TCP Host:
- example.com:8080
- Legacy HTTP URL:
- Legacy HTTP URL #2:
全項目がPASSED
となればOK
#サーバの申請
セットアップが終わって、動作確認もできたら早速有志サーバとして申請します。(これで終わりです)
項目を埋めていきます。
- 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。
すべての項目を埋めたら、SUBMITをクリックして、申請完了です!!
すぐに確認の自動送信メール(件名:Ookla.com Account Registration)が届き、審査待ちとなります。
2,3日程で審査結果が届くので、ゆっくり待ちましょう。
合格していれば、管理者用のアカウント情報、そして専用のカスタムドメインがメールに記載されています。
アカウント情報は、専用サイトにログインすることで、自身の測定サーバで測定された結果を見れます。
#一言
ネットの情報から1日300GBほどかな~と思っていたけど、
開始1日で600GB1TBを軽く超えた・・・。
九州地域のサーバが少ないようです。私(福岡)と鹿児島だけです。
誰か従量課金がなくて、1Gbps接続の格安サーバ(西日本)を知っていれば教えてください。(切実)
#参考
Speedtest Servers ? Ookla
Speedtest.net by Ookla ホスト登録 ? がとらぼ
oklaServer(Speedtest.net ホスト)のセットアップのやり方 | ichigo-lab BLOG
peedtest.netの測定サーバ提供はじめました。 ? satoweb-blog