- 新クラスタ構成方式(固定リスト方式、プロバイダ方式)を追加しました
- データブロック圧縮機能を追加しました
2つの新しいクラスタ構成方式を提供します。環境や利用ケースによってクラスタ構成方式を使い分けることができます。クラスタ構成方式によって、クライアントや運用ツールの接続方式も異なります。
固定リスト方式かプロバイダ方式を用いることで、マルチキャストが利用不可能な環境でのクラスタ構成、クライアント接続が可能になります。
-
マルチキャスト方式
マルチキャストでノードのディスカバリを行い、アドレスリストを自動構成します。 -
固定リスト方式
クラスタ定義ファイルに固定のアドレスリストを与えて起動することで、そのリストを利用します。起動時に全ノードに同一のアドレスリストを設定します。 -
プロバイダ方式
アドレスプロバイダが提供するアドレスリストを取得して利用します。 アドレスプロバイダはWebサービスとして構成するか、静的コンテンツとして構成することができます。 ノード追加のためのクラスタ再起動不要です。サイズが見積もれない場合に利用します。アドレスプロバイダの可用性の確保が必要です。
クラスタ定義ファイル(gs_cluster.json)に設定し、同じ内容を全GridDBノードに適用します。
-
固定リスト方式の場合
固定のアドレスリストを与えてノードを起動することで、そのリストを利用してクラスタを構成します。 固定リスト方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。
/cluster/notificationMember (String) : クラスタ構成方式を固定リスト方式にする際に、アドレスリストを文字列で指定します。クラスタ定義ファイルの設定例は以下のとおりです。
{ : : "cluster":{ "clusterName":"yourClusterName", "replicationNum":2, "heartbeatInterval":"5s", "loadbalanceCheckInterval":"180s", "notificationMember": [ { "cluster": {"address":"172.17.0.44", "port":10010}, "sync": {"address":"172.17.0.44", "port":10020}, "system": {"address":"172.17.0.44", "port":10040}, "transaction": {"address":"172.17.0.44", "port":10001} }, { "cluster": {"address":"172.17.0.45", "port":10010}, "sync": {"address":"172.17.0.45", "port":10020}, "system": {"address":"172.17.0.45", "port":10040}, "transaction": {"address":"172.17.0.45", "port":10001} }, { "cluster": {"address":"172.17.0.46", "port":10010}, "sync": {"address":"172.17.0.46", "port":10020}, "system": {"address":"172.17.0.46", "port":10040}, "transaction": {"address":"172.17.0.46", "port":10001} } ] }, : : }
-
プロバイダ方式の場合
アドレスプロバイダが提供するアドレスリストを取得してクラスタ構成を行います。 プロバイダ方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。
/cluster/notificationProvider/url (String) : クラスタ構成方式をプロバイダ方式にする際に、アドレスプロバイダのURLを文字列で指定します。
/cluster/notificationProvider/updateInterval (String) : アドレスプロバイダからリストを取得する間隔を指定します。1s以上、2^31s未満の値を文字列で指定します。クラスタ定義ファイルの設定例は以下のとおりです。
{ : : "cluster":{ "clusterName":"yourClusterName", "replicationNum":2, "heartbeatInterval":"5s", "loadbalanceCheckInterval":"180s", "notificationProvider":{ "url":"http://example.com/notification/provider", "updateInterval":"30s" } }, : : }
アドレスプロバイダはWebサービスとして構成するか、静的コンテンツとして構成することができます。以下の仕様を満たす必要があります。
- GETメソッドに対応。
- URLにアクセスすると、そのURLが書かれたクラスタ定義ファイルを持つクラスタのノードのアドレスリストをレスポンスとして返す。
- レスポンスボディ:固定リスト方式において指定するノードリストの内容と同等のJSON
- レスポンスヘッダ:Content-Type:application/jsonを含む
アドレスプロバイダからのレスポンスの例は以下のとおりです。
$ curl http://example.com/notification/provider [ { "cluster": {"address":"172.17.0.44", "port":10010}, "sync": {"address":"172.17.0.44", "port":10020}, "system": {"address":"172.17.0.44", "port":10040}, "transaction": {"address":"172.17.0.44", "port":10001} }, { "cluster": {"address":"172.17.0.45", "port":10010}, "sync": {"address":"172.17.0.45", "port":10020}, "system": {"address":"172.17.0.45", "port":10040}, "transaction": {"address":"172.17.0.45", "port":10001} }, { "cluster": {"address":"172.17.0.46", "port":10010}, "sync": {"address":"172.17.0.46", "port":10020}, "system": {"address":"172.17.0.46", "port":10040}, "transaction": {"address":"172.17.0.46", "port":10001} } ]
[メモ]
- 各アドレスおよびポートはノード定義ファイルのserviceAddressおよびservicePortをモジュール(cluster,syncなど)ごとに指定します。
- クラスタ定義ファイルの/cluster/notificationAddress、/cluster/notificationMember、/cluster/notificationProviderは、使用するクラスタ構成方式に合わせていずれか1つを設定してください。
クライアントのGridStoreFactoryパラメータを設定します。
-
固定リスト方式の場合
notificationMember : 固定リスト方式を使用して構成されたクラスタに接続する場合に、クラスタノードのアドレス・ポートのリストを次のように指定します。
(アドレス1):(ポート1),(アドレス2):(ポート2),...
notificationAddressおよびnotificationProviderと同時に指定することはできません。 -
プロバイダ方式の場合
notificationProvider : プロバイダ方式を使用して構成されたクラスタに接続する場合に、アドレスプロバイダのURLを指定します。 notificationAddressおよびnotificationMemberと同時に指定することはできません。
GridDBは、メモリ上のデータをデータベースファイルに書き込むことで、メモリサイズに依存しない大容量化を実現できますが、ストレージのコストは増加します。データブロック圧縮機能は、データベースファイル(チェックポイントファイル)を圧縮することで、データ量に伴って増加するストレージコストの削減を支援する機能です。特に、HDDと比べ容量単価が高いフラッシュメモリをより効率的に活用できます。
メモリ上のデータをデータベースファイル(チェックポイントファイル)に書き出す際に、GridDBの書き出し単位であるブロック毎に圧縮操作を行います。圧縮により空いた領域は、Linuxのファイルブロック割り当て解除処理を行うため、ディスク使用量を削減できます。
GridDBノードごとに圧縮機能を設定します。
ノード定義ファイル(gs_node.json)の/datastore/storeCompressionModeに以下の文字列を設定します。
- 圧縮機能を無効にする場合:NO_COMPRESSION(既定値)
- 圧縮機能を有効にする場合:COMPRESSION
GridDBノード起動時(再起動時)に設定を適用します。 GridDBノードを再起動することで、圧縮機能の動作を有効/無効に変更することができます。
注意点は以下です。
- データブロック圧縮の対象は、チェックポイントファイルのみです。トランザクションログファイル、バックアップファイル、およびGridDBのメモリ上のデータは圧縮しません。
- データブロック圧縮により、チェックポイントファイルはスパースファイルになります。
- 圧縮機能を有効に変更しても、すでにチェックポイントファイルに書き込み済みのデータは圧縮できません。
データブロック圧縮はLinuxの機能を利用しているため、Linuxカーネルバージョンとファイルシステムに依存します。以下の環境で動作確認済みです。
- OS: CentOS 7.2
- ファイルシステム:XFS
- ファイルシステムのブロックサイズ:4KB
Copyright (C) 2017 TOSHIBA Digital Solutions Corporation