LoginSignup
3
5

More than 5 years have passed since last update.

60000TPSを叩き出すAerospikeクラスタを15分で作成してベンチマークまで行う。(GCP)

Last updated at Posted at 2015-10-28

動機

GCPはAWSよりパフォーマンスがいいという噂を聞くけどどれほどのものか試してみようかと。
であれば、クラスタ構成でガシガシ動いている感が見れるものということでAerospikeをチョイス!

構成

Aerospike x 6台 (1CPU,MEM:3.75GB,HDD:SSD 40GB 標準マシン)
Benchmarkサーバ x 1台 (2CPU,MEM:7.5GB,HDD:標準 標準マシン)

Aerospikeクラスタの構築

Cloud Launcherを選択

cloudlauncher.png

Aerospikeを選択します。

aerospike_choice.png

こちらもそのままボタンをポチっと。

aerospike_deploy.png

パラメータは以下のように入力

制限のアンロックをしていないい場合、同一zoneで8cpuまでとディスクのトータルが1024GBという制限があるので、注意してパラメータを設定する。
負荷をかけるサーバに2コアを割り当てたいので6台のクラスタで1cpuのものを以下では利用する。

入力が完了したら「デプロイ」ボタンを押下する。
parameter.png

デプロイが完了したら

画面下部に表示されるSSHトンネル設定をターミナルから実行し、
ブラウザでhttp://localhost:8081を実行する。
tunnel.png

ブラウザでAerospikeの管理画面(AMC)が表示できた状態

接続の際にNodeのIPを求められるがlocalhostを入力すればOK。
スクリーンショット 2015-10-27 13.12.17.png

ここまででAerospikeの準備は完了。

Aerospikeのクラスタを作るだけであればここまでの手順です。カンタンですね!

ベンチマークサーバの構築

Aerospikeの時と同様にメニューのCloud Launcherを選択

CentOS7を選択

centos7_choice.png

次の画面はAerospikeと同様にポチポチ進んで

CentOS側のパラメータを入力します。

注意点はAerospikeと同一のZoneを利用することと、マシンタイプのcpuを増やすこと。
ベンチマークはマルチスレッドで実行するためコア数はなるべく多いほうが高い負荷を安定してかけることができます。
 coreos_setting.png

インスタンスの起動が完了したらSSHと書いてあるボタンを押下し、SSHログインします。

(ブラウザでターミナルが開きます。)
centos_ssh.png

構築コマンドの実行

以下を貼り付け、環境を構築します。
内容としては、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ブラウザ)側に大量のアクセスが来たことが確認できます。

amc.png

ベンチマーク側のログでも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側ではもう少しパフォーマンスが出るのではないかと。
つまり負荷をかけきれていない気もします。

今回はどれだけお手軽に構築が出来るかという確認だったので、時間があるときにパフォーマンスに関してはもう少し突っ込んだ調査を行ってみようかと。

以上です。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5