【MarkLogic Server】クラスタ構成手順とデータのリバランス手順

はじめに
========

MarkLogicでは複数のMarkLogicインスタンスを組み合わせることでクラスタ構成にすることができます。
本記事では新規にクラスタを構成する手順を紹介します。

実施内容
====

本記事では既存のホスト1台に新しくノードを1台追加して2台構成のクラスタを作成します。
実施内容は以下のとおりです。

まず、追加するノードを用意します。
次に、既存のホストに追加するノードを設定します。
次に、追加したノードにフォレストを作成します。
最後に、作成したフォレストをデータベースにアタッチします。

| 対象MarkLogicバージョン | 対象OS・バージョン |
|---|---|
|8.0-4|Red Hat Enterprise Linux 7.3|

前提条件
============

本記事では以下の前提条件で操作を行います。

* MarkLogicインストール後の初期設定を行ったMarkLogicインスタンス（Host1）を用意します。インストール後の初期設定については[こちら](http://qiita.com/JucoML/items/16ac9923324d3485f4d7#%EF%BC%96marklogic%E3%81%AB%E6%8E%A5%E7%B6%9A "インストール後の初期設定")を参照してください。
* Host1にはデータベース（TestDatabase）が作成されています。
* TestDatabaseにはフォレストが2つアタッチされています。
* TestDatabaseには1万件のデータが各フォレストに以下のように格納されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/9f9e4f3c-a34b-2d0f-343f-e8ba79f841b2.png)

新規にクラスタを構成する手順
============

既存のMarkLogicインスタンス（Host1）を基にして、２台構成のクラスタを構築する手順を記します。
新規にMarkLogicインスタンス（Host2）を作成してクラスタに関する設定を行います。

### １．追加先のホストを指定

クラスタの設定は、MarkLogicインストール直後の初期設定時のみ行えます。
追加するノードの初期設定時に以下の画面で参加するクラスタ内のホスト名とAdminのポート番号、プロトコルを指定します。
設定が完了後、OKボタンをクリックします。

![AddCluster2.png](https://qiita-image-store.s3.amazonaws.com/0/188643/60d6d5bd-57d0-c23e-c754-9fd31abd5230.png)

### ２．参加するグループとホスト名を設定

Host1のグループからどのグループに参加するか選択し、参加するホスト名（Host2）を設定します。
設定が完了後、OKボタンをクリックします。

![AddCluster3.png](https://qiita-image-store.s3.amazonaws.com/0/188643/44ceb1d4-af88-457a-5d0c-9a8ecf047a58.png)

### ３．OKボタンをクリック

対象のクラスタ内にノードを追加をするか確認されます。
OKボタンをクリックします。

![AddCluster4.png](https://qiita-image-store.s3.amazonaws.com/0/188643/27147657-830a-9693-90ab-287dd35f0d51.png)

### ４．OKボタンをクリック

新しく追加したノードにクラスタの構成情報を転送します。
OKボタンをクリックします。

![AddCluster5.png](https://qiita-image-store.s3.amazonaws.com/0/188643/83a2c4b5-10b0-6cf2-cb9e-4b5c01f4c0ca.png)

OKボタンをクリックするとサーバが再起動します。

![AddCluster6.png](https://qiita-image-store.s3.amazonaws.com/0/188643/41ba4821-baa3-af50-85ae-4755928c52fb.png)

### ５．追加したノードを確認

MarkLogicの管理画面より、ノードが追加されていることを確認します。
HostsのSummaryタブより新規に追加したノードが表示されている場合、ノードの追加は完了です。

![imp_2.png](https://qiita-image-store.s3.amazonaws.com/0/188643/df94e656-84e5-c053-4352-55e91de78c19.png)

### ６．フォレストを作成

新しく追加したノード（Host2）にフォレスト（Forest3_Host2）を新規作成します。
管理画面のForestsよりCreateタブをクリックします。
フォレスト名とホスト名を入力します。このとき、ホスト名は新しく追加したノード（Host2）を選択します。
入力が完了したらOKボタンをクリックしフォレストを作成します。
※リバランス機能はデフォルトで有効になっているため、設定は不要です。

![imp_3.png](https://qiita-image-store.s3.amazonaws.com/0/188643/857c6103-4147-d031-9462-289423d693df.png)

### ７．フォレストのアタッチ

データベースに対して作成したForest3_Host2のアタッチを行います。
フォレストをアタッチすると、既存のフォレストデータが新しく追加したフォレストに自動的に移動します（これをリバランシングと呼びます）。
管理画面のDatabase→TestDatabase→Forestsに遷移します。

![imp_4.png](https://qiita-image-store.s3.amazonaws.com/0/188643/2a4154b9-0f8e-460f-be96-7b22c3e75385.png)

新規にアタッチするForest3_Host2のattachedにチェックします。
チェック完了後、OKボタンをクリックします。

![imp_1_5.png](https://qiita-image-store.s3.amazonaws.com/0/188643/2f43622a-02a5-81e6-997f-0aa466d8a419.png)

管理画面のDatabase→TestDatabaseのStatusタブより、各フォレストの状況を確認することが出来ます。
リバランシング中は「Rebalancing State」が「rebalancing in progress」になっています。
リバランシングはMarkLogicが自動的に判断しデータが均等になるように各フォレストに格納していきます。
また、各フォレストのDocumentsにデータ件数が表示されているため、クラスタ構成前後でデータ件数が一致することを確認します。

![imp_3.png](https://qiita-image-store.s3.amazonaws.com/0/188643/9d0c051b-5238-4187-13a5-79549307d331.png)

おわりに
========

クラスタ構成にすることでロードなどの性能向上を図ることやデータを他拠点に分散、レプリケーションの設定などができます。
ノードを3台以上にすることでフェイルオーバー設定も可能となるため、高可用性を実現するためにはクラスタ化は必須技術となります！

```math
\def\textsmall#1{%
  {\rm\scriptsize #1}
}
```

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

**免責事項**

​​​​​$\textsmall{当ユーザ会は本文書及びその内容に関して、いかなる保証もするものではありません。}$
​​​​​$\textsmall{万一、本文書の内容に誤りがあった場合でも当ユーザ会は一切責任を負いかねます。}$
​​​​​$\textsmall{また、本文書に記載されている事項は予告なしに変更または削除されることがありますので、予めご了承ください。}$