CentOS 7.9 (gcc 4.8.5) の環境での動作を確認しています。
※事前にtclをインストールしてください。例) yum install tcl.x86_64
※事前にPython3をインストールしてください。例) yum install python3
GridDBのソースコードをダウンロードしてビルドしてください。また、3つの環境変数を設定してください。
$ git clone https://github.com/griddb/griddb.git
$ cd griddb
$ ./bootstrap.sh
$ ./configure
$ make
$ export GS_HOME=$PWD
$ export GS_LOG=$PWD/log
$ export PATH=${PATH}:$GS_HOME/bin
以下の環境変数が定義されます。
環境変数 | 値 | 意味 |
---|---|---|
GS_HOME | ソースコードを展開したディレクトリ | GridDBホームディレクトリ |
GS_LOG | $GS_HOME/log | イベントログファイル出力ディレクトリ |
- これら環境変数は、以降で説明する運用コマンドで参照されます。
GridDBでは、クラスタを構成する際にマルチキャスト通信を使用します。 マルチキャスト通信を可能にするためのネットワークの設定を行います。
まず、ホスト名とIPアドレスの対応付けを確認します。 ホストとIPアドレスの設定を確認する "hostname -i" コマンドを実行してください。 次のようにマシンの IPアドレスが表示される場合は設定済みですので、今回のネットワーク設定の作業は不要です。
[実行例]
$ hostname -i
192.168.11.10
次のようなメッセージやループバックアドレス127.0.0.1が表示される場合は、設定が行われていません。
[実行例]
$ hostname -i
hostname: 名前に対応するアドレスがありません
または
$ hostname -i
127.0.0.1
次の1から4の手順を実施してください。
-
OSで設定されているホスト名を確認する
[実行例]
$ hostname MY_HOST
-
OSで設定されているIPアドレスを確認する
[実行例]
$ ip -f inet -o addr show eth0 | cut -d' ' -f 7 | cut -d/ -f 1 192.168.11.10
-
ホスト名とIPアドレスの対応付けを設定する
1で確認したホスト名とIPアドレスを、rootユーザで/etc/hostsファイルに追加します。[実行例]
# cd / # pwd /root # echo "192.168.11.10 MY_HOST" >> /etc/hosts
-
設定されたことを確認する
ホストとIPアドレスの設定を確認する「hostname -i」コマンドを実行してください。2で指定したIPアドレスが表示されることを確認してください。[実行例]
$ hostname -i 192.168.11.10
管理ユーザは、ノードやクラスタへの認証のために用いられます。管理ユーザの情報は、 ユーザ定義ファイル に保存されています。デフォルトでは以下のファイルです。
$GS_HOME/conf/password
インストール直後では、下記のデフォルトユーザが存在します。
ユーザ | パスワード |
---|---|
admin | 未設定 |
上記のデフォルトユーザを含む管理ユーザ情報は、運用コマンドのユーザ管理コマンドを用いて変更できます。
コマンド | 機能 |
---|---|
gs_adduser | 管理ユーザを追加する |
gs_deluser | 管理ユーザを削除する |
gs_passwd | 管理ユーザのパスワードを変更する |
デフォルトユーザを利用する場合は、以下のようにパスワードを変更してください。 パスワードは登録の際に暗号化されます。
デフォルトユーザのパスワードは設定されていません。管理ユーザのパスワードが設定されていない場合、サーバは起動できないため必ずパスワードを変更してください。
$ gs_passwd admin Password:(パスワードを入力します) Retype password:(パスワードを再入力します)
デフォルト以外の新しい管理ユーザを追加する場合、ユーザ名はgs#で始まる必要があります。
gs#以降は1文字以上のASCII英数字ならびにアンダースコア 「_」を使用可能です。
管理ユーザを新たに追加する例を次に示します。
$ gs_adduser gs#newuser Password:(パスワードを入力します) Retype password:(パスワードを再入力します)
GridDBを動作させるためには、アドレスやクラスタ名などのパラメータの初期設定が必要です。 ここでは、必須項目の「クラスタ名」のみ設定を行い、それ以外はデフォルト値を用います。
クラスタの「クラスタ名」をクラスタ定義ファイルに記述します。 クラスタ定義ファイルは「$GS_HOME/conf/gs_cluster.json」です。
「"clusterName":""」の部分にクラスタ名を記載します。 ここでは、「myCluster」という名前を用います。
[ファイルの記述例]
$ vi $GS_HOME/conf/gs_cluster.json
{
"dataStore":{
"partitionNum":128,
"storeBlockSize":"64KB"
},
"cluster":{
"clusterName":"myCluster",
"replicationNum":2,
"notificationAddress":"239.0.0.1",
"notificationPort":20000,
"notificationInterval":"5s",
"heartbeatInterval":"5s",
"loadbalanceCheckInterval":"180s"
},
"sync":{
"timeoutInterval":"30s"
},
"transaction":{
"notificationAddress":"239.0.0.1",
"notificationPort":31999,
"notificationInterval":"5s",
"replicationMode":0,
"replicationTimeoutInterval":"10s"
}
}
- クラスタ名はサブネットワーク上で一意となる名前にすることを推奨します。
- クラスタ名は1文字以上のASCII英数字ならびにアンダースコア「_」の列で構成されます。ただし、先頭の文字には数字を指定できません。また、大文字・小文字は区別されません。また、64文字以内で指定する必要があります。
ネットワーク設定とクラスタ名以外は、デフォルト値の設定のままで動作することができます。主な設定項目を下記の表に示します。これ以降のツールの実行などでは、次の値を用います。
設定項目 | 値 |
---|---|
IPアドレス | "hostname -i"コマンドで表示されるIPアドレス |
クラスタ名 | myCluster |
マルチキャストアドレス | 239.0.0.1 (デフォルト値) |
マルチキャストポート番号 | 31999 (デフォルト値) |
ユーザ名 | admin (デフォルト値) |
ユーザパスワード | admin |
SQLマルチキャストアドレス | 239.0.0.1 (デフォルト値) |
SQLマルチキャストポート番号 | 41999 (デフォルト値) |
GridDBノードの起動/停止、クラスタの開始/停止の操作をやってみましょう。起動や停止の操作方法はいくつかあるようですが、ここでは、運用コマンドを使ってみます。なお、運用コマンドは gsadm ユーザで実行で実行します。
運用コマンド一覧
コマンド | 機能 |
---|---|
gs_startnode | ノードを起動する |
gs_joincluster | ノードをクラスタに参加する |
gs_leavecluster | クラスタからノードを離脱させる |
gs_stopcluster | クラスタを停止する |
gs_stopnode | ノードを停止する(シャットダウン) |
gs_stat | ノードの内部情報を取得する |
- プロキシ変数(http_proxy)が設定されている場合、ノードのアドレス(群)を、no_proxyで設定し、proxyから除外してください。 運用コマンドはREST/http通信を行うため、誤ってproxyサーバ側に接続されてしまい、運用コマンドが動作しません。
設定例$ export no_proxy=localhost,127.0.0.1,192.168.11.10
GridDBノードのインストールおよびセットアップを行った後、GridDBクラスタの起動の流れは次のようになります。
- ノードを起動する
- クラスタを開始する
「ノードとクラスタ」で説明した通り、GridDBクラスタはユーザが指定した構成ノード数分のノードがクラスタへ参加することで構成され、サービスが開始されます。 構成ノード数のノードすべてがクラスタに参加するまで、クラスタサービスは開始されず、アプリケーションからはクラスタにアクセスすることはできません。
今回説明するのは、ノード1台で利用する「シングル構成」です。ノードを1台起動したのち、起動したノードをクラスタに参加させて、クラスタを開始します。
ノードの起動するには、運用コマンドの gs_startnode コマンドを用います。コマンドを用います。
ユーザ認証オプション-uには管理ユーザadminのユーザ名とパスワードを指定し、ノードの起動を待ち合せる-wオプションを指定します。
[実行例]
$ gs_startnode -u admin/admin -w
クラスタの開始するには、運用コマンドの gs_joincluster コマンドを用います。 ユーザ認証オプション-uには管理ユーザadminのユーザ名とパスワードを指定し、クラスタの開始を待ち合せる-wオプションを指定します。クラスタ名を-cオプションで指定します。。
[実行例]
$ gs_joincluster -u admin/admin –w -c myCluster
クラスタが開始されているかなどのクラスタの状態を確認するのは、運用コマンドの gs_stat もコマンドを用います。
ユーザ認証オプション -u には管理ユーザ admin のユーザ名とパスワードを指定します。また、クラスタのステータスを確認するために、"Status"の表記の行のみを grep で抽出した方がよいでしょう。
[実行例]
$ gs_stat -u admin/admin | grep Status
"clusterStatus": "MASTER",
"nodeStatus": "ACTIVE",
"partitionStatus": "NORMAL"
「gs_stat」で表示される"clusterStatus"、"nodeStatus"、"partitionStatus"の3つのステータスが「実行例」のように表示されていれば、正常に起動しています。アプリケーションからクラスタにアクセスが可能になります。
GridDBクラスタの停止の流れは以下のようになります。
- クラスタを停止する
- ノードを停止する
起動の流れとは逆に、クラスタを安全に停止してから、各ノードを停止します。クラスタを停止した段階で、アプリケーションからはクラスタにアクセスできなくなります。
クラスタ停止コマンドを実行します。クラスタ停止コマンドを実行した時点で、アプリケーションからはクラスタにアクセスできなくなります。
-
gs_stopcluster -u ユーザ名/パスワード -w
- ユーザ認証オプション-uには管理ユーザadminのユーザ名とパスワードを指定し、クラスタの停止を待ち合せる-wオプションを指定します。
[実行例]
$ gs_stopcluster -u admin/admin -w
.
The GridDB cluster has been stopped.
$
ノードを停止するには、運用コマンドの gs_stopcluster コマンドを実行します。クラスタ停止コマンドを実行した時点で、アプリケーションからはクラスタにアクセスできなくなります。 ユーザ認証オプション -u には管理ユーザ admin のユーザ名とパスワードを指定し、クラスタの停止を待ち合せる -w オプションを指定します。
-
gs_stopnode -u ユーザ名/パスワード -w
- ユーザ認証オプション-uには管理ユーザadminのユーザ名とパスワードを指定し、ノードの停止を待ち合せる-wオプションを指定します。
[実行例]
$ gs_stopnode -u admin/admin -w
The GridDB node is stopped.
.
The GridDB node has been stopped.
プログラムのビルドおよび実行方法の例を示します。
[Javaの場合]
- 環境変数 CLASSPATHの設定
- サンプルプログラムをgsSampleディレクトリにコピー
- ビルド
- 実行
$ export CLASSPATH=${CLASSPATH}:$GS_HOME/bin/gridstore.jar:.
$ mkdir gsSample
$ cp $GS_HOME/docs/sample/program/Sample1.java gsSample/.
$ javac gsSample/Sample1.java
$ java gsSample/Sample1 239.0.0.1 31999 設定したクラスタ名 admin 設定したパスワード