動機
GCPはAWSよりパフォーマンスがいいという噂を聞くけどどれほどのものか試してみようかと。
であれば、クラスタ構成でガシガシ動いている感が見れるものということでAerospikeをチョイス!
構成
Aerospike x 6台 (1CPU,MEM:3.75GB,HDD:SSD 40GB 標準マシン)
Benchmarkサーバ x 1台 (2CPU,MEM:7.5GB,HDD:標準 標準マシン)
Aerospikeクラスタの構築
Cloud Launcherを選択
Aerospikeを選択します。
こちらもそのままボタンをポチっと。
パラメータは以下のように入力
制限のアンロックをしていないい場合、同一zoneで8cpuまでとディスクのトータルが1024GBという制限があるので、注意してパラメータを設定する。
負荷をかけるサーバに2コアを割り当てたいので6台のクラスタで1cpuのものを以下では利用する。
デプロイが完了したら
画面下部に表示されるSSHトンネル設定をターミナルから実行し、
ブラウザでhttp://localhost:8081
を実行する。
ブラウザでAerospikeの管理画面(AMC)が表示できた状態
接続の際にNodeのIPを求められるがlocalhost
を入力すればOK。
ここまででAerospikeの準備は完了。
Aerospikeのクラスタを作るだけであればここまでの手順です。カンタンですね!
ベンチマークサーバの構築
Aerospikeの時と同様にメニューのCloud Launcher
を選択
CentOS7を選択
次の画面はAerospikeと同様にポチポチ進んで
CentOS側のパラメータを入力します。
注意点はAerospikeと同一のZoneを利用することと、マシンタイプのcpuを増やすこと。
ベンチマークはマルチスレッドで実行するためコア数はなるべく多いほうが高い負荷を安定してかけることができます。
インスタンスの起動が完了したらSSH
と書いてあるボタンを押下し、SSHログインします。
構築コマンドの実行
以下を貼り付け、環境を構築します。
内容としては、JDK,Mavenをインストールし、AerospikeClientのBenchmarkバイナリを生成します。
sudo su -
yum -y update
yum -y install wget maven
wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm
rpm -ihv jdk-8u45-linux-x64.rpm
wget http://www.aerospike.com/download/client/java/3.1.6/artifact/tgz
tar zxvf tgz
cd aerospike-client-java-3.1.6/benchmarks/
mvn package
ベンチマークの実施
{TARGET_AEROSPIKE}
の部分をAerospikeのいずれかのインスタンスのローカルIP
に置き換えて実行します。
./run_benchmarks -h {TARGET_AEROSPKE} -p 3000 -n test -k 10000000 -S 1 -o S:50 -w RU,50 -z 1 -async -asyncMaxCommands 300 -asyncSelectorThreads 8
AMC(Webブラウザ)側に大量のアクセスが来たことが確認できます。
ベンチマーク側のログでもreadが25000前後、writeが38000前後、合計で64000前後のTPSが出てますね。
2015-10-27 03:35:37.889 write(tps=38640 timeouts=0 errors=0) read(tps=25784 timeouts=0 errors=0) total(tps=64424 timeouts=0 errors=0)
2015-10-27 03:35:38.890 write(tps=38006 timeouts=0 errors=0) read(tps=24973 timeouts=0 errors=0) total(tps=62979 timeouts=0 errors=0)
2015-10-27 03:35:39.890 write(tps=38383 timeouts=0 errors=0) read(tps=25696 timeouts=0 errors=0) total(tps=64079 timeouts=0 errors=0)
2015-10-27 03:35:40.892 write(tps=38517 timeouts=0 errors=0) read(tps=25477 timeouts=0 errors=0) total(tps=63994 timeouts=0 errors=0)
2015-10-27 03:35:41.892 write(tps=38866 timeouts=0 errors=0) read(tps=25595 timeouts=0 errors=0) total(tps=64461 timeouts=0 errors=0)
2015-10-27 03:35:42.893 write(tps=38648 timeouts=0 errors=0) read(tps=25722 timeouts=0 errors=0) total(tps=64370 timeouts=0 errors=0)
ここまででさくさく作業をすすめて約15分。
cpuやらの制限があるのでBenchmarkサーバが2コア1台でしたが、こちらのサーバをもう少し強力にすることでAerospike側ではもう少しパフォーマンスが出るのではないかと。
つまり負荷をかけきれていない気もします。
今回はどれだけお手軽に構築が出来るかという確認だったので、時間があるときにパフォーマンスに関してはもう少し突っ込んだ調査を行ってみようかと。
以上です。