BluemixのdashDBの兄弟？「dashDB Local」をLinux基盤でインストールしてみました

Bluemix等で利用できる、このQiitaにも幾つかメモしたdashDBですが「dashDB Local」というものがあるようで試してみました
https://www.ibm.com/analytics/jp/ja/technology/cloud-data-services/dashdb-local/

いわゆるマネージド・サービスではなくて**ソフトウェアのようにdashDBを使えるのがdashDB Local**のようです（**「ソフトウェアアプライアンス」**と言うらしい）

操作にあたり、参考にしたページは[こちらのマニュアル](https://www.ibm.com/support/knowledgecenter/SS6NHC/com.ibm.swg.im.dashdb.doc/admin/linux_deploy.html)

ざっくり手順を紹介すると
- Free Trialの登録
- Linux準備（今回はCentOS）
- Dockerインストール
- dashDB Localインストール（Dockerコンテナをダウンロード＆run）

これだけです:thumbsup:

## Free Trialの登録
[ここを見る](https://www.ibm.com/account/us-en/signup/register.html?a=NDllOGRkMjMtMTI0My00&ctx=C001&cc=us&lc=en&source=mrsaas-trial-ibmid&pkg=ov51381&S_TACT=000000VQ&S_OFF_CD=10000739)。
加えて、 [dokcer hubのID](http://docs.docker.jp/docker-hub/accounts.html#registration-for-a-docker-hub-account)も必要です。


## CentOS 準備

### ホスト名設定の確認

/etc/hostsでホスト名が設定されているかを確認。設定されてない場合は、適宜行追加。

```console
$ cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
169.53.15.170 dashLocal
```

### SELinuxの設定確認

以下のように、SELINUX=permissiveとなってることを確認

```console:設定ファイルをviで編集
# vi /etc/selinux/config
```


```console:例
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
```

###IP転送がONになってることを確認する
1が帰ってくればOK。帰ってこなければ要設定。

```console
# /sbin/sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
```

### dashDB Local用にファイルシステムを作成する

```console:fdiskで作成
# fdisk /dev/xvdc

〜中略〜

コマンド (m でヘルプ): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended

Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-1048575999, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-1048575999, 初期値 1048575999):
初期値 1048575999 を使います
Partition 1 of type Linux and of size 500 GiB is set

コマンド (m でヘルプ): w
パーティションテーブルは変更されました！
```

このあと、OS rebootして設定を反映させてからファイルシステム作成し、マウント

```console:ファイルシステム作成
# mkfs.xfs -d su=256k,sw=4  /dev/xvdc1
meta-data=/dev/xvdc1             isize=512    agcount=16, agsize=8191936 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=131070976, imaxpct=25
         =                       sunit=64     swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=64000, version=2
         =                       sectsz=512   sunit=64 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

```


```console:マウント
# mkdir /mnt/clusterfs
# mount /dev/xvdc1 /mnt/clusterfs
# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda2        99G  1.4G   92G    2% /
devtmpfs         7.8G     0  7.8G    0% /dev
tmpfs            7.7G     0  7.7G    0% /dev/shm
tmpfs            7.7G  8.4M  7.7G    1% /run
tmpfs            7.7G     0  7.7G    0% /sys/fs/cgroup
/dev/xvda1       240M  159M   69M   70% /boot
tmpfs            1.6G     0  1.6G    0% /run/user/1000
/dev/xvdc1       500G   33M  500G    1% /mnt/clusterfs
```
最終行に、/mnt/clusterfsが出来ています。よしよし。


## Dockerインストール

マニュアルに書いてある通り、インストール
...どうやらバージョンが指定のようです。

```console
# yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
# yum makecache fast
# yum -y install docker-engine-1.12.6-1.el7.centos
# systemctl start docker
# systemctl enable docker
```

以上で、OS側のセットアップ完了です。ではいよいよ、dashDB Local側にはいっていきます。


## dashDB Local インストール
Docker HUBにログインします。冒頭で登録したTrialのユーザです。


```console
#docker login -u=docker_hub_id -p='password'
```

dashDBのコンテナを落として、インストールします。
その様子をlogs --followで追ってみます。どんな設定をしたりとか、エラーが出た場合は何でエラーがでているかなどがわかって便利です（ところどころ中略しています）

```console
# docker run -d -it --privileged=true --net=host --name=dashDB -v /mnt/clusterfs:/mnt/bludata0 -v /mnt/clusterfs:/mnt/blumeta0 ibmdashdb/local:latest-linux

# docker logs --follow dashDB
systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
Detected virtualization docker.
Detected architecture x86-64.

Welcome to dashDB Local!

Set hostname to <ynats0602010319.demos.demoibm.com>.
Initializing machine ID from random generator.
Cannot add dependency job for unit systemd-tmpfiles-clean.timer, ignoring: Unit is masked.
[  OK  ] Reached target Local File Systems.
[  OK  ] Reached target Timers.
[  OK  ] Reached target Swap.
[  OK  ] Reached target Paths.
[  OK  ] Created slice Root Slice.

[  505.879243] start_dashDB_local.sh[148]: Container Tests Summary
[  505.881775] start_dashDB_local.sh[148]: +--------------------------------+----------------------+
[  505.882033] start_dashDB_local.sh[148]: |              Test              |        Result        |
[  505.882229] start_dashDB_local.sh[148]: +--------------------------------+----------------------+
[  505.882417] start_dashDB_local.sh[148]: | Minimum data volume free-space |         PASS         |
[  505.882604] start_dashDB_local.sh[148]: |         Minimum memory         |         PASS         |
[  505.882790] start_dashDB_local.sh[148]: |  Minimum number of CPU cores   |         PASS         |
[  505.882980] start_dashDB_local.sh[148]: |       Port availability        |         PASS         |
[  505.883191] start_dashDB_local.sh[148]: |       Port accessibility       |         PASS         |
[  505.883375] start_dashDB_local.sh[148]: |     Data volume direct I/O     |         PASS         |
[  505.883559] start_dashDB_local.sh[148]: |  Data volume read/write speed  | 68.5 MB/s, 10.9 MB/s |
[  505.883741] start_dashDB_local.sh[148]: +--------------------------------+----------------------+
[  509.492217] start_dashDB_local.sh[148]: Creating dashDB directories and dashDB instance

[ 1545.408941] start_dashDB_local.sh[148]: ################################################################################
[ 1545.409242] start_dashDB_local.sh[148]: ###              Starting all the services in the dashDB stack               ###
[ 1545.409443] start_dashDB_local.sh[148]: ################################################################################
[ 1545.409633] start_dashDB_local.sh[148]: * If this is a new deployment, the dashDB stack is initialized, which might
[ 1545.409827] start_dashDB_local.sh[148]: take a while.
[ 1545.410037] start_dashDB_local.sh[148]: * If this is a container update, it might take a while to start the services,
[ 1545.410236] start_dashDB_local.sh[148]: depending on whether a dashDB engine or database update is required.
[ 1545.871495] start_dashDB_local.sh[148]: ********************** dashDB Local license information ************************
[ 1545.874837] start_dashDB_local.sh[148]: * License type             : Trial
[ 1545.878250] start_dashDB_local.sh[148]: * License expiry date      : 09/01/2017
[ 1545.881802] start_dashDB_local.sh[148]: * Number of days remaining : 89
[ 1545.885178] start_dashDB_local.sh[148]: * License status           : Active
[ 1545.888188] start_dashDB_local.sh[148]: ********************************************************************************
[ 1580.465106] start_dashDB_local.sh[148]: dashDB instance will use up to 70% of the total memory.
[ 1613.688066] start_dashDB_local.sh[148]: Running AUTOCONFIGURE to tune dashDB database ...
[ 1623.248191] start_dashDB_local.sh[148]: Spark memory will use up to 10% of the total memory.
[ 1699.525821] start_dashDB_local.sh[148]: Updating dashDB database log file configuration
[ 1731.728261] start_dashDB_local.sh[148]: Run hardware inventory collection
[ 1732.187798] start_dashDB_local.sh[148]: +----------------+------------+----------------+-------------+
[ 1732.188236] start_dashDB_local.sh[148]: |                | # of nodes | # of CPU cores | Memory (MB) |
[ 1732.188440] start_dashDB_local.sh[148]: +----------------+------------+----------------+-------------+
[ 1732.188636] start_dashDB_local.sh[148]: | Current        |     1      |       4        |    15629    |
[ 1732.188834] start_dashDB_local.sh[148]: | Max this month |     1      |       4        |    15629    |
[ 1732.189059] start_dashDB_local.sh[148]: | Max last month |     --     |       --       |      --     |
[ 1732.189250] start_dashDB_local.sh[148]: | Max all time   |     1      |       4        |    15629    |
[ 1732.189433] start_dashDB_local.sh[148]: +----------------+------------+----------------+-------------+


[ 1936.253072] start_dashDB_local.sh[148]: ###########################################################################
[ 1936.256215] start_dashDB_local.sh[148]: #####           --- dashDB stack service status summary ---           #####
[ 1936.259292] start_dashDB_local.sh[148]: ###########################################################################
[ 1940.421875] start_dashDB_local.sh[148]: Redirecting to /bin/systemctl status  slapd.service
[ 1940.422195] start_dashDB_local.sh[148]: SUMMARY
[ 1940.422431] start_dashDB_local.sh[148]: LDAPrunning                   : SUCCESS
[ 1940.422650] start_dashDB_local.sh[148]: dashDBtablesOnline            : SUCCESS
[ 1940.422847] start_dashDB_local.sh[148]: WebConsole                    : SUCCESS
[ 1940.423062] start_dashDB_local.sh[148]: dashDBconnectivity            : SUCCESS
[ 1940.423264] start_dashDB_local.sh[148]: dashDBrunning                 : SUCCESS
[ 1940.427368] start_dashDB_local.sh[148]: ***********************************************************
[ 1940.430783] start_dashDB_local.sh[148]: *******             Congratulations!             **********
[ 1940.433617] start_dashDB_local.sh[148]: **         You have successfully deployed dashDB         **
[ 1940.436857] start_dashDB_local.sh[148]: ***********************************************************
[ 1940.439505] start_dashDB_local.sh[148]: *
[ 1940.442282] start_dashDB_local.sh[148]: * Next steps:
[ 1940.445122] start_dashDB_local.sh[148]: *
[ 1940.598153] start_dashDB_local.sh[148]: * 1. If you were monitoring dashDB Local container startup progress using docker logs
[ 1940.601116] start_dashDB_local.sh[148]: command, use Ctrl+c key-sequence to detach from the Docker logs console.
[ 1940.604197] start_dashDB_local.sh[148]: * 2. Log in to the web console using the following information:
[ 1940.607043] start_dashDB_local.sh[148]: *        URL: https://169.53.15.170:8443
[ 1943.212686] start_dashDB_local.sh[148]: *        Default user ID    : bluadmin
[ 1943.213059] start_dashDB_local.sh[148]: *        Default password   : xxxxxxx
[ 1943.218720] start_dashDB_local.sh[148]: * 3. For improved security, change the default bluadmin password
[ 1943.221797] start_dashDB_local.sh[148]: *         by running "docker exec -it dashDB setpass <new password>". Other user management
[ 1943.224819] start_dashDB_local.sh[148]: *         should be done via the web console.
[ 1943.227895] start_dashDB_local.sh[148]: *
[ 1943.231064] start_dashDB_local.sh[148]: ***********************************************************
```

最後にURL、ユーザ名、パスワードが出ています。このままでも良いのですが、到底覚えられ無さそうなパスワードなので、せっっかくなので変更してみます。

```console
# docker exec -it dashDB setpass xxxxxxx
```

では稼働確認！



## 稼働確認
![スクリーンショット 2017-06-06 16.11.11.png](https://qiita-image-store.s3.amazonaws.com/0/119378/094871c3-f851-0d4d-fa84-f0f610872aa2.png)

![スクリーンショット 2017-06-06 16.13.18.png](https://qiita-image-store.s3.amazonaws.com/0/119378/4b6283b1-0d68-15ae-a5e4-462b8942f96f.png)

できあがり！

##おまけ
（MacとかWindowsでもDocker tools?使えばできるみたいなので、また今度試してみようかな..）