WebSphere ND Edge Component v9 をコマンドラインで入れてみた


#はじめに

さて、唐突ですが、 WebSphere Application Server ND Edge Component の導入です。

Edge Component は  WebSphere Application Server (WAS) の ND版に付属の
ソフトウェアロードバランサーです。
ロードバランサーといえば、 Big-IP が （私の中では）有名ですが
この Edge Component、 WAS ND を買えばそのライセンスに含まれる、ということで
場合によってはお安くご利用いただけます。

なぜ今導入するのか？ と言うと、 一つ目の理由は「たまたま」です。
二つ目は IPv4 向け Load Blancer が 2019年9月30日にサポート終了するためです。

IPv4 向け Load Balancer がサポート終了なら、
今後は IPv6 のみか！ と思うかもしれませんが、
IPv4 and IPv6 Load Balancer というのが継続して存在しますので
IPv4 の方ご心配なく。名前、紛らわしいですね。。。

なお、 IPv4 向けを LLB (Legacy Load Balancer),  IPv4 and IPv6 向けを ULB (User-mode Load Balancer) というようです。

重要なお知らせ - 2019年9月30日をもって、IPv4向けLoad Balancerのサポートが終了します
https://www-01.ibm.com/support/docview.wss?uid=ibm10733183

今回、 この Edge Component の基本的な機能 ( Load Balancer , Dispatcher ) を
**コマンドだけで**入れてしまう、という作業の説明です。

たまたま GUI がつかえない環境だったため、 コマンドで入れる方法を調べたのですが
意外と早くできるので、次にやるときのためにまとめておきます。

#環境
関連する SW のバージョンは以下のとおりです。
- AIX 7.2 TL02 SP02
- WebSphere ND Edge Component v9.0 FP9

#導入の流れ
導入の大まかなステップは以下のとおりです。

1. メディアの準備
2. ファイルシステムの作成
3. IBM Installation Manager (IIM) の導入
4. Edge + Java8 の導入
5. FixPack の適用

FixPack 適用後、 設定等に入るのですが、 今日は 導入・FP適用までで一旦終了です。

#メディアの準備
Edge Component 自体は、IBM の [Passport Advantage (PA)](https://www.ibm.com/software/jp/passportadvantage/pao.html) サイトからダウンロードします。

では、何をダウンロードすればよい？ という話がやや面倒ですね。
いつも、 結局何をダウンロードするんだっけ？ という話になることが多いです。

WAS に関しては、 以下のサイトで 各種コンポーネントの Part Number が記載されていますので
それを参考に PA サイトからダウンロードしてください。

[V9.0: Download WebSphere Application Server Network Deployment Version 9 from Passport Advantage Online](https://www-01.ibm.com/support/docview.wss?uid=swg27048323)

今回は Edge Component の中でも基本的な Load Balancer を入れますので、
以下の２つになります。

- IBM WebSphere Edge Components: Load Balancer for IPv4 and IPv6 (for WebSphere Application Server Network Deployment V9.0.0)  ( Part Number : CND1SML )
- IBM SDK, Java™ Technology Edition, Version 8 for AIX ( Part Number : CND16ML) 

次に、 FixPack のダウンロードです。
FixPack は  IBM の Fix Central からダウンロード可能です。 
ただ、WAS の場合、以下のページにエディションごと、バージョンごとに整理されていますので
そこからたどるのが良いと思います。

[Recommended updates for WebSphere Application Server](https://www-01.ibm.com/support/docview.wss?uid=swg27004980)

今回ダウンロードするのは、FixPack 9 、以下のものになります。
IBM WebSphere Edge Load Balancer for IPv4 and IPv6 : 9.0.0-WS-EDGEULB-FP009.zip
また、 同じ場所から Java8 SDK のFix もダウンロードできますのであわせてダウンロードしておきましょう


ダウンロードしたものを、サーバー上に upload し、 zip を展開しておきます。
（余談ですが、もう 「解凍」 とは言わないみたいですね。。。）

以下の例では、 NFS サーバー上に配置、展開し、導入先サーバーの /mnt にマウントした状態で作業を進めています。

#ファイルシステムの作成

ファイルシステムに関しては、 やや好みの問題、という側面がありますね。
導入できればいいや！ であれば /usr, /opt の容量があれば良いです。
厳密には System Requirements で調べる必要がありますが、 まぁ 2～3GB ぐらい？

今回は、 AIX 上でファイルシステムを作成し、そこに導入しました。
ファイルシステムの作成も、 AIX の smit メニューからやってもよいのですが
コマンドで実行です。

|マウントポイント | LV 名 | サイズ    | PP数 |備考|
|:--------------|:-----------|:---------------|:---------|:-----------|
|/opt/IBM/InstallationManager|IIM_LV|512MB|16|IIM用|
|/usr/IBM/IMShared |IMShared_LV|2GB|64|WAS 共通コンポーネント用|
|/opt/IBM/WebSphere/Edge|Edge_LV|512MB|16|Edge Component 用|

PP数は、 該当ファイルシステムのサイズと、そのファイルシステムが所属する VG の PP size から算出できます。PP size は `lsvg -l VG名` で確認できます。 

ファイルシステムの作成は、 LV 作成 → ファイルシステム作成 → マウント の順で対応します。

```
mklv -y IMShared_LV -t jfs2 rootvg 64
crfs -v jfs2 -d IMShared_LV -m /usr/IBM/IMShared -A yes 
mount /usr/IBM/IMShared
```

マウントポイントに関しては、 製品のデフォルトです。
（なお、 ３番目のファイルシステムは v9 から場所が変わっていますかね。。？）

#IBM Installation Manager (IIM) の導入

IIM について記載を忘れていましたね。
Edge Component だけではなく、 IBM のさまざまなソフトウェアを導入する際に使う
導入・更新の管理ソフトです。

IIM の入手はこちら
[Installation Manager and Packaging Utility download documents](http://www-01.ibm.com/support/docview.wss?uid=swg27025142)

これも、他のメディア同様、展開しておきます。
展開したディレクトリを /mnt/IIM189/IIM189 とします。
そこから、コマンドでインストールします。

```
# cd /mnt/IIM189/IIM189
# ls
Offerings                     groupinstc                    installc.ini                  readme.html                   userinst
con-disk-set-inst.sh          groupinstc.ini                jre_7.0.100030.20181001_1448  repository.config             userinst.ini
configuration                 install                       license                       repository.xml                userinstc
documentation                 install.ini                   native                        silent-install.ini            userinstc.ini
groupinst                     install.xml                   p2                            tools
groupinst.ini                 installc                      plugins                       user-silent-install.ini

# ./installc -acceptLicense -log /mnt/IIM189/iim_inst.log
/opt/IBM/InstallationManager/eclipse ディレクトリーに com.ibm.cic.agent_1.8.9002.20181015_1517 がインストールされました。
```

。。。あっさりですね。

#Edge + Java8 の導入

Edge, Java8 に関しては、 同時に入れる必要があります。（Edge内でJava を使うため）
導入自体は IIM を使って行います。
IIM は 通常は GUI のツールとして使いますが、 今回は GUI がつかえない環境だったため
コマンドライン (CLI) で導入しました。

まず、作成したファイルシステム `/usr/IBM/IMShared` と `/opt/IBM/WebSphere/Edge` 内の
`lost+found` ディレクトリを削除します。
インストール時にご丁寧に中が空か確認するようです。

IIM のコマンドから導入を行うにあたり、 いくつか確認等を行う必要がありますが、
それも IIM のコマンドですべて行います。

■ 導入可能なパッケージの確認

```
# cd /opt/IBM/InstallationManager/eclipse/tools
# ./imcl listAvailablePackages -repositories /mnt/Edge90/edge9000,/mnt/Edge90FP9/EdgeULB90_FP9,/mnt/Java8/java8_8030
com.ibm.websphere.EDGELBIPV4IPV6.v90_9.0.0.20160526_1939
com.ibm.websphere.EDGELBIPV4IPV6.v90_9.0.9.20180906_1032
com.ibm.java.jdk.v8_8.0.3000.20160526_1317
```
`imcl` が IIM のコマンドラインツールです。
`listAvailablePackage` オプションで導入可能なパッケージをリストします。
その際、 `-repositories` オプションで、ダウンロードしたメディア（リポジトリ）のディレクトリを コンマ区切りで指定します。
「メディア（リポジトリ）のディレクトリ」というのは正確には、 展開したディレクトリ内の `repository.xml` があるディレクトリです。
この例では、 以下の３つのリポジトリを指定しています。

|ディレクトリ|メディア|
|:----------|:-------|
|/mnt/Edge90/edge9000|Edge v9 ディレクトリ|
|/mnt/Edge90FP9/EdgeULB90_FP9| Edge v9 FP9 ディレクトリ|
|/mnt/Java8/java8_8030|Java8 ディレクトリ|

以下の例では、 レスポンスファイルを作成して導入していますが、 
imcl で直接インストールも可能です。 その際、Package 名を指定する必要があるため、上記コマンドで確認しておきます。

■レスポンスファイル作成

別のサーバーにも同じ形で導入する場合、レスポンスファイルという導入指示のためのファイルを
作成しておくと便利なケースがあります。 （今回はそうでもないですが）

```
# ./imcl generateResponseFile -repositories /mnt/Edge90/edge9000,/mnt/Edge90FP9/EdgeULB90_FP9,/mnt/Java8/java8_8030 -output /mnt/Edge90/response_files/response.xml

応答ファイル /mnt/Edge90/response_files/response.xml を生成しました
```

`-output` オプションでファイルの出力先を指定します。
内容は以下のような内容です。

```
<agent-input>
  <variables>
    <variable name='sharedLocation' value=''>
      <if name='platform:os' equals='win32' value='${specialFolder:PROGRAM_FILES}\IBM\IMShared'/>
      <if name='platform:os' equals='win32_vista' value='${specialFolder:PROGRAM_FILES}\IBM\IMShared'/>
      <if name='platform:os' equals='linux' value='/opt/IBM/IMShared'/>
      <if name='platform:os' equals='solaris' value='/opt/IBM/IMShared'/>
      <if name='platform:os' equals='aix' value='/usr/IBM/IMShared'/>  <!-- AIX の場合 /usr/IBM/IMShared が指定されています -->
      <if name='platform:os' equals='hpux' value='/opt/IBM/IMShared'/>
    </variable>
    <!-- フィーチャーの対応するセットをインストールするには、features を「required」、「default」、または「all」に設定します。 -->
    <variable name='features' value='default'/>
    <!-- インストール・ロケーション: -->
    <!--   IBM WebSphere Edge Components: Load Balancer for IPV4 and IPV6 -->
    <!--   IBM SDK, Java Technology Edition, Version 8 -->
    <variable name='installLocation' value=''>
      <if name='platform:os' equals='win32' value='${specialFolder:PROGRAM_FILES}\IBM\WebSphere\Edge\ULB'/>
      <if name='platform:os' equals='win32_vista' value='${specialFolder:PROGRAM_FILES}\IBM\WebSphere\Edge\ULB'/>
      <if name='platform:os' equals='linux' value='/opt/IBM/WebSphere/Edge/ULB'/>
      <if name='platform:os' equals='solaris' value='/opt/IBM/WebSphere/Edge/ULB'/>
      <if name='platform:os' equals='aix' value='/opt/IBM/WebSphere/Edge/ULB'/>
      <if name='platform:os' equals='hpux' value='/opt/IBM/WebSphere/Edge/ULB'/>
    </variable>
    <!-- IBM WebSphere Edge Components: Load Balancer for IPV4 and IPV6 のフィーチャー -->
    <variable name='features.com.ibm.websphere.EDGELBIPV4IPV6.v90'>
      <!--
      必須フィーチャー:
        LoadBalancer: Load Balancer
      -->
      <if name='features' equals='required' value='LoadBalancer'/>
      <!--
      デフォルト・フィーチャー:
        Dipatcher: Dispatcher
      -->
      <if name='features' equals='default' value='LoadBalancer,Dipatcher'/>
      <!--
      デフォルト以外のフィーチャー:
        MetricServer: Metric Server
        SiteSelector: Site Selector
      -->
      <if name='features' equals='all' value='LoadBalancer,Dipatcher,MetricServer,SiteSelector'/>
    </variable>
    <!-- IBM SDK, Java Technology Edition, Version 8 のフィーチャー -->
    <variable name='features.com.ibm.java.jdk.v8'>
      <!--
      必須フィーチャー:
        com.ibm.sdk.8: IBM SDK, Java Technology Edition, Version 8
      -->
      <if name='features' equals='required' value='com.ibm.sdk.8'/>
      <!-- デフォルト・フィーチャー: -->
      <if name='features' equals='default' value='com.ibm.sdk.8'/>
      <!-- デフォルト以外のフィーチャー: -->
      <if name='features' equals='all' value='com.ibm.sdk.8'/>
    </variable>
  </variables>
  <server>
    <repository location='file:/mnt/Edge90/edge9000/'/>
    <repository location='file:/mnt/Java8/java8_8030/'/>
  </server>
  <preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='${sharedLocation}'/>
  <profile id='Load Balancer for IPV4 and IPV6' installLocation='${installLocation}'/>
  <install>
    <!-- IBM WebSphere Edge Components: Load Balancer for IPV4 and IPV6 9.0.0.0 -->
    <offering profile='Load Balancer for IPV4 and IPV6' id='com.ibm.websphere.EDGELBIPV4IPV6.v90' version='9.0.0.20160526_1939' features='${features.com.ibm.websphere.EDGELBIPV4IPV6.v90}'/>
    <!-- IBM SDK, Java Technology Edition, Version 8 8.0.3.0 -->
    <offering profile='Load Balancer for IPV4 and IPV6' id='com.ibm.java.jdk.v8' version='8.0.3000.20160526_1317' features='${features.com.ibm.java.jdk.v8}'/>
  </install>
</agent-input>
```

細かく見ると、 AIX の場合は Shared File などは /usr/IBM/IMShared に導入される、とか
デフォルトで導入されるパッケージ名などが記載されていることが分かります。
場合によっては、これを編集する、ということもあるかもしれません。

■ Edge Component の導入

作成したレスポンスファイルを用いて導入です。

```
# ./imcl input /mnt/Edge90/response_files/response.xml -log /tmp/edge_inst.log -acceptLicense

/opt/IBM/WebSphere/Edge/ULB ディレクトリーに com.ibm.websphere.EDGELBIPV4IPV6.v90_9.0.0.20160526_1939 がインストールされました。
/opt/IBM/WebSphere/Edge/ULB ディレクトリーに com.ibm.java.jdk.v8_8.0.3000.20160526_1317 がインストールされました。
```

なお、ここではレスポンスファイルを用いましたが、
レスポンスファイルを作らずに、直接インストールすることも出来ます。
コマンドの書式は以下のとおりです。（詳細は末尾リンク先のマニュアル参照）

```
imcl install packageID[_version][,featureID] 
        -repositories source_repository 
        -acceptLicense
```

■ バージョンの確認
以下のコマンドで、バージョンの確認を行います。

```
# ./imcl listInstalledPackages
com.ibm.cic.agent_1.8.9002.20181015_1517
com.ibm.java.jdk.v8_8.0.3000.20160526_1317
com.ibm.websphere.EDGELBIPV4IPV6.v90_9.0.0.20160526_1939
```

Edge IPv4 and IPv6 の 9.0.0 が導入されていることが （なんとか）分かります。


#FixPack の導入

FixPack に関しても、基本的には導入のときとほぼ同じ感じです。
ただ、レスポンスファイルは使わず、 `imcl updateAll` でアップデートします。

```
# ./imcl updateAll -repositories /mnt/Edge90FP9/EdgeULB90_FP9 -acceptLicense
/opt/IBM/WebSphere/Edge/ULB ディレクトリー内で com.ibm.websphere.EDGELBIPV4IPV6.v90_9.0.9.20180906_1032 に更新されました。
```

同様にバージョンを確認します。

```
# ./imcl listInstalledPackages
com.ibm.cic.agent_1.8.9002.20181015_1517
com.ibm.java.jdk.v8_8.0.3000.20160526_1317
com.ibm.websphere.EDGELBIPV4IPV6.v90_9.0.9.20180906_1032
```

かろうじて v9.0.9 になっているのが分かります。

Java8 についても同様にアップデートしますが、やり方は同じですので割愛します。


以上で、 Edge Component をコマンドで入れる方法のまとめはおしまいです。
どこかの誰かが少しでも助かれば幸いです！

#参考

■Passport Advantage (PA)
https://www.ibm.com/software/jp/passportadvantage/pao.html

■V9.0: Download WebSphere Application Server Network Deployment Version 9 from Passport Advantage Online
https://www-01.ibm.com/support/docview.wss?uid=swg27048323

■Recommended updates for WebSphere Application Server
https://www-01.ibm.com/support/docview.wss?uid=swg27004980

■Installing Edge Components with IBM Installation Manager
https://www.ibm.com/support/knowledgecenter/SSAW57_9.0.0/com.ibm.websphere.edge.doc/concepts/installing.html

■imcl コマンドを使用して応答ファイルを生成
https://www.ibm.com/support/knowledgecenter/ja/SSDV2W_1.8.0/com.ibm.cic.commandline.doc/topics/t_imcl_generate_response_file.html

■imcl コマンドのコマンド行引数
https://www.ibm.com/support/knowledgecenter/ja/SSDV2W_1.8.0/com.ibm.cic.commandline.doc/topics/r_tools_imcl.html

■imcl コマンドの使用によるパッケージのインストール
https://www.ibm.com/support/knowledgecenter/ja/SSDV2W_1.8.0/com.ibm.cic.commandline.doc/topics/t_imcl_install.html

■Installation Managerのimclコマンドを使用してインストール可能なパッケージやiFixを確認する方法
https://www-01.ibm.com/support/docview.wss?uid=swg21684638

■imcl コマンドを使用した、すべてのインストール済みパッケージの更新
https://www.ibm.com/support/knowledgecenter/ja/SSDV2W_1.8.0/com.ibm.cic.commandline.doc/topics/t_imcl_updateall.html


----