【MarkLogic Server】CentOS6にMarkLogic8をインストールする手順


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

MarkLogicとは[MarkLogic社](http://jp.marklogic.com/)が提供するXMLデータベース（NoSQL DB）です。
さまざまなデータ構造（スキーマ）のXMLを取り込むことが可能です。RDBの場合は事前にスキーマを決めた上でテーブルを作成してデータを取り込まなければなりません。
しかし、MarkLogicはXMLであればスキーマを意識せずに、どのような構造のXMLでも取り込むことが可能です。

システム開発の現場では、データのスキーマがなかなか確定しなかったり、開発中に変更が発生する場合が多くあります。
また、外部システムとの連携が多いシステムの場合、扱うデータの種類が多くなります。
このように、スキーマが変動的であったり多くの異なるデータを扱うシステムにおいて、スキーマレスのMarkLogicは最適なデータベースです。

本記事ではCentOS6にMarkLogic8をインストールする手順を紹介します。

概要
====

CentOS6.5にMarkLogic8をインストールする手順を記載します。

| 対象MarkLogicバージョン | 対象OS・バージョン |
|---|---|
|8.0-6.1|CentOS6.5|

構築手順
========

１.インストールに必要な資材をサーバ上に配置
-------------------------------------------

以下の資材をサーバ上に配置します。

    glibc-2.12-1.1.132.el6.i686.rpm
    nss-softokn-freebl-3.14.3-9.el6.i686.rpm
    MarkLogic-RHEL6-8.0-6.x86_64.rpm

２.インストールの実行
---------------------

以下のコマンドを実行し、インストールします。

    # rpm -ivh nss-softokn-freebl-3.14.3-9.el6.i686.rpm glibc-2.12-1.1.132.el6.i686.rpm　MarkLogic-RHEL6-8.0-6.x86_64.rpm

３.IOスケジューラの設定変更
---------------------------

MarkLogicの効率的なディスクI/Oを保障するため、IOスケジューラの設定をdeadlineまたはnoopにする必要があります。
deadlineはI/O要求の待ち時間が限界値を越えていた場合、そのI/O要求を優先で処理することでレイテインシを一定に保つようにします。通常はdeadlineを設定します。
noopはI/O要求順に処理をするため、スケジューリングの負荷が小さくなります。ハードウェアRAIDにしているか、SSDのみ接続されている場合に限りnoopを設定します。

deadlineを設定する場合は以下のように設定します。

    # cat /sys/block/sda/queue/scheduler
    noop anticipatory deadline [cfg]

    # echo 'deadline' > /sys/block/sda/queue/scheduler
    noop anticipatory [deadline] cfg

noopを設定する場合は以下のように設定します。

    # cat /sys/block/sda/queue/scheduler
    noop anticipatory deadline [cfg]

    # echo 'noop' > /sys/block/sda/queue/scheduler
    [noop] anticipatory deadline cfg

４.ディスクの設定確認
---------------------

ファイルシステムがext3、または、ext4の場合、「data=writeback」になっていないことを確認します。
ext3、または、ext4の「data=writeback」設定は、実データの書き込み順序を保障しないため、データクラッシュやサーバダウンなどの障害発生時にデータの復旧が正しく行われない場合や整合性がとれない可能性があります。

確認コマンドは以下となります。（この例ではext4に「data=writeback」の設定がないことを確認）

    $ cat  /etc/fstab

    /dev/mapper/VolGroup-lv_root              /          ext4    defaults        1 1
    UUID=ac0902ec-c507-47bb-8d13-8f5a2528873e /boot      ext4    defaults        1 2
    /dev/mapper/VolGroup-lv_home              /home      ext4    defaults        1 2
    /dev/mapper/VolGroup-lv_swap              swap       swap    defaults        0 0
    tmpfs                                     /dev/shm   tmpfs   defaults        0 0
    devpts                                    /dev/pts   devpts  gid=5,mode=620  0 0
    sysfs                                     /sys       sysfs   defaults        0 0
    proc                                      /proc      proc    defaults        0 0
    /dev/sdb1                                 /Forests   ext4    defaults        1 1

５.サーバ再起動
---------------

サーバを再起動します。

    # shutdown -r now

６.MarkLogicに接続
------------------


http://IPアドレス:8001/ に接続します。

![serverInstall.png](https://qiita-image-store.s3.amazonaws.com/0/188643/8fe3645e-e136-0daa-1d31-f9e98bc29545.png)

７.MarkLogicをインストール
--------------------------

### ７-１.「OK」を押下

![serverInstallOK.png](https://qiita-image-store.s3.amazonaws.com/0/188643/71192999-9a17-4276-8c91-762b3b428d13.png)

### ７-２.「skip」を押下

![serverInstallSkip.png](https://qiita-image-store.s3.amazonaws.com/0/188643/2f3de9c2-3d30-4d92-da0e-598422989c44.png)

### ７-３.以下を設定し「OK」を押下

|Admin|Password|Confirm Password|Realm|
|-------------------------------|----------------------------------|------------------------------------------|-------------------------------|
|adminのユーザ名|adminのパスワード|adminのパスワード(確認)|public|

![SecuritySetup.png](https://qiita-image-store.s3.amazonaws.com/0/188643/856e38ea-59cd-4959-2db9-518a6593e6fe.png)

### ７-４.認証要求された場合、前項で設定したAdminとパスワードを入力

![SecuritySetupAuth.png](https://qiita-image-store.s3.amazonaws.com/0/188643/22a77cef-b266-0e14-3bc5-a96a1e740173.png)

### ７-５.設定完了

設定が完了すると管理画面のTOPページへ遷移します。

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

本記事ではCentOS6でのMarkLogic8のインストール方法を紹介しましたが、RedHat Enterprise LinuxやSolaris、Windows、Macなどにもインストールができます。
手軽に始められるため、是非インストールしてMarkLogicの凄さを実感してみましょう！

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

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

**免責事項**

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