Aerospike v3 install

3,609 views

Published on

Published in: Technology

Aerospike v3 install

  1. 1. Aerospike v3 その1 “Installation”まとめ 2014/04/28 @道玄坂 株式会社cyberz 上原 誠
  2. 2. 自己紹介 ・ ~2012年2月 某SIerでインフラ周りに従事 ・ 2012年3月 サイバーエージェント入社 - Amebaスマフォプラットフォームの構築 - 統合ログ解析基盤やオンラインデータベースの インフラミドルウェア部分を担当 - Hadoop、HBase、Flume ・ 上原 誠 (@pioho07) 【名前】 【経歴】
  3. 3. Aerospike is これ ロケット先端の棒の先についているシンプルな円盤状の板 この板があると、空気抵抗の観点からは不利だが、 音速の壁を超える際の衝撃波がロケットの外側に逃げるた め、 本体にはその影響が及ばないという効果があります。 極めてシンプルな部品ではあるものの、それがロケット全 体を守る役割をしている
  4. 4. Aerospike is NoSQL これ
  5. 5. Aerospike is C&A ここ AP型 詳細はスライドその2 とかでそのうち
  6. 6. Not OSS, but ・・ OSSではないけどユーザー登録するだけで検証など試せます^^ AMIもあるのでAWSテスト可能、インスタンスはxlarge以上でないと真価発揮しな いので負荷試験時はインスタンス上げっぱなしとか気をつけよう!
  7. 7. バージョン (2014/4/28時点最新) ・Aerospike 3.2.3 ・AMC(AerospikeManagementConsole)3.3.0 ・SDK Java 3.0.23 https://github.com/aerospike/aerospike-client-java.git
  8. 8. 検証機構成 CPU:6C*2 E5-2640 Memory:64G Eth:1G ✕3台 クラスタ ・DELL R620 CentOS6.5 SSD:800G*2(OS) SSD:800G*4(DATA)
  9. 9. 本日の内容 Aerospike v3 ドキュメントの “Installation”のまとめ的な ここ
  10. 10. 本日の内容 Installation てってれー
  11. 11. 本日の内容 ・Before you Begin ・Download Aerospike Server ・Install a Single Node ・Configuring a Cluster ・Install on Amazon EC2 ・Use Intermap Trial Server
  12. 12. 本日の内容 ・Before you Begin ・Download Aerospike Server ・Install a Single Node ・Configuring a Cluster ・Install on Amazon EC2 ・Use Intermap Trial Server
  13. 13. Before you Begin ・Aerospike v3は新規インストールすべし、v2からv3へのアップデート はまだサポートされてない ・サポートOSは CentOS6(RHEL6) Debian6 Ubuntu12.04 ・性能評価にVMやAWSはお勧めしない、適切なハードカスタマイズによ り性能が出る製品のため
  14. 14. Before you Begin ・データサイズの見積もり どのくらいのレコードが必要か? レコードにどのくらいのデータをストアするか? ・ストレージタイプ インメモリ(非永続) インメモリ(永続 on Disk) オンSSD(インデックス in Memory) ・NameSpaceの数決定 NameSpaceはRDBMS内のデータベースに相当。NameSpace単位でスト レージ構成を変えられる ・ハードのサイジングと選定 別章の”Capacity Planning Guide”を参考
  15. 15. Before you Begin ●推奨ハード ・ミニマムでは CPU1つQuadCore,Memory4G(4Gで6400万インデックス),StorageはSSDか インメモリ,Networkは1G ・SSD:AerospikeはSSD活用の為に最適化されたデータベース SSDはランダムリードに最適。ニアRAMレイテンシ。永続性提供。 Copy On Write採用で高い耐久性 SSDにFileSystemを使わずBlockDeviceとして使う SSDはJBODにし、ただのディスクの束とする。RAIDは書き込みオーバーヘッドに なるので非推奨、RAIDコントローラ挟むならSingleRAID0 SSDはオーバープロビジョニングして使うことでパフォーマンスが向上 ※GCとWear-levelingの補助でコントローラに与えられるスペースとなる SSDのデフラグは不要。Aerospikeが定期的に行う。infoレベルのログ出してみた↓ Apr 28 2014 01:55:54 GMT: INFO (drv_ssd): (storage/drv_ssd.c:1135) /dev/sdc defrag curr_pos 6099967 wblocks:0 recs:0 waits:0 lock-time:157 ms total-time:157 ms Apr 28 2014 01:55:54 GMT: INFO (drv_ssd): (storage/drv_ssd.c:1135) /dev/sdb defrag curr_pos 6099967 wblocks:0 recs:0 waits:0 lock-time:158 ms total-time:158 ms
  16. 16. Before you Begin ・Network: TCP,1G or 10G,Multicast or Unicast デフォルト設定だと1ノード 100kTPSが限界 ※CPUの”si”システム割り込み時間には注意が必要 通信暗号化は非対応、サーバーに複数NICの場合は別設定が必要* ・DISK 実行可能ファイルや設定ファイル格納にHDDを使う 永続性ファイルの推奨サイズはRAMに格納されたデータの8倍 回転速度は10K,15K,7200RPMと差はない。7200RPMでよい ・CPU get/setクエリの単純な性質のため、CPU性能に強い依存関係はない。 HTオン推奨、2ソケット使用してもパフォーマンス改善なし ・Memory RAMにインデックスデータ格納。インデックスはレコードごとに64バイト メモリ種類ではパフォーマンスに影響ない、容量が大事
  17. 17. Before you Begin ※サーバーに複数NICの場合は別設定が必要(マニュアルにないっぽ・・?) コンフィグのサービスセクションとハートビートセクションに赤字を追記する。サーバーが複数NICを持ってる場合 まれにおかしくなるよう(私おかしくなった。。実際、asmonitor -e “info” 出力の、Cluster Visibilityがfalseのまま とか) network { service { address any : access-address 192.168.1.1 } : heartbeat { mode multicast address 239.1.99.222 : interface-address 192.168.1.1 }
  18. 18. Before you Begin ●SSD ・Recommend→ ・Certification Aerospikeによってテスト済みでないSSDの場合、 ACT(AerospikeCertificationTool)を使用してテストすることができる。 https://support.aerospike.com/customer/portal/articles/1315402-recommended-ssds
  19. 19. 本日の内容 ・Before you Begin ・Download Aerospike Server ・Install a Single Node ・Configuring a Cluster ・Install on Amazon EC2 ・Use Intermap Trial Server
  20. 20. Download Aerospike Server ●バイナリはここ ・Aerospike Community Edition: http://www.aerospike.com/free-aerospike-3-community-edition/ ・Aerospike Enterprise Edition: http://www.aerospike.com/aerospike-3-enterprise-edition/ ・Client SDK http://www.aerospike.com/aerospike-3-client-sdk/ ●エディション “Community Edition”と”Enterprise Edition”があり、 “Community Edition”は1クラスタ2ノードで200Gのストレージ容量まで “Enterprise Edition”は30日間制限なしでトライアル可能 ※どっちもユーザー登録必要 ※AWSにAMIもある
  21. 21. 本日の内容 ・Before you Begin ・Download Aerospike Server ・Install a Single Node ・Configuring a Cluster ・Install on Amazon EC2 ・Use Intermap Trial Server
  22. 22. Install a Single Node ●OSセットアップ 特殊なことはない インスト作業はrootでやってねと selinux,iptables止めようね。ntp設定しようね、くらい。 その他よしなに
  23. 23. Install a Single Node ●SSD/Flash Setup Aerospikeはフラッシュ(SSD)に最適化されたアーキテクチャで設計されました。 ディスクとは多少違います。 まずは最適なSSDであることを確認しておく(Aerspikeに推奨SSDページあり) SSD接続は直結orRAIDバススルー(JBOD)モード、やもなくRAID使う場合は SingleRAID0(今回うちはこれ) AerospikeはSSDに直接IO、SSDをファイルシステム介さずRAWデバイスとし てIOさせる セットアップ↓ -SSD not using RAID -SSD with RAID -SSD initialization
  24. 24. Install a Single Node -SSD not using RAID ※今回RAIDありのサーバーを使った為ここは未検証 物理的なSSD搭載完了後、RAIDコントローラを使っている場合は、バススルー(JBOD)モードにする 以下手順を実施。ただ最新のSSDだと不要な場合もある。 AHCI有効確認。一般的に新しいSSDでは有効 NCQ有効確認。
  25. 25. Install a Single Node -SSD not using RAID ・パーティションあったら削除 fdisk /dev/sdb Delete the partition by entering: d Optionally, verify setting is as desired: v Commit the changes: w ・AHCI有効確認(実マニュアルはコマンドおかしいのでこっちでいいかも↓) 有効化はBIOSで # lspci -vvnn | grep ahci Kernel driver in use: ahci Kernel modules: ahci AHCI有効かはBIOSで(詳細はBIOSマニュアル参照) ・NCQ有効確認(たぶん・・) 有効化はBIOSで # dmesg | fgrep "ncq" ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ems apst
  26. 26. Install a Single Node -SSD not using RAID ・Setup for select drives(最近のSSDは不要) Validate that that the drive is not frozen wget http://downloads.sourceforge.net/project/hdparm/hdparm/hdparm-9.37.tar.gz tar -zxvf hdparm-9.37.tar.gz cd hdparm-9.37 make (sudo yum install make, if you don't have make) ./hdparm -I /dev/<deviceID> frozen状態の場合、SSD取り外し再び接続や数秒サスペンドさせる。” rtcwake -m mem -s 180”
  27. 27. Install a Single Node -SSD not using RAID ・オーバープロビジョニング(OP) 今回つかわなかったのでざっくりと # ./hdparm --user-master u --security-set-pass test /dev/<deviceID> # ./hdparm --user-master u --security-erase test /dev/<deviceID> # ./hdparm -N /dev/sdb /dev/sdb: max sectors = 468862128/468862128, HPA is disabled # ./hdparm -NpXXXXXXXX --yes-i-know-what-i-am-doing /dev/<deviceID> # ./hdparm -N /dev/<deviceID> # ./hdparm -N /dev/sdb /dev/sdb: max sectors = 370401081/468862128, HPA is enabled ※ Calculate the over-provisioning value by multiplying the denominator by 79%. For example, in this case, we would calculate: 468862128 x .79 = 370401081. Set the over-provisioning:
  28. 28. Install a Single Node -SSD Setup with RAID RAIDコントローラがバススルー(JBOD)モードが設定できればこの章はパスしてOK 物理的なSSD搭載完了後 ・RAIDコントローラパラメータ設定 ・ドライブにパーティションなし ・オーバープロビジョニング設定 ・RAIDコントローラパラメータ (例はDELLの場合) SSD1本ごとにRAID0で128KB strips ReadPolicy:No Read Ahead WritePolicy:Write Through Enable:NCQ/AHCI* *DELLの場合AHCIデフォルト有効
  29. 29. Install a Single Node -SSD Setup with RAID ・RAIDコントローラパラメータ(例DELL) # /opt/dell/srvadmin/bin/omreport chassis biossetup | grep AHCI Embedded SATA : AHCI Mode # dmesg | fgrep "ncq" ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ems apst # /opt/dell/srvadmin/bin/omreport storage vdisk | egrep 'Stripe|Read Policy' Read Policy : Adaptive Read Ahead Stripe Element Size : 64 KB Read Policy : No Read Ahead Stripe Element Size : 128 KB Read Policy : No Read Ahead
  30. 30. Install a Single Node -SSD Setup with RAID ・オーバープロビジョニング設定 事前にパーティションが切られていたらfdiskで削除 オーバープロビジョニング(OP):ディスクコントローラ利用領域を29%確保させてあげることでパ フォーマンス向上 fdisk /dev/sdb Look at the partition table by entering p Delete the partition (if one exists) by entering: d Commit the changes and exit: w Over-Provision with fdisk To create a new partition enter n To make it the primary partition enter p For the partition number enter 1 Specify the first cylinder enter 1 Specify the last cylinder ? multiply the proposed (default) value by 0.71 (29%をOPする場合、 21%でもいいかもしれない) Verify the partition table by entering p Commit the changes by entering w
  31. 31. Install a Single Node -SSD Initialization AerospikeのDevice IO schedulerは”noop”にする。カーネルは何もせずハードウェアにまかせる。noop時最高のパ フォーマンス発揮(Aerospike推奨) ・設定 sudo echo noop > /sys/block/sdb/queue/scheduler ・確認 # cat /sys/block/sdb/queue/scheduler [noop] anticipatory deadline cfq ・コンフィグに書こう namespace test { storage-engine device { .... scheduler-mode noop } } ・SSD初期化(サーバー追加はSSD保守した場合もこれやりましょう) dd if=/dev/zero of=/dev/sdb bs=128k&
  32. 32. Install a Single Node ●Unpack and Install tarボール解凍してrpmでOK コマンドそのまま(雑でごめんね) ↓ tar xvfz aerospike-trial-server-3.2.3-el6.tgz cd aerospike-trial-server-3.2.3-el6 rpm -ivh aerospike-tools-3.2.2-1.el6.x86_64.rpm rpm -ivh aerospike-trial-server-3.2.3-1.el6.x86_64.rpm
  33. 33. Install a Single Node ●Unpack and Install AMC(AerospkeManagementConsole)も rpm -ivh aerospike-management-console-3.3.0-el5.x86_64.rpm アクセス↓http://xxxxx:8081
  34. 34. Install a Single Node ●Starting and stopping the server (and Configuration) コンフィグにキー入れてスタート。それだけ。 無料版の場合はユーザー登録時にもらったアカウントキーをユーザーセクションに追記 vi /etc/aerospike/aerospike.conf -------------------- # This stanza must come first. service { : trial-account-key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx : } -------------------- 起動 /etc/init.d/aerospike start /etc/init.d/aerospike status asd (pid 7625) を実行中... ログ確認 以下の”すぐにケーキがあるよ!”と出てれば起動OK。意味は不明。 cat /var/log/aerospike/aerospike.log | grep cake Apr 28 2014 02:06:47 GMT: INFO (as): (base/as.c:744) service ready: soon there will be cake! 停止 /etc/init.d/aerospike stop
  35. 35. Install a Single Node ●Starting and stopping the server (and Configuration) クラスタ状態はこの辺で。IPとか出るので割愛しちゃいますが asmonitor -e "asinfo -v 'services'“ asmonitor -e "info"
  36. 36. Install a Single Node ● Verify Database Operation # cli -h 127.0.0.1 -n test -o set -k Uehara -b name -v "Uehara, Inc." succeeded: key = Uehara set= bin= name value= Uehara, Inc. # cli -h 127.0.0.1 -n test -o set -k Uehara -b address -v "Dougenzaka, 1234" succeeded: key = Uehara set= bin= address value= Dougenzaka, 1234 # cli -h 127.0.0.1 -n test -o set -k Uehara -b email -v "hogehoge@hogehoge" succeeded: key = Uehara set= bin= email value= hogehoge@hogehoge # cli -h 127.0.0.1 -n test -o get -k Uehara {'email': 'hogehoge@hogehoge', 'name': 'Uehara, Inc.', 'address': 'Dougenzaka, 1234'} ※cliのツールは、基本的な検証にのみ使用されることを意図。エアロデータベースは、コマンドラ インツールを介して使用されるものではない。すべてのトランザクションのための新しい接続を作 成する非効率性は圧倒的になります。
  37. 37. 本日の内容 ・Before you Begin ・Download Aerospike Server ・Install a Single Node ・Configuring a Cluster ・Install on Amazon EC2 ・Use Intermap Trial Server
  38. 38. Configuring a Cluster ・Aerospikeクラスタは、MulticastかMesh通信でノードを探しクラスタ を構成する。※meshはユニキャスト通信のこと ・Rack Awareness機能あり:データが特定ラックに偏らないように複製、 リバランスさせる機能 ・ノード追加は簡単:Aerospikeインストールし、固有なネットワーク情 報以外全て同じコンフィグにし、起動する。あとはマルチキャストでノー ド検出しクラスタに追加される。ほんと簡単! ・Aerospikeはクラスタ内の全てのノードにデータを均等に分散するので、 クラスタ内のノードのストレージ(その他リソースも)を同じにすべき (SSD) ・設定変更は1ノード行い、それを残りのノードにコピー、その後に1台づ つリスタート。※コンフィグ世代管理もやろう
  39. 39. 本日の内容 ・Before you Begin ・Download Aerospike Server ・Install a Single Node ・Configuring a Cluster ・Install on Amazon EC2 ・Use Intermap Trial Server
  40. 40. Install on Amazon EC2 “Community Edition”,”Enterprise Edition”共にAMIあり ※ AMI使わずにインスタンスにAerospike入れる場合は物理サーバーと同じ手順 メモリ15GB以上(xlarge以降)のインスタンスがお勧め メモリSSDのハイブリッドならhi1.4xlarge(1TB SSD)、インメモリ用途なら m2.4xlargeお勧め クラスタ構成時のノードを別AZにしましょう ※テスト用途だったらインスタンスはこまめに停止!家の電気と同じように AWSがマルチキャスト対応してないのでハートビートはmeshで、 SGでポートはこの辺(22,80,3000-3004,8080,8081)開けとく
  41. 41. 本日の内容 ・Before you Begin ・Download Aerospike Server ・Install a Single Node ・Configuring a Cluster ・Install on Amazon EC2 ・Use Intermap Trial Server
  42. 42. Use Intermap Trial Server ・以下の最適なハードウェアスペックのエアスパプリインストールサー バーをIntermapからトライアルで2週間アクセス権を貸してくれるらし い? Aerospike Node Servers (x2) 2 x Xeon E5-2620 CPU 64GB RAM 1 x 1TB SATA HDD 2 x 240GB SSD Ubuntu 12.04 64-bit ※もしサーバー借りたら標準で付いてるベンチツールで簡単なベンチして おきましょう。
  43. 43. Use Intermap Trial Server クライアントサーバーにはAerospike Java SDKがプリンストールされていて、 ベンチツールも入ってる。※エアスパのパフォーマンスはハードで異なる 例えば、ライト50%リード50%で実施し、合計で58000TPS達成した run_benchmarks -h <seed_ip> -p <port> -n test -k 10000000 -l 30 -s 1 -o S:1500 -w RU,50 -z 32 n:Namespace k:Nuber of Keys l:Size of key(byte) s:Key starts at o:Type and size of value w:Operation type T:Timeout z:Thread count
  44. 44. Use Intermap Trial Server ・jdk入れる ・maven入れる wget http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.2.1-bin.tar.gz tar xvfz apache-maven-3.2.1-bin.tar.gz mv apache-maven-3.2.1 /usr/share ln -s /usr/share/apache-maven-3.2.1 /usr/share/maven /usr/share/maven/binのパス通す cd /root/aerospike-client-java/benchmarks mvn package ・負荷発動 cd /root/aerospike-client-java/benchmarks [root@aero001 benchmarks]# ./run_benchmarks -h 127.0.0.1 -p 3000 -n test -k 10000000 -l 30 -s 1 -o S:1500 -w RU,50 -z 32 Benchmark: 127.0.0.1:3000, namespace: test, set: 1, threads: 32, read-write ratio: 50/50 keys: 10000000, key length: 30, start key: 0, bins: 1, debug: false read policy: timeout: 0, maxRetries: 2, sleepBetweenRetries: 500 write policy: timeout: 0, maxRetries: 2, sleepBetweenRetries: 500 2014-04-27 12:44:09.788 INFO Thread 1 Add node BB9xxxxxxxxxxxx 127.0.0.1:3000 2014-04-27 12:44:09.796 INFO Thread 1 Add node BB9xxxxxxxxxxxx xx.xx.xx.xx:3000 2014-04-27 12:44:09.796 INFO Thread 1 Add node BB9xxxxxxxxxxxx xx.xx.xx.xx:3000 2014-04-27 12:44:09.827 write(tps=0 timeouts=0 errors=0) read(tps=0 timeouts=0 errors=0) total(tps=0 timeouts=0 errors=0) 2014-04-27 12:44:10.827 write(tps=42121 timeouts=0 errors=0) read(tps=42260 timeouts=0 errors=0) total(tps=84381 timeouts=0 errors=0) 2014-04-27 12:44:11.827 write(tps=47266 timeouts=0 errors=0) read(tps=47185 timeouts=0 errors=0) total(tps=94451 timeouts=0 errors=0) 2014-04-27 12:44:12.827 write(tps=48283 timeouts=0 errors=0) read(tps=48690 timeouts=0 errors=0) total(tps=96973 timeouts=0 errors=0) 自前のでやってみた 9万ちょいTPS達成
  45. 45. Use Intermap Trial Server ・AMC(AerospikeManagementConsole) Readの縦軸 おかしいな・・;
  46. 46. 性能 性能はもっと出そう、ってか負荷かけきれてないっぽい。。 引き続き更新します
  47. 47. CyterZ Hadoop Cluster “Falcon”Now Building
  48. 48. ご清聴ありがとうございました!

×