EC2上のAerospikeでycsbを実行(3) クラスタ構成にチャレンジ
さて、前回の実行で、EC2でAerospikeを簡単に構成できることがわかったので、クラスタ構成にもチャレンジしてみます。
無料範囲でやりたいので手早く!
takumats.hatenablog.com
ちなみに、データを削除するときは、以下のコマンド。データが多い場合はすべて削除されるのに時間がかかるようです。
全て削除される前に、ycsbのloadを実行すると、キーがすでに存在しているとかのエラーになるので要注意です。
asinfo -v "set-config:context=namespace;id=ycsb;set=usertable;set-delete=true;"
データが削除されたかを確認するには、データベースノードで「aql」で入った後に「show sets」で確認します。すると以下の感じで表示されます。
+-----------+------------------+----------------+-------------------+----------------+---------+-------------+------------+ | n_objects | disable-eviction | set-enable-xdr | stop-writes-count | n-bytes-memory | ns_name | set_name | set-delete | +-----------+------------------+----------------+-------------------+----------------+---------+-------------+------------+ | 345063 | "false" | "use-default" | 0 | 0 | "ycsb" | "usertable" | "false" | +-----------+------------------+----------------+-------------------+----------------+---------+-------------+------------+ 1 row in set (0.000 secs)
今回はクラスタ構成にチャレンジしました。設定は簡単。
設定ファイルに「mesh-seed-address-port」のところで自分以外のサーバーのIPアドレスを追加するだけみたい。
それで複数のサーバーでサービスを起動させると、もともとデータが入っていると、勝手に同期が始まるようです。
クラスタ構成は、asadmコマンドで確認できます。本コマンドでは、ノードごとのマスター件数などもわかります。
Documentation | Aerospike
[ec2-user@ip-xx-xx-xx-xx YCSB]$ asadm -e info -h xx.xx.xx.aa ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node Node Ip Build Cluster Cluster Cluster Principal Client Uptime . Id . . Size Key Integrity . Conns . ip-xx-xx-xx-aa.us-west-1.compute.internal:3000 *BB9AC4AD410DF06 xx.xx.xx.aa:3000 C-3.8.2.3 3 8FDC01A429213D62 True BB9AC4AD410DF06 5 00:22:13 ip-xx-xx-xx-bb.us-west-1.compute.internal:3000 BB98CE423192806 xx.xx.xx.bb:3000 C-3.8.2.3 3 8FDC01A429213D62 True BB9AC4AD410DF06 5 00:16:49 ip-xx-xx-xx-cc.us-west-1.compute.internal:3000 BB980F34E0EDF06 xx.xx.xx.cc:3000 C-3.8.2.3 3 8FDC01A429213D62 True BB9AC4AD410DF06 5 00:16:38 Number of rows: 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Information~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Namespace Node Avail% Evictions Master Replica Repl Stop Pending Disk Disk HWM Mem Mem HWM Stop . . . . Objects Objects Factor Writes Migrates Used Used% Disk% Used Used% Mem% Writes% . . . . . . . . (tx%,rx%) . . . . . . . ycsb ip-xx-xx-xx-aa.us-west-1.compute.internal:3000 90 0 322.056 K 341.691 K 2 false (0,0) 972.286 MB 10 50 40.512 MB 4 60 90 ycsb ip-xx-xx-xx-bb.us-west-1.compute.internal:3000 90 0 337.478 K 336.959 K 2 false (0,0) 987.945 MB 10 50 41.164 MB 5 60 90 ycsb ip-xx-xx-xx-cc.us-west-1.compute.internal:3000 90 0 340.466 K 321.350 K 2 false (0,0) 969.457 MB 10 50 40.394 MB 1 60 90 ycsb 0 1.000 M 1.000 M (0,0) 2.861 GB 122.070 MB Number of rows: 4
したがって、前述のasinfoでデータを消すオペレーションを実行すると、ここに表示されるオブジェクト数が0になります。
で、ちなみにパフォーマンスはどうなったかというと、さっくり、以下のようなかんじでした。
ノード数 | スループット(load) | スループット(run) |
1 | Throughput(ops/sec), 8781.173164734808 | Throughput(ops/sec), 3114.096754847738 |
2 | Throughput(ops/sec), 5840.405090497077 | Throughput(ops/sec), 5956.125094127134 |
3 | Throughput(ops/sec), 5683.335890834484 | Throughput(ops/sec), 5758.298796657827 |