aerospike v3 install

48
Aerospike v3 その1 “Installation”まとめ 2014/04/28 @道玄坂 株式会社cyberz 上原

Upload: makoto-uehara

Post on 28-Nov-2014

1.958 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Aerospike v3 install

Aerospike v3 その1 “Installation”まとめ

2014/04/28 @道玄坂

株式会社cyberz

上原 誠

Page 2: Aerospike v3 install

自己紹介

・ ~2012年2月 某SIerでインフラ周りに従事 ・ 2012年3月 サイバーエージェント入社

- Amebaスマフォプラットフォームの構築

- 統合ログ解析基盤やオンラインデータベースの

インフラミドルウェア部分を担当

- Hadoop、HBase、Flume

・ 上原 誠 (@pioho07)

【名前】

【経歴】

Page 3: Aerospike v3 install

Aerospike is これ

ロケット先端の棒の先についているシンプルな円盤状の板

この板があると、空気抵抗の観点からは不利だが、

音速の壁を超える際の衝撃波がロケットの外側に逃げるため、

本体にはその影響が及ばないという効果があります。

極めてシンプルな部品ではあるものの、それがロケット全体を守る役割をしている

Page 4: Aerospike v3 install

Aerospike is NoSQL

これ

Page 5: Aerospike v3 install

Aerospike is C&A

ここ

KVSではめずらしいCA型

詳細はスライドその2

とかでそのうち

Page 6: Aerospike v3 install

Not OSS, but ・・

OSSではないけどユーザー登録するだけで検証など試せます^^

AMIもあるのでAWSテスト可能、インスタンスはxlarge以上でないと真価発揮しないので負荷試験時はインスタンス上げっぱなしとか気をつけよう!

Page 7: Aerospike v3 install

バージョン (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

Page 8: Aerospike v3 install

検証機構成

CPU:6C*2 E5-2640

Memory:64G

Eth:1G

✕3台 クラスタ

・DELL R620 CentOS6.5

SSD:800G*2(OS)

SSD:800G*4(DATA)

Page 9: Aerospike v3 install

本日の内容 Aerospike v3 ドキュメントの

“Installation”のまとめ的な

ここ

Page 10: Aerospike v3 install

本日の内容

Installation てってれー

Page 11: Aerospike v3 install

本日の内容

・Before you Begin

・Download Aerospike Server

・Install a Single Node

・Configuring a Cluster

・Install on Amazon EC2

・Use Intermap Trial Server

Page 12: Aerospike v3 install

本日の内容

・Before you Begin

・Download Aerospike Server

・Install a Single Node

・Configuring a Cluster

・Install on Amazon EC2

・Use Intermap Trial Server

Page 13: Aerospike v3 install

Before you Begin

・Aerospike v3は新規インストールすべし、v2からv3へのアップデートはまだサポートされてない

・サポートOSは

CentOS6(RHEL6)

Debian6

Ubuntu12.04

・性能評価にVMやAWSはお勧めしない、適切なハードカスタマイズにより性能が出る製品のため

Page 14: Aerospike v3 install

Before you Begin

・データサイズの見積もり

どのくらいのレコードが必要か?

レコードにどのくらいのデータをストアするか?

・ストレージタイプ

インメモリ(非永続)

インメモリ(永続 on Disk)

オンSSD(インデックス in Memory)

・NameSpaceの数決定

NameSpaceはRDBMS内のデータベースに相当。NameSpace単位でストレージ構成を変えられる

・ハードのサイジングと選定

別章の”Capacity Planning Guide”を参考

Page 15: Aerospike v3 install

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

Page 16: Aerospike v3 install

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バイト

メモリ種類ではパフォーマンスに影響ない、容量が大事

Page 17: Aerospike v3 install

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

}

Page 18: Aerospike v3 install

Before you Begin

●SSD

・Recommend→

・Certification

Aerospikeによってテスト済みでないSSDの場合、ACT(AerospikeCertificationTool)を使用してテストすることができる。

https://support.aerospike.com/customer/portal/articles/1315402-recommended-ssds

Page 19: Aerospike v3 install

本日の内容

・Before you Begin

・Download Aerospike Server

・Install a Single Node

・Configuring a Cluster

・Install on Amazon EC2

・Use Intermap Trial Server

Page 20: Aerospike v3 install

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もある

Page 21: Aerospike v3 install

本日の内容

・Before you Begin

・Download Aerospike Server

・Install a Single Node

・Configuring a Cluster

・Install on Amazon EC2

・Use Intermap Trial Server

Page 22: Aerospike v3 install

Install a Single Node

●OSセットアップ

特殊なことはない

インスト作業はrootでやってねと

selinux,iptables止めようね。ntp設定しようね、くらい。

その他よしなに

Page 23: Aerospike v3 install

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

Page 24: Aerospike v3 install

Install a Single Node

-SSD not using RAID

※今回RAIDありのサーバーを使った為ここは未検証

物理的なSSD搭載完了後、RAIDコントローラを使っている場合は、バススルー(JBOD)モードにする

以下手順を実施。ただ最新のSSDだと不要な場合もある。

AHCI有効確認。一般的に新しいSSDでは有効

NCQ有効確認。

Page 25: Aerospike v3 install

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

Page 26: Aerospike v3 install

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”

Page 27: Aerospike v3 install

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:

Page 28: Aerospike v3 install

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デフォルト有効

Page 29: Aerospike v3 install

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

Page 30: Aerospike v3 install

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

Page 31: Aerospike v3 install

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&

Page 32: Aerospike v3 install

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

Page 33: Aerospike v3 install

Install a Single Node

●Unpack and Install

AMC(AerospkeManagementConsole)も

rpm -ivh aerospike-management-console-3.3.0-el5.x86_64.rpm

アクセス↓http://xxxxx:8081

Page 34: Aerospike v3 install

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

Page 35: Aerospike v3 install

Install a Single Node

●Starting and stopping the server (and Configuration)

クラスタ状態はこの辺で。IPとか出るので割愛しちゃいますが

asmonitor -e "asinfo -v 'services'“

asmonitor -e "info"

Page 36: Aerospike v3 install

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のツールは、基本的な検証にのみ使用されることを意図。エアロデータベースは、コマンドラインツールを介して使用されるものではない。すべてのトランザクションのための新しい接続を作成する非効率性は圧倒的になります。

Page 37: Aerospike v3 install

本日の内容

・Before you Begin

・Download Aerospike Server

・Install a Single Node

・Configuring a Cluster

・Install on Amazon EC2

・Use Intermap Trial Server

Page 38: Aerospike v3 install

Configuring a Cluster

・Aerospikeクラスタは、MulticastかMesh通信でノードを探しクラスタを構成する。※meshはユニキャスト通信のこと

・Rack Awareness機能あり:データが特定ラックに偏らないように複製、リバランスさせる機能

・ノード追加は簡単:Aerospikeインストールし、固有なネットワーク情報以外全て同じコンフィグにし、起動する。あとはマルチキャストでノード検出しクラスタに追加される。ほんと簡単!

・Aerospikeはクラスタ内の全てのノードにデータを均等に分散するので、

クラスタ内のノードのストレージ(その他リソースも)を同じにすべき(SSD)

・設定変更は1ノード行い、それを残りのノードにコピー、その後に1台づつリスタート。※コンフィグ世代管理もやろう

Page 39: Aerospike v3 install

本日の内容

・Before you Begin

・Download Aerospike Server

・Install a Single Node

・Configuring a Cluster

・Install on Amazon EC2

・Use Intermap Trial Server

Page 40: Aerospike v3 install

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)開けとく

Page 41: Aerospike v3 install

本日の内容

・Before you Begin

・Download Aerospike Server

・Install a Single Node

・Configuring a Cluster

・Install on Amazon EC2

・Use Intermap Trial Server

Page 42: Aerospike v3 install

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

※もしサーバー借りたら標準で付いてるベンチツールで簡単なベンチしておきましょう。

Page 43: Aerospike v3 install

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

Page 44: Aerospike v3 install

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のパス通す

mvn package

・負荷発動

cd /root/aerospike-client-java/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達成

Page 45: Aerospike v3 install

Use Intermap Trial Server

・AMC(AerospikeManagementConsole) Readの縦軸 おかしいな・・;

Page 46: Aerospike v3 install

性能

性能はもっと出そう、ってか負荷かけきれてないっぽい。。

引き続き更新します

Page 47: Aerospike v3 install

Hadoop Cluster “Falcon”Now Building

Page 48: Aerospike v3 install

ご清聴ありがとうございました!