【MarkLogic Server】クラスタからノードを切り離す手順

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

クラスタ構成において、障害発生やメンテナンスでノードを入れ替えるときなどノードを切り離したい場合があります。
本記事ではクラスタからノードを切り離す手順を紹介します。

実施内容
====

本記事では4台構成のクラスタよりノードを1台切り離します。
実施内容は以下のとおりです。

* 切り離すノードに存在するフォレストのデータを他ノードのフォレストに移動させます。
* 切り離すノードに存在するフォレストをデータベースから切り離し（デタッチ）を行います。
* 切り離すノードに存在するフォレストを削除します。
* ノードを切り離します。

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

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

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

* 本記事で記す操作はHost4の管理画面（http://[Host4のIPアドレス]:8001）より操作しています。
* ノード4台でクラスタ構成にしています。
* 各ノードにはフォレストを１つずつ作成しています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/0e5681f7-54ac-d9c0-9635-f0c571f9dfc8.png)

* データベース（TestDatabase）が作成されており、各ノードのフォレストがアタッチされています。

![1_5.png](https://qiita-image-store.s3.amazonaws.com/0/188643/0dfc6d3a-3f5b-e445-d324-052a6f872be2.png)

* TestDatabaseには10万件のデータが各フォレストに分散されて格納されております。

![2.png](https://qiita-image-store.s3.amazonaws.com/0/188643/719495a7-0db5-d1dd-3a0a-b5e7af9a569a.png)

ノード切り離し手順
============

ノードを切り離すためには、切り離すノードに存在するフォレストを全て削除する必要があります。
また、切り離すノードのフォレストにデータが存在する場合、他のフォレストにデータを移す必要があります。

### １．切り離すノードに存在するフォレストのデータを他フォレストに移す

Forest4_Host4のデータを他フォレストに移します。
管理画面のDatabase→TestDatabase→Forestsに遷移します。

![3.png](https://qiita-image-store.s3.amazonaws.com/0/188643/5d8752ac-ad81-cf03-5707-dad757d109aa.png)

Forest4_Host4のretiredにチェックを入れOKボタンをクリックします。
retiredをチェックすることによって、チェックされたフォレストのデータが自動で移動します。

![4.png](https://qiita-image-store.s3.amazonaws.com/0/188643/b9681fd6-2e16-67c6-2314-3b4cc70a70e4.png)

管理画面のDatabase→TestDatabaseのStatusタブより、各フォレストのデータ件数が確認できます。
Forest4_Host4のDocumentsが0件になったら他フォレストへの移行が完了となります。

![5.png](https://qiita-image-store.s3.amazonaws.com/0/188643/4b779a42-b9b3-5bad-5115-8ab30154321f.png)

### ２．フォレストのデタッチ

Forest4_Host4をTestDatabaseからデタッチします。
管理画面のDatabase→TestDatabase→Forestsに遷移します。

![6.png](https://qiita-image-store.s3.amazonaws.com/0/188643/27737738-7cfa-b1a5-5f09-609f0f35b1c5.png)

Forest4_Host4のattachedとretiredのチェックを外しOKボタンをクリックします。

![7.png](https://qiita-image-store.s3.amazonaws.com/0/188643/2603fc7a-ddbe-d28f-34d4-f53a065cb2a6.png)

管理画面のDatabase→TestDatabaseのStatusタブより、各フォレストのDocumentsにデータ件数が表示されるため、デタッチ前後でデータ件数が一致することを確認します。

![8.png](https://qiita-image-store.s3.amazonaws.com/0/188643/5707baa8-9541-7b6d-1d4f-47ff0accf802.png)

### ３．フォレストの削除

ノードの切り離しはノードにある全てのフォレストを削除する必要があるため、
切り離すノード（Host4）に存在するフォレスト（Forest4_Host4）を削除します。
管理画面のForestsのSummaryタブよりForest4_Host4をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/74f8e42a-dead-05dc-0547-19e79306fc59.png)

deleteボタンをクリックします。

![9.png](https://qiita-image-store.s3.amazonaws.com/0/188643/8ed2dd8f-5b97-1295-6dcb-fec215d04c00.png)

「Full Delete」を選択しOKボタンをクリックします。
「Full Delete」はフォレストの構成情報含む全データの削除を行います。
「Configuration Only」はフォレストの構成情報のみ削除し、データの物理的な削除は行いません。
※「Configuration Only」はパブリックフォレストの時にのみ選択できます。パブリックフォレストとは「shared-disk failover」のようなホスト間で共有するフォレストのことを言います。パブリックフォレストはフォレストのConfigureにある「data directory」を設定することでできます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/0e5f4e7a-dbdf-bf74-018e-9afda15fdb03.png)

管理画面のHostsのSummaryタブより、Host4のForestsにForest4_Host4がないことを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/148c9c24-6c48-77da-6474-0f4ccac4ed08.png)

### ４．ノードの切り離し

Host4をクラスタから切り離します。
Host4のForestsにフォレストが1つも作成されていないことを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/148c9c24-6c48-77da-6474-0f4ccac4ed08.png)

管理画面のHostsより、Host4をクリックします。
leaveボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/bb96e205-c9bd-b610-5c4b-bf944da77a35.png)

OKボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/9ae9a766-c94a-ba6c-78f1-0c0d07aca71d.png)

MarkLogicが再起動され初期設定画面に遷移します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/9c46ead1-aa81-a956-86ea-b7c328396211.png)

Host4が切り離されたことを確認するため、クラスタ内のノードにアクセスします。
http://[Host1のIPアドレス]:8001にアクセスし、管理画面のHostsよりHost4が存在しないことを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188643/a2cf1ff5-ccef-e222-d4ce-4f64a9813bae.png)

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

ノードの切り離しはサーバ障害やノード追加作業の切り戻し時などに必要になってきます。
MarkLogicクラスタのノード切り離しは管理画面から実行でき、複雑な設定が必要ないため簡単に実施することができます！

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

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

**免責事項**

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