oneWEX導入メモ / RHEL7.6 オフライン編

# はじめに
Watson Explorer Deep Analytics Edition のコンポーネントの1つであるoneWEXの導入時メモです。
外のインターネットからは隔離されているハイセキュアな環境に導入する想定で、オフラインでのインストールを試してみました。
最近のサービスはクラウド上で提供されるものも多いですが、oneWEXはDockerベースで実装されており、オンプレ環境に構築できるのが特徴の一つでもあります。

##関連記事

インストール関連
[oneWEX導入メモ / Ubuntu編](https://qiita.com/tomotagwork/items/bdd48adf45140b584678)
[oneWEX導入メモ / RHEL7.6 オフライン編](https://qiita.com/tomotagwork/items/6ad047d0b72e199b7878)

検索関連
[oneWEX検証メモ - (0) 概要理解](https://qiita.com/tomotagwork/items/2c00007f45a3d2e482ea)
[oneWEX検証メモ - (1)ファイルシステムクローラーによるデータの取り込み / データセット、コレクションの作成](https://qiita.com/tomotagwork/items/00301322d4336b52d1e3)
[oneWEX検証メモ - (2)Windowsファイルシステムクローラーによるデータの取り込み](https://qiita.com/tomotagwork/items/1619624af8a64cf330d4)
[oneWEX検証メモ - (3)ContentMinerによる文書の検索](https://qiita.com/tomotagwork/items/24b5bbcc85c6bada41da)
[oneWEX検証メモ - (4)ApplicationBuilderによるWebアプリの作成と文書の検索](https://qiita.com/tomotagwork/items/a53b2c7f52cb1dcb68d9)

分析関連
[oneWEX検証メモ - (5)ContentMinerによる分析 / ガイド付きモード](https://qiita.com/tomotagwork/items/a9c381a477594453e2b1)
[oneWEX検証メモ - (6)ContentMinerによる分析 / 各種"ID情報"をベースとした分析](https://qiita.com/tomotagwork/items/9269fd31109638e6dd89)

API関連
[oneWEX検証メモ - (7)REST API](https://qiita.com/tomotagwork/items/7c1340f41333896f8fe3)


# 環境情報
**H/W** (VirtualBox上のVMとして作成)
Memory 24MB
Disk 200GB
CPU 6Core (Intel Core i5-8350U CPU @ 1.70GHz)

**S/W**
RHEL v7.6
Docker CE v19
oneWEX v12.0.3

参考: [oneWEX - Compatibility Report](https://www.ibm.com/software/reports/compatibility/clarity-reports/report/html/softwareReqsForProduct?deliverableId=EAAC8DD0522711E982882C5D069DA07A&osPlatforms=AIX|Linux|Windows&duComponentIds=S001|S002|S003|S004&mandatoryCapIds=16&optionalCapIds=30|22|221|132|20|26)

CPUについて

>The following table specifies the minimum processor required to install the IBM Watson Explorer oneWEX for single container deployment on server.
Note: oneWEX for single container deployment is for processing small amount of data such as PoC use case. A server equips around 4 to 8 CPU cores are appropriate. Allocating more CPU cores to the system does not contribute to the performance improvement.
>
>64-bit (AMD64 or Intel 64) x86 system with four or more cores of 2GHz, or higher processor


# 導入作業

## 事前準備 (パッケージ入手)
REHLとoneWEX本体はライセンス購入して、しかるべき手続きで入手するとして...
Dockerがちとやっかいです。

Dockerは有償版のEE(Enterprise Edition)と無償版のCE(Community Edition)があるようなのですが、どうやらRedHatについてはEE版しかないみたいです。
参考: https://docs.docker.com/install/

RedHatの場合はDockerEE使うのが王道っぽいですが、とりあえず手元にDockerEEのライセンスが無いのでDockerCEでやります。
で、RHELへの導入はCentOS版を使えばよさそうなので、CentOSのパッケージを入手することにします。
参考: [Get Docker Engine - Community for CentOS - Install from a package](https://docs.docker.com/install/linux/docker-ce/centos/#install-from-a-package)

上のガイドにあるダウンロードサイトからrpmパッケージを入手します。
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 

現時点で最新のもの(v19.03)をダウンロード
docker-ce-19.03.1-3.el7.x86_64.rpm
docker-ce-cli-19.03.1-3.el7.x86_64.rpm
containerd.io-1.2.6-3.3.el7.x86_64.rpm


さらに、RHEL上へのDockerインストールについて調べていると、こういう情報がありました。
https://stackoverflow.com/questions/42981114/install-docker-ce-17-03-on-rhel7
https://stackoverflow.com/questions/45272827/docker-ce-on-rhel-requires-container-selinux-2-9/45287245

この辺の情報によると、container-selinux のパッケージも必要になるとのことなので、以下のサイトから、container-selinuxの最新版パッケージを入手しておきます。
http://mirror.centos.org/centos/7/extras/x86_64/Packages/
container-selinux-2.107-1.el7_6.noarch.rpm

※追記
「libXScrnSaver」というパッケージが必要らしいのでこいつもインストールする！
https://www.ibm.com/support/knowledgecenter/ja/SS8NLW_12.0.0/com.ibm.watson.wex.ee.doc/c_onewex_install_docker.html

## Docker CEのインストール
上で入手したrpmファイルを対象のマシンに持っていき、インストールします。

```
[root@test11 /Host_Inst_Image/oneWEX/DockerCE_CentOS]# yum install ./docker-ce-cli-19.03.1-3.el7.x86_64.rpm
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
./docker-ce-cli-19.03.1-3.el7.x86_64.rpm を調べています: 1:docker-ce-cli-19.03.1-3.el7.x86_64
./docker-ce-cli-19.03.1-3.el7.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ docker-ce-cli.x86_64 1:19.03.1-3.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================================================
 Package                 アーキテクチャー バージョン                  リポジトリー                                   容量
==========================================================================================================================
インストール中:
 docker-ce-cli           x86_64           1:19.03.1-3.el7             /docker-ce-cli-19.03.1-3.el7.x86_64           169 M

トランザクションの要約
==========================================================================================================================
インストール  1 パッケージ

合計容量: 169 M
インストール容量: 169 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:docker-ce-cli-19.03.1-3.el7.x86_64                                                      1/1
rhel-dvd/productid                                                                                 | 1.6 kB  00:00:00
  検証中                  : 1:docker-ce-cli-19.03.1-3.el7.x86_64                                                      1/1

インストール:
  docker-ce-cli.x86_64 1:19.03.1-3.el7

完了しました!



[root@test11 /Host_Inst_Image/oneWEX/DockerCE_CentOS]# yum install ./container-selinux-2.107-1.el7_6.noarch.rpm
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
./container-selinux-2.107-1.el7_6.noarch.rpm を調べています: 2:container-selinux-2.107-1.el7_6.noarch
./container-selinux-2.107-1.el7_6.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ container-selinux.noarch 2:2.107-1.el7_6 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================================================
 Package                   アーキテクチャー
                                          バージョン                リポジトリー                                     容量
==========================================================================================================================
インストール中:
 container-selinux         noarch         2:2.107-1.el7_6           /container-selinux-2.107-1.el7_6.noarch          40 k

トランザクションの要約
==========================================================================================================================
インストール  1 パッケージ

合計容量: 40 k
インストール容量: 40 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 2:container-selinux-2.107-1.el7_6.noarch                                                  1/1
  検証中                  : 2:container-selinux-2.107-1.el7_6.noarch                                                  1/1

インストール:
  container-selinux.noarch 2:2.107-1.el7_6

完了しました!


[root@test11 /Host_Inst_Image/oneWEX/DockerCE_CentOS]# yum install ./containerd.io-1.2.6-3.3.el7.x86_64.rpm
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
./containerd.io-1.2.6-3.3.el7.x86_64.rpm を調べています: containerd.io-1.2.6-3.3.el7.x86_64
./containerd.io-1.2.6-3.3.el7.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ containerd.io.x86_64 0:1.2.6-3.3.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================================================
 Package                  アーキテクチャー  バージョン               リポジトリー                                    容量
==========================================================================================================================
インストール中:
 containerd.io            x86_64            1.2.6-3.3.el7            /containerd.io-1.2.6-3.3.el7.x86_64             96 M

トランザクションの要約
==========================================================================================================================
インストール  1 パッケージ

合計容量: 96 M
インストール容量: 96 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : containerd.io-1.2.6-3.3.el7.x86_64                                                        1/1
  検証中                  : containerd.io-1.2.6-3.3.el7.x86_64                                                        1/1

インストール:
  containerd.io.x86_64 0:1.2.6-3.3.el7

完了しました!


[root@test11 /Host_Inst_Image/oneWEX/DockerCE_CentOS]# yum install ./docker-ce-19.03.1-3.el7.x86_64.rpm
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
./docker-ce-19.03.1-3.el7.x86_64.rpm を調べています: 3:docker-ce-19.03.1-3.el7.x86_64
./docker-ce-19.03.1-3.el7.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ docker-ce.x86_64 3:19.03.1-3.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================================================
 Package               アーキテクチャー   バージョン                    リポジトリー                                 容量
==========================================================================================================================
インストール中:
 docker-ce             x86_64             3:19.03.1-3.el7               /docker-ce-19.03.1-3.el7.x86_64             104 M

トランザクションの要約
==========================================================================================================================
インストール  1 パッケージ

合計容量: 104 M
インストール容量: 104 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 3:docker-ce-19.03.1-3.el7.x86_64                                                          1/1
  検証中                  : 3:docker-ce-19.03.1-3.el7.x86_64                                                          1/1

インストール:
  docker-ce.x86_64 3:19.03.1-3.el7

完了しました!
```

dockerバージョン確認

```
[root@test11 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:21:07 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
```

docker起動

```
[root@test11 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com

[root@test11 ~]# systemctl start docker

[root@test11 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 木 2019-08-08 14:49:04 JST; 7s ago
     Docs: https://docs.docker.com
 Main PID: 7141 (dockerd)
    Tasks: 14
   Memory: 44.1M
   CGroup: /system.slice/docker.service
           mq7141 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.151988935+09:00" level=info msg="ClientConn swi...e=grpc
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.152031393+09:00" level=info msg="pickfirstBalan...e=grpc
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.152281031+09:00" level=info msg="pickfirstBalan...e=grpc
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.184899421+09:00" level=info msg="Loading contai...tart."
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.497813310+09:00" level=info msg="Default bridge...dress"
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.724817777+09:00" level=info msg="Loading contai...done."
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.779594517+09:00" level=info msg="Docker daemon"...9.03.1
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.779873370+09:00" level=info msg="Daemon has com...ation"
 8月 08 14:49:04 test11 dockerd[7141]: time="2019-08-08T14:49:04.813336778+09:00" level=info msg="API listen on ....sock"
 8月 08 14:49:04 test11 systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
```

はい、OKぽいです。

参考: [Dockerでよく使うコマンドまとめ](https://morizyun.github.io/docker/about-docker-command.html)

## oneWEXのインストール

以前、consoleモードではまったので、今回は最初からGUIモードでインストールします。
oneWEXのインストーラーを起動し、全てデフォルトのまま次へ次へでインストール。

```xxx:インストーラー起動
[root@test11 /Inst_Image/oneWEX]# ./install.bin
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/95672361-8baf-8a43-76ee-95c651867de5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/940b1388-6367-f53d-111b-22019d6266d8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/221f3f1e-bac4-5b6e-a6bf-90d2d84ddf4f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/2c4a0b79-2936-9242-7de7-5fc871b8d234.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/64958932-f814-499d-6504-625ef2f8fe2c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/1be56409-b668-3667-d79e-cdfe40bcb5e4.png)

今回はすんなりいきました。

oneWEX起動

```
[root@test11 ~]# cd /root/ibm/wex/bin
[root@test11 ~/ibm/wex/bin]# ./wexdocker.sh
FFQC5306I システムを停止しています...
FFQC5302I システムを始動しています...
```

確認

```
[root@test11 ~/ibm/wex/bin]# docker ps
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                    NAMES
b07a283ec410        ibm-wex-ee:12.0.3.935      "/opt/ibm/wex/sbin/e…"   2 minutes ago       Up 2 minutes        0.0.0.0:443->60443/tcp   wex12dae
39090454d4d9        ibm-wex-wksml:12.0.3.935   "/sire-entrypoint.sh…"   2 minutes ago       Up 2 minutes        9080/tcp, 9443/tcp       wksml-service
```

はい、上がりました！

参考: [[oneWEX] 起動停止コマンド](https://qiita.com/nsatoh/items/04c8e7c760d18eed11c6)

# 接続確認

ブラウザから当該ホストに以下にアクセスできればOK

- Admin Console / https://hostname:443/admin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/f269bffa-8de3-c837-9c1b-697a5dcdffec.png)
adminユーザーでサインイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/a0e69a86-d5a0-8532-af6e-f656b9f7fdd8.png)

- Content Miner / https://hostname:443/miner

- App Builder / https://hostname:443/builder

#補足

##構成ファイル
oneWEXの構成情報は、インストールディレクトリ(/root/ibm/wex)のconfig/wex.jsonファイルに保持しています。

```json:/root/ibm/wex/config/wex.json
{
  "env": {
    "SOLR_MAX_HEAP": "4g",
    "DOCPROC_WORKER_NUM": "2",
    "SOLR_PER_NODE": "1",
    "DOCPROC_MAX_MEMORY": "2g",
    "WKSML_HOST": "wksml-service",
    "ZK_MAX_HEAPSIZE": "1g",
    "ZK_MIN_HEAPSIZE": "512m",
    "WLP_JVM_MAX_MEMORY": "1g"
  },
  "port": 443,
  "name": "wex12dae",
  "wexDataVolume": "wex12dae",
  "dockerImage": "ibm-wex-ee:12.0.3.935",
  "wksmlImage": "ibm-wex-wksml:12.0.3.935",
  "wksmlContainerName": "wksml-service",
  "restart": "unless-stopped"
}
```

色々とデータを取り込んだり分析させようとすると、ヒープが足りなくなることがあるので、SOLR_MAX_HEAPあたりは増やしておいた方がよいでしょう。
参考: https://www-01.ibm.com/support/docview.wss?uid=ibm10734583
(一応上のような情報はありますが、あまり明確なチューニングの基準は無さそうです。というか、そもそも上のパラメーターのリファレンスすらKnowledge Centerに見当たらないのはどういう訳なんだろうか???)

## SSLサーバー証明書
oneWEXの操作を行う際は、ブラウザからAdminConsoleやContentMinerに接続しますが、HTTPSでの接続となります。この際、デフォルトではoneWEXは自己署名証明書(いわゆるオレオレ証明書)をサーバー証明書として使っているらしく、ブラウザでの接続時にNET::ERR_CERT_AUTHORITY_INVALID とか「この接続ではプライバシーが保護されません」といった警告がでます。無視して接続することもできますが、正規の認証局から証明書を取得してそれを使用したい場合、以下の手順で置き換えが可能なようです。
[How to set up SSL certificate files on oneWEX single container?](https://www-01.ibm.com/support/docview.wss?uid=ibm10734241)