Db2 Warehouse (SMP構成)をデプロイする

Db2 Warehouse (SMP構成・・ノードがシングルの構成)をデプロイしてみました。その際の覚書です。

#0.前提事項
- Redhat EL 7.0-64 を前提に記載しています。
- Docker v17.06 以上を導入しておく必要があります。この環境では Docker CE v1.9.03を事前にインストールしています。Dockerのインストールについては[こちら](https://qiita.com/Asuka_Saito/items/f1af59711cd72bf51ff4)をご覧ください。 
- Db2 warehouse は Docker CE 上での稼働をサポートしていますが、Docker CEは RHELを正式にはサポートしていませんので、ご注意ください。
    - Dockerの[対応プラットフォーム](http://docs.docker.jp/engine/installation/)より抜粋
    <img width="737" alt="DockerCE-Support-list.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/05f517f3-c99a-d97c-8d6d-b387ae29bb2f.png">

- 事前に[Docker Hub](https://hub.docker.com/) へのアカウントを作成しておきます。
- Db2 Warehouse は 90日間使用できるTrialライセンスを使用します。（なにもしなければTrialライセンス）
- SSHはMacのデフォルトのターミナルを使用しています。
- コアとかメモリとかディスクの容量等のシステム条件がありますので[Knowledge Center](https://www.ibm.com/support/knowledgecenter/ja/SS6NHC/com.ibm.swg.im.dashdb.doc/admin/local_setup.html)もご覧ください。




#1.事前準備
[Knowledge Center](https://www.ibm.com/support/knowledgecenter/SSCJDQ/com.ibm.swg.im.dashdb.doc/admin/local_prereqs-Linux.html#local_prereqs-Linux)

#####1-1.インストール先のOSのIPアドレスとホスト名を/etc/hostsに記載しておきます。

```IPアドレス FQDN ホスト名```


#####1-2.ポートを開けておきます。
はじめにfirewalldを起動します。
```systemctl start firewalld.service```


以下のコマンドを実行しポートを開放します。
```firewall-cmd --zone=public --add-port=60000-60060/tcp --permanent ; 
firewall-cmd --zone=public --add-port=32768-65535/tcp --permanent ; 
firewall-cmd --zone=public --add-port=25000-25999/tcp --permanent ;
firewall-cmd --zone=public --add-port=50022/tcp --permanent ;
firewall-cmd --zone=public --add-port=50001/tcp --permanent ;
firewall-cmd --zone=public --add-port=50000/tcp --permanent ;
firewall-cmd --zone=public --add-port=9929/tcp --permanent ;
firewall-cmd --zone=public --add-port=9300/tcp --permanent ;
firewall-cmd --zone=public --add-port=8998/tcp --permanent ;
firewall-cmd --zone=public --add-port=8443/tcp --permanent ;
firewall-cmd --zone=public --add-port=5000/tcp --permanent ;
firewall-cmd --zone=public --add-port=2379-2380/tcp --permanent ; 
firewall-cmd --zone=public --add-port=389/tcp --permanent ;
firewall-cmd --zone=public --add-port=22/tcp --permanent ;
firewall-cmd --zone=public --add-port=60000-60060/udp --permanent ; 
firewall-cmd --reload```

空いているポートは以下のコマンドで確認できます。
```firewall-cmd --list-all```

```terminal
[root@xxxxxx ~]# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 60000-60060/tcp 25000-25999/tcp 50022/tcp 50001/tcp 50000/tcp 9929/tcp 9300/tcp 8998/tcp 8443/tcp 5000/tcp 2379-2380/tcp 389/tcp 22/tcp 60000-60060/udp 9444/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@xxxxxx ~]# 
```


#####1-3.IPv4 forwardingを有効にします。
/etc/sysctl.conf を編集で開いて、次の行を追加します。
```net.ipv4.ip_forward=1```

```terminal
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.ip_forward=1
~                                                                               

```
networkサービスを再起動します。

```systemctl restart network```


#####1-4.daemon.json ファイルに storage-opts オプションを追加します。

はじめに以下のディレクトリに移動します。

```cd /etc/docker```


daemon.jsonファイルがない場合は作成します。ある場合は既存を編集します。

```vi daemon.json```

```terminal
{
"storage-driver": "devicemapper",
"storage-opts": [ "dm.basesize=20G" ]
}
```
Dockerを再起動します。
```systemctl restart docker```

#2.Dockerコンテナの導入


#####2-1.Docker hub にログインして「IBM Db2 Warehouse」を検索し、「Proceed to Checkout」ボタンをクリックします。
<img width="1310" alt="Db2WarehouseDockerHub1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/f75d8e62-95ba-9a18-36d4-6c5cd38df8dc.png">

#####2-2.チェックボックスにチェックをして、「Get Content」ボタンをクリックします。
<img width="425" alt="Db2WarehouseDockerHub2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/e29597d7-cf8b-b57f-c626-f03db61fd6bc.png">

#####2-3.docker pull のコマンドが表示されますのでコピーします。
左側にはデプロイの手順が記載されています。
<img width="1303" alt="Db2WarehouseDockerHub3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/941e0b48-9a9a-c911-303b-c8df5001bfb7.png">


#####2-4.ターミナルで以下のコマンドを実行してDocker Hubにログインします。
```docker login```

Usernameが聞かれますが、メールアドレスではなくてIDの方を入力します。

```terminal
[root@xxxxxx ]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: nyasuka
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@xxxxxx ]# 
```

/root/.docker/config.jsonにエンコードされたパスワードが書かれているので、残しておきたくない人は、作業が終わったら消すようにしてください。

#####2-5.先ほどコピーしたpullのコマンドで、Db2 Warehouseをpullします。

```docker pull store/ibmcorp/db2wh_ee:v3.8.0-db2wh-linux```

```terminal
[root@xxxxxx ]# docker pull store/ibmcorp/db2wh_ee:v3.8.0-db2wh-linux
v3.8.0-db2wh-linux: Pulling from store/ibmcorp/db2wh_ee
ac9208207ada: Pulling fs layer 
5583e2813ad4: Pulling fs layer 
:
中略
:
445de5e8a4b6: Pull complete 
0f09d34fea79: Pull complete 
Digest: sha256:87b52701b38a7f64f7c9d4ce49b49937937d450a5b01b502e8612142cef1f5a4
Status: Downloaded newer image for store/ibmcorp/db2wh_ee:v3.8.0-db2wh-linux
docker.io/store/ibmcorp/db2wh_ee:v3.8.0-db2wh-linux
[root@xxxxxx ]# 

```

#####2-6.以下のコマンドでdocker イメージがあることを確認します。
```docker images```

```terminal
[root@xxxxxx ]# docker images
REPOSITORY               TAG                  IMAGE ID            CREATED             SIZE
store/ibmcorp/db2wh_ee   v3.8.0-db2wh-linux   dcffb8279c36        4 weeks ago         8.34GB
[root@xxxxxx ]# 
```


#3.Dockerコンテナの起動

#####3-1.以下のコマンドを実行して、コンテナを起動します。

```docker run -d -it --privileged=true --net=host --name=Db2wh -v /mnt/clusterfs:/mnt/bludata0 -v /mnt/clusterfs:/mnt/blumeta0 store/ibmcorp/db2wh_ee:v3.8.0-db2wh-linux```

```terminal
[root@xxxxxx ]# docker run -d -it --privileged=true --net=host --name=Db2wh -v /mnt/clusterfs:/mnt/bludata0 -v /mnt/clusterfs:/mnt/blumeta0 store/ibmcorp/db2wh_ee:v3.8.0-db2wh-linux
74348aaca45f499fd714e8c68e9775d39fc387c3e08154dc3a34501e00b121e4
[root@xxxxxx ]# 
```
#####3-2.以下のコマンドを実行して、起動ログを確認します。

```docker logs --follow Db2wh```


途中以下のSUMMARYが表示されます、Spark以外がRUNNING/SUCCESSになっていることを確認します。

```terminal
-- IBM Db2 Warehouse Services Status --
SUMMARY
Db2TablesOnline               : RUNNING
Db2connectivity               : RUNNING
Db2running                    : RUNNING
LDAPrunning                   : RUNNING
WebConsole                    : RUNNING
Spark                         : DISABLED
LDAPsearch                    : SUCCESS
* If the 'LDAPsearch' status in the output is SUCCESS, IBM Db2 Warehouse
can access the LDAP server.

```


Logs saved successfully と表示されましたら  control + c を入力してログの表示から抜けます。


#4.bluadminのパスワードの設定
以下のコマンドでパスワードを設定します。（XXXXXXXXの部分が任意の文字列）

```docker exec -it Db2wh setpass XXXXXXXX```


#5.ログイン
#####5-1.ブラウザでWebコンソールにアクセスします。
https://IPアドレスまたはFQDN:8443

![1.loginpage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/6960967d-f548-08ed-bc9a-0896b52249b9.png)

#####5-2.bluadminでログインします。
![2.WebConsole.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435996/463d2f41-93f1-ddaa-8343-036ec088dd84.png)


以上がDb2 Warehouse (SMP構成)のデプロイでした。
:smiley_cat: :smiley_cat: