Fixed ListでGridDBを使う方法

はじめに

FIXED_LISTモードとMulticastモードでGridDBを実行する場合、どのような違いがあるのでしょうか?
このブログでは、GridDBサーバをFIXED_LISTモードに設定する方法についてご説明します(デフォルトオプションはマルチキャストモードです)。また、サーバーをMULTICASTに戻したい場合の参考としても役立ちます。また、最後に関連する記事へのリンクも載せていますので、もし興味のある方は参照してみてください。 FIXED_LISTに切り替える方法の他に、サーバーが正しく動作するかどうかをテストする方法についても説明します。このブログでは、すでにGridDBをインストールしていることを前提としています。まだGridDBをインストールしていない場合は、まずそれを行ってください。インストラクションについては Raspberry Piブログを参照してください。GridDBはGitHubからダウンロードすることができます。

まずはじめに、簡単に概要を説明します。

Multicast: Multicastは簡単で効率的ですが、ほとんどのパブリッククラウドやVPNではサポートされていません。
Fixed List: Fixed ListはパブリッククラウドとVPNで動作しますが、設定は複雑です。 Fixed Listを使う場合は、設定ファイル内で指定されたノードを定義する必要があります。

1 – サーバーをFIXED_LISTモードに切り替える

まず、クラスタのプロパティを変更します。

$  vim $GS_HOME/conf/gs_cluster.json

"cluster"の括弧の中で、以下の場所で"notificationAddress""notificationPort"を削除します。

"cluster":{
    "clusterName":"yourClusterName",
    "replicationNum":2,
    "notificationAddress":"239.0.0.1",
    "notificationPort":20000,
    "notificationInterval":"5s",
    "heartbeatInterval":"5s",
    "loadbalanceCheckInterval":"180s"
},

変更後は次のようになります。

"cluster":{ 
    "clusterName":"yourClusterName",    
    "replicationNum":2,
    "notificationInterval":"5s",
    "heartbeatInterval":"5s",
    "loadbalanceCheckInterval":"180s" 
},

"yourClusterName"を任意の名前に変更します。

クラスタの最後に以下を追加します。

"notificationMember": [
           {
           "cluster": {"address":"xx.x.x.x", "port":10010},
           "sync": {"address":"xx.x.x.x", "port":10020},
           "system": {"address":"xx.x.x.x", "port":10040},
           "transaction": {"address":"xx.x.x.x", "port":10001}
           }
],

以下のように見えるはずです。

"cluster":{ 
    "clusterName":"yourClusterName",    
    "replicationNum":2,
    "notificationInterval":"5s",
    "heartbeatInterval":"5s",
    "loadbalanceCheckInterval":"180s" 
    "notificationMember": [
           {
           "cluster": {"address":"xx.x.x.x", "port":10010},
           "sync": {"address":"xx.x.x.x", "port":10020},
           "system": {"address":"xx.x.x.x", "port":10040},
           "transaction": {"address":"xx.x.x.x", "port":10001}
           }
   ],
},

"xx.x.x.x"の場所が、実際のIPアドレスに置き換わります。

  • 注意: 複数のノードを追加してより多くのデータを格納したい場合は、わずかに異なるIPアドレスを持つ別の notificationMember を追加するとよいでしょう。 (例 "xx.x.x.y"

モードを"MULTICAST"から"FIXED_LIST"に変更します。

$  vim /var/lib/gridstore/admin/conf/repository.json

“clusters”セクションを見つけ、モードを"FIXED_LIST"に変更します。

"clusters" : [
            {
            "name" : "yourClusterName",
            "mode" : "MULTICAST",
            ...
            }
],

これらの2行を次のように変更します。

"clusters" : [
            {
            "name" : "your_new_clustername",
            "mode" : "FIXED_LIST",
            ...
            }
],

保存して終了します。
:wq

2 – サーバーをテストして、正しいモードであることを確認する

GridDBを起動します。

$  sudo su - gsadm

クラスタを再起動し、gs_statを使用してマルチキャストが動作していることを表示します。

特定のエリア"cluster"をチェックします。

クラスタで gs_statが次のように表示されるはずです。nodeStatusnotificationModeを探してください。 notificationModeFIXED_LISTに変更されているはずです。

...
"cluster": {
     ...
      "nodeStatus": "ACTIVE",
      "notificationMode": "FIXED_LIST",
     ...
},
...

GridDBモードを終了します。

3 – Sample1.javaをテストして、クライアントサーバーがサーバーに接続できることを確認する

クライアントサーバーに移動します。 Sample1.javaのエディタを開きます。

$  cd gridstoreDB/gsSample
$  vim Sample1.java

public class Sample1の中のpublic static void main(String [] args) throws GSExceptionの下で、以下の行を変更します。

props.setProperty("notificationAddress", args[0]);
props.setProperty("notificationPort", args[1]);
props.setProperty("clusterName", args[2]);
props.setProperty("user", args[3]);
props.setProperty("password", args[4]);

To:

props.setProperty("notificationMember", args[0]);
props.setProperty("clusterName", args[1]);
props.setProperty("user", args[2]);
props.setProperty("password", args[3]);

:wq等で保存して終了します。

Javaファイルをコンパイルします。

$  javac Sample1.java

Javaファイルを実行します。

$  java Sample1 xx.x.x.x:10001 your_clusterName your_username your_password

これで、 Sample1.java で定義されているような、期待される出力が得られるでしょう。

期待されるコンソール出力:

Person: name=name02 status=false count=2 lob=[65, 66, 67, 68, 69, 70, 71, 72, 73, 74]
  • 注意: これは、Sample1.javaの最後のあたり、col.commit();の上のSystem.out.println(...)からプリントされます。

 
サンプルを正しく実行できる場合、GridDBサーバはFIXED_LISTモードで実行されていることが確認されています。これで、GridDBサーバを、パブリッククラウドで動かすことができるようになりました。

参照

 

ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb

Leave a Reply

Your email address will not be published. Required fields are marked *