naoki86star

インターネットの片隅でなにかしら書いてみる

voltdb近況(version9.1)

久しくvoltdbの最新版をチェックしておらず、近々の必要性はないけれども、急に新しいインスタンスを立ち上げることになるとか遠い将来お守りしている子をupする場合もありえるかもしれないので、不定期検診的にみておきます。*1

気にした理由は、

  • python2系のEOL予告
  • ubuntu14のEOL

これらから派生しそうな大きな変化があるのかなぁと。

結論的には、platform環境面ではまだ大きな変化がなく、ubuntu系だと14/16で動作確認しているよ、って記述は前と同じ*2で、pythonツールも同じままでした。

最初は、ubuntu最新(ununtu19.04)でどうかと試してみたところ、antに失敗しました。javaコードのコンパイル時に失敗してました。ubuntu19だと、少なくとも、推奨手順のコピペのみだとダメみたいです。

すなわち、ドキュメント通りubuntu16が推奨プラットフォームのようです。
結局、今時点では自分の知識を更新するようなソフトウェア環境的な変化はあまりなさそうです*3*4

ライセンス周りはほんの少し変化があるようにみえて、(Editions)

  • enterpriseとawsは前は別れていた記憶あるけど今時点では実質同一editionに
  • opensource/comunuity版でもMaximum Number of Nodesがno limitに

あと

  • Elastically scale out the cluster with no downtimeってのは前あったかなぁ*5、enterprise/awsで有効

VirtualBox via vargrindで3nodeのubuntu/xenial64を作成し、クラスタ構成の起動とsqlcmdでの接続までを試しました。
以下、冗長にだらだらと自分のおさらい用テキストです。

deployment.xmlのクラスタ構成のパラメータは

<cluster hostcount="3" sitesperhost="8" kfactor="1" />

3ノードで各ノードのパーティション数2、複製数は1

パーティション数は hostcount * sitesperhost / ( kfactor + 1 ) = 12

tmuxで3ペイン開いてdb1,db2,db3でそれぞれスタンバイしてから、3ノード順に*6以下のコマンドで起動する。
db1,db2,db3は3ノードのhost名で、それぞれのノードでのlocalhostに割り当てるhost名とは区別しておく。

$ voltdb init --config=deployment.xml
$ voltdb start --count=3 --host=db1,db2

1,2台目で起動は途中まで進む

ubuntu@voltdb1:~/voltdb$ voltdb start --host=db1,db2 --count=3
Initializing VoltDB...

 _    __      ____  ____  ____
| |  / /___  / / /_/ __ \/ __ )
| | / / __ \/ / __/ / / / __  |
| |/ / /_/ / / /_/ /_/ / /_/ /
|___/\____/_/\__/_____/_____/

--------------------------------

Build: 9.1 voltdb-9.0-220-ga1bc879 Community Edition
Loaded node-specific settings from voltdbroot/config/path.properties
Connecting to VoltDB cluster as the leader...
Host id of this node is: 0
WARN: Strict java memory checking is enabled, don't do release builds or performance runs with this enabled. Invoke "ant clean" and "ant -Djmemcheck=NO_MEMCHECK" to disable.
ubuntu@voltdb2:~/voltdb$ voltdb start --host=db1,db2 --count=3
Initializing VoltDB...

 _    __      ____  ____  ____
| |  / /___  / / /_/ __ \/ __ )
| | / / __ \/ / __/ / / / __  |
| |/ / /_/ / / /_/ /_/ / /_/ /
|___/\____/_/\__/_____/_____/

--------------------------------

Build: 9.1 voltdb-9.0-220-ga1bc879 Community Edition
Loaded node-specific settings from voltdbroot/config/path.properties
WARN: Strict java memory checking is enabled, don't do release builds or performance runs with this enabled. Invoke "ant clean" and "ant -Djmemcheck=NO_MEMCHECK" to disable.
Host id of this node is: 1

三台目入れると三台ともServer Operational State is: NORMALとなる

ubuntu@voltdb3:~/voltdb$ voltdb start --host=db1,db2 --count=3
Initializing VoltDB...

 _    __      ____  ____  ____
| |  / /___  / / /_/ __ \/ __ )
| | / / __ \/ / __/ / / / __  |
| |/ / /_/ / / /_/ /_/ / /_/ /
|___/\____/_/\__/_____/_____/

--------------------------------

Build: 9.1 voltdb-9.0-220-ga1bc879 Community Edition
Loaded node-specific settings from voltdbroot/config/path.properties
WARN: Strict java memory checking is enabled, don't do release builds or performance runs with this enabled. Invoke "ant clean" and "ant -Djmemcheck=NO_MEMCHECK" to disable.
Host id of this node is: 2
Starting a new database cluster
WARN: User authentication is not enabled. The database is accessible and could be modified or shut down by anyone on the network.
Initializing the database. This may take a moment...
WARN: Durability is turned off. Command logging is off.
WARN: Running a redundant (k-safe) cluster with network partition detection disabled is not recommended for production use.
Server Operational State is: NORMAL
Server completed initialization.

これで、db1で止めてみると、db2,db3でログがでます。

WARN: Host 0 failed. Cluster remains operational.

でも動き続けます。この状態では一部のパーティションのデータが片肺状態になります。
もう一台db2を止めるとdb3のプロセスも落ちます。

*7

*1:日報のネタむりこしらえ

*2:documentの更新なし

*3:拡張された機能とか新機能とかは追っていません

*4:主にSQL周りは追ってチェックしてみたい

*5:追記ver7.9でもadministrator guideに説明があった

*6:同時にやったことはない

*7:2019.9.19 今日なんかLTS 8.4.6をだしたよーってメール見た コマーシャルはまだ8系だったのだね