コンテナレスの導入
InterSystems IRIS リリース 2023.3 以降、InterSystems Cloud Manager (ICM) は非推奨になっています。今後のバージョンからは削除される予定です。
ICM を使用して、クラウド・インフラストラクチャをプロビジョニングし、そのインフラストラクチャにコンテナ化されていない InterSystems IRIS インスタンスをインストールする場合、または PreExisting クラスタに InterSystems IRIS をインストールする場合、コンテナレス・モードでこれを行うことができます。
基本的に、コンテナレス・モードでは、ICM による InterSystems IRIS のコンテナ化された導入が、従来のキットからの直接のインストールに置き換えられる一方で、ICM のプロビジョニングおよび導入プロセスのその他すべての手順は維持されます。これは、ICM にコマンドを追加し、他のいくつかのコマンドを適応させることで実現できます。コンテナレス・モードでは、プロビジョニングされたノードに Docker がインストールされることはなく、またそういったノードにコンテナを導入するために icm run コマンドを使用することはできません。
ICM では、コンテナレス・モードで InterSystems IRIS の非 root インストールOpens in a new tabを実行できます。詳細は、"コンテナレス・モードでの非 root インストール" を参照してください。
コンテナレス導入プラットフォーム
コンテナレスの導入でサポートされているオペレーティング・システムには、次のようなものがあります。
-
Ubuntu 20.04 以降
-
Red Hat Enterprise Linux 8.3 以降のバージョン 8 リリース、9.0 以降のバージョン 9 リリース
コンテナレス・モードの有効化
コンテナレス・モードを有効にするには、defaults.json ファイルに Containerless フィールドを追加し、値を true に設定します。以下に例を示します。
{
"Containerless": "true",
"Provider": "AWS",
"Label": "Sample",
"Tag": "TEST"
"LicenseDir": "/Samples/license/",
"Credentials": "/Samples/AWS/sample.credentials",
...
}
InterSystems IRIS のインストール
プロビジョニングされたノードに、選択したインストール・キットを使用して InterSystems IRIS をインストールするには、icm install コマンドを使用します。このコマンドは、コンテナ・モードには存在しません。キットは、KitURL フィールドによって指定します。このフィールドにインストール・キットへのパスを指定し、defaults.json か definitions.json のいずれかに追加できます。指定するキットは、以下のすべてを満たしている必要があります。
-
InterSystems IRIS のインストール先のノードからアクセスできる (ICM コンテナ自体からは必ずしもアクセス可能である必要はありません)
-
64 ビットの Linux キットである
-
gzip 圧縮の tar ファイルである
例えば、定義ファイルは以下のようになります。
[
{
"Role": "DM",
"Count": "1",
"DataVolumeSize": "50",
"InstanceType": "m4.xlarge",
"KitURL": "http://kits.acme.com/iris/2022.2.0/unix/IRIS-2022.2.0.792.0-lnxrhx64.tar.gz"
},
{
"Role": "AM",
"Count": "2",
"StartCount": "2",
"LoadBalancer": "true",
"KitURL": "http://kits.acme.com/iris/2022.2.0/unix/IRIS-2022.2.0.792.0-lnxrhx64.tar.gz"
}
]
既定値ファイルは以下のようになります。
{
"Containerless": "true",
"KitURL": "http://kits.acme.com/iris/2022.2.0/unix/IRIS-2022.2.0.792.0-lnxrhx64.tar.gz"
"Provider": "AWS",
"Label": "Sample",
"Tag": "TEST"
"LicenseDir": "/Samples/license/",
"Credentials": "/Samples/AWS/sample.credentials",
...
}
KitURL を、プロビジョニングされたノードにコピーするローカル・ファイルへの参照にすることができます。これは、状況によっては便利な場合があります。例えば、以下の KitURL を既定値ファイルに追加できます。
"KitURL": "file://tmp/IRIS-2022.2.0.792.0-lnxrhx64.tar.gz"
そのうえで、icm install コマンドを実行する前に、プロビジョニングされたノードに、icm scp コマンドを使用してこのキットをコピーします。例えば、以下のようになります。
icm scp -localFile IRIS-2022.2.0.792.0-lnxrhx64.tar.gz -remoteFile /tmp
icm install コマンドの実行時に、ICM によって InterSystems IRIS が、指定されたキットから各該当ノードにインストールされ、以下のような出力となります。
Downloading kit on Acme-DM-TEST-0001...
Downloading kit on Acme-AM-TEST-0002...
Downloading kit on Acme-AM-TEST-0003...
...downloaded kit on Acme-AM-TEST-0002
...downloaded kit on Acme-AM-TEST-0003
...downloaded kit on Acme-DM-TEST-0001
Installing kit on Acme-AM-TEST-0003...
Installing kit on Acme-DM-TEST-0001...
Installing kit on Acme-AM-TEST-0002...
...installed kit on Acme-AM-TEST-0002
...installed kit on Acme-DM-TEST-0001
...installed kit on Acme-AM-TEST-0003
Starting InterSystems IRIS on Acme-DM-TEST-0001...
Starting InterSystems IRIS on Acme-AM-TEST-0002...
Starting InterSystems IRIS on Acme-AM-TEST-0003...
...started InterSystems IRIS on Acme-AM-TEST-0002
...started InterSystems IRIS on Acme-AM-TEST-0003
...started InterSystems IRIS on Acme-DM-TEST-0001
Management Portal available at: http://172.16.110.14:52773/csp/sys/UtilHome.csp
UserCPF フィールドと構成マージ・ファイルを使用して、同じキットから複数のインスタンスを異なる構成設定でインストールすることができます。詳細は、“ICM リファレンス” の章にある "カスタマイズされた InterSystems IRIS 構成を使用した導入" を参照してください。
InterSystems IRIS の再インストール
コンテナレスの導入プロセスの柔軟性と回復力を可能な限り高めるために、icm install コマンドは完全に再入可能であり、同じ導入環境について複数回発行できます。この点で、“ICM の使用” の章にある "サービスの再導入" に記載されている icm run コマンドと似ています。
icm install コマンドを繰り返すと、ICM は、インストールされているインスタンスを停止してアンインストールし、その後、指定されたキットから InterSystems IRIS を再度インストールします。このコマンドを繰り返す理由として以下のいずれかが考えられます。
-
既存のインスタンスを再インストールする。
インストールされている InterSystems IRIS インスタンスを同じキットから新しいものに置き換えるには、最初にコンテナを導入した元の icm run コマンドを繰り返します。LicenseDir フィールドで指定されたディレクトリ内のライセンスを更新した場合など、再インストールを必要とする変更を定義ファイル内で行った場合に、この作業を行うことがあります。
-
"インフラストラクチャの再プロビジョニング" の説明に従ってインフラストラクチャに追加したノードに InterSystems IRIS をインストールする。
インフラストラクチャにノードを追加した後に icm install コマンドを繰り返すと、既存のノード上のインスタンスは前述のように再インストールされ、新しいノードには新しいインスタンスがインストールされます。これにより、必要に応じて、既存のノードを新しい導入トポロジに合わせて再構成することができます。
-
導入エラーを解決する。
ネットワークの遅延や中断など、ICM の制御下にない要因によって 1 つ以上のノードで icm install コマンドが失敗した場合、コマンドを再度発行できます。ほとんどの場合、繰り返し試行することで導入が正常に完了します。どうしてもエラーが解決されない場合は、コマンドを再度発行する前に、手動による操作が必要になることがあります (いずれかの構成ファイル内のエラーが原因である場合など)。
InterSystems IRIS のアンインストール
コンテナ・モードには存在しない icm uninstall コマンドは、コンテナレス・モードでは、導入環境内のすべての InterSystems IRIS インスタンスの停止およびアンインストールに使用できます (オプションを指定しない場合)。通常どおり、-role オプションと -machine オプションを使用すると、特定のロールまたはノードにコマンドを限定できます。以下はその例です。
icm uninstall
これは、導入環境内のすべてのノード上の InterSystems IRIS をアンインストールします。一方、次の例もご覧ください。
icm uninstall -role AM
これは、AM ノード上の InterSystems IRIS のみをアンインストールします。
コンテナレス・モードのその他のコマンド
以下に示したように、いくつかのコンテナ・モード・コマンドは、コンテナレス・モードでも同じように、あるいは似たように動作します。これには、-machine オプションと -role オプションの使用も含まれます。
-
icm ssh、icm scp、icm session、 icm sql
これらのコマンドの動作は、コンテナ・モードとコンテナレス・モードでまったく同じです。
-
以下の例は、コンテナレス・モードでの icm ps からの出力に含まれる列を示しています。
# icm ps -json Machine IP Address Instance Kit Status Health ------- ---------- -------- --- ------ ------ Acme-DM-TEST-0001 54.67.2.117 IRIS 2022.2.0.792.0 running ok Acme-AM-TEST-0002 54.153.96.236 IRIS 2022.2.0.792.0 running ok Acme-AM-TEST-0003 54.103.9.388 IRIS 2022.2.0.792.0 running ok
Instance フィールドには各インスタンスの名前が表示され (インターシステムズ提供のコンテナ内では常に IRIS です)、Kit フィールドにはインストール元のキットが表示されます。Status の値としては、running、down、および sign-on inhibited があります。Health の値としては、ok、warn、および alert があります。
Note:コンテナレス・モードでの導入時に icm install コマンドの前に icm ps コマンドを使用した場合、Status フィールドには値 not installed が表示されます。
-
icm stop コマンドおよび icm start コマンドは、すべての InterSystems IRIS インスタンスまたは指定されたインスタンスで、iris stop コマンドおよび iris start コマンドを実行します ("システム管理ガイド" の “InterSystems IRIS 複数インスタンスの使用法” の章にある "InterSystems IRIS インスタンスの制御Opens in a new tab" を参照)。
-
コンテナレス・モードでは、icm upgrade は以下を実行します。
-
KitURL フィールドで指定された InterSystems IRIS キットをダウンロードします。
-
iris stop を使用して、現在の InterSystems IRIS インスタンスを停止します。
-
現在の InterSystems IRIS インスタンスをアンインストールします。
-
KitURL で指定された InterSystems IRIS キットをインストールします。
-
iris start を使用して、新しくインストールされた InterSystems IRIS インスタンスを起動します。
以下は、コンテナレス・モードでの icm upgrade コマンドからの出力を示しています。
# icm ps Machine IP Address Instance Kit Status Health ------- ---------- -------- --- ------ ------ Acme-DM-TEST-0001 54.67.2.117 IRIS 2022.2.0.792.0 running ok Acme-AM-TEST-0002 54.153.96.236 IRIS 2022.2.0.792.0 running ok Acme-AM-TEST-0003 54.103.9.388 IRIS 2022.2.0.792.0 running ok # icm upgrade Downloading kit on Acme-DM-TEST-0001... Downloading kit on Acme-AM-TEST-0002... Downloading kit on Acme-AM-TEST-0003... ...downloaded kit on Acme-AM-TEST-0002 ...downloaded kit on Acme-AM-TEST-0003 ...downloaded kit on Acme-DM-TEST-0001 Stopping InterSystems IRIS on Acme-DM-TEST-0001... Stopping InterSystems IRIS on Acme-AM-TEST-0003... Stopping InterSystems IRIS on Acme-AM-TEST-0002... ...stopped InterSystems IRIS on Acme-DM-TEST-0001 ...stopped InterSystems IRIS on Acme-AM-TEST-0002 ...stopped InterSystems IRIS on Acme-AM-TEST-0003 Uninstalling InterSystems IRIS on Acme-AM-TEST-0003... Uninstalling InterSystems IRIS on Acme-DM-TEST-0001... Uninstalling InterSystems IRIS on Acme-AM-TEST-0002... ...uninstalled InterSystems IRIS on Acme-DM-TEST-0001 ...uninstalled InterSystems IRIS on Acme-AM-TEST-0002 ...uninstalled InterSystems IRIS on Acme-AM-TEST-0003 Installing kit on Acme-AM-TEST-0002... Installing kit on Acme-DM-TEST-0001... Installing kit on Acme-AM-TEST-0003... ...installed kit on Acme-AM-TEST-0002 ...installed kit on Acme-DM-TEST-0001 ...installed kit on Acme-AM-TEST-0003 Starting InterSystems IRIS on Acme-DM-TEST-0001... Starting InterSystems IRIS on Acme-AM-TEST-0002... Starting InterSystems IRIS on Acme-AM-TEST-0003... ...started InterSystems IRIS on Acme-AM-TEST-0002 ...started InterSystems IRIS on Acme-AM-TEST-0003 ...started InterSystems IRIS on Acme-DM-TEST-0001 # icm ps Machine IP Address Instance Kit Status Health ------- ---------- -------- --- ------ ------ Acme-DM-TEST-0001 54.67.2.117 IRIS 2022.2.1.417.0 running ok Acme-AM-TEST-0002 54.153.96.236 IRIS 2022.2.1.417.0 running ok Acme-AM-TEST-0003 54.103.9.388 IRIS 2022.2.1.417.0 running ok
アップグレード後、既定値ファイルまたは定義ファイルで KitURL の値を更新して、アップグレードを反映させることができます。
-
コンテナレス・モードでの非 root インストール
サイトによっては、セキュリティ・ポリシーによりアプリケーションからシステムへの root アクセスが禁止されている場合があります。非 root の InterSystems IRIS インスタンスは、root アクセスを持たないユーザがインストールします。コンテナレス・モードを使用して非 root インスタンスをインストールする予定の場合は、操作を進める前に "インストール・ガイド" の "非 root ユーザとしてのインストールOpens in a new tab" で、root および非 root でのインストールとインスタンスの違いについて入念に確認してください。
必須の構成フィールド
非 root インストールの場合、defaults.json ファイルに以下のフィールドを含める必要があります (containerless: true に加えて)。
-
nonroot フィールドを true に設定する必要があります。
-
ISCInstalldir フィールドには、インストール・ユーザ (SSHUser フィールドで指定したユーザ) が書き込みアクセス権を持っているファイル・システムの場所 (既定のインストール・ディレクトリ /usr/irissys は該当しない) を指定する必要があります。例えば、SSHUser が irisowner の場合、以下のように指定できます。
"ISCInstallDir": "/home/irisowner/irissys"
プロバイダによっては、SSHUser フィールドに具体的なユーザ名を指定しなければならない場合があります。詳細は、“ICM リファレンス” の章の "セキュリティ関連のパラメータ" を参照してください。
-
インストール・ユーザが /irissys (永続的な %SYS ボリュームOpens in a new tabの既定の場所) への書き込みアクセス権を持っていない場合は、ICM によってマウントされるストレージ・ボリュームのマウント・ポイントを上書きするために使用するフィールドを、そのユーザが書き込みアクセス権を持っている永続ストレージ上のマウント・ポイントに変更する必要があります。例えば、以下のように指定します。
"DataMountPoint": "/home/irisowner/data", "WIJMountPoint": "/home/irisowner/wij", "Journal1MountPoint": "/home/irisowner/journal1", "Journal2MountPoint": "/home/irisowner/journal2"
Important:非 root インストールの場合、ICM は外部ボリュームの割り当て、フォーマット、またはマウントを行いません。ユーザが責任を持って、マウント・ポイントのフィールドを使用して指定したディレクトリがアクセス可能な永続ストレージを表すようにする必要があります。
また、コンテナレス・モードの非 root 導入環境に WS ノードが含まれる場合、definitions.json ファイル内の WS 定義の KitURL フィールドで InterSystems IRIS キットを指定し、LicenseKey フィールドで InterSystems IRIS ライセンスを指定する必要があります。例えば、以下のように指定します。
{
"Role": "WS",
"Count": "1",
"KitURL": "file://tmp/IRIS-2022.2.0.221.0-lnxubuntux64.tar.gz",
"LicenseKey": "heterogenous-sharding-iris.key"
}
非 root ユーザは 1024 未満のポートにバインドできないため、コンテナレス非 root モードでは Web ゲートウェイ・ポートが 80 から 52773 に移動されています。例えば、WS ノード上の Web ゲートウェイの URL は、以下のようになります。
http://133.98.229.35.google.com:52773/csp/bin/Systems/Module.cxw
WebServerPort パラメータは、すべての導入環境の InterSystems IRIS の Web サーバ・ポートを指定すると共に、非 root コンテナレス・モードでの Web ゲートウェイ・ポートも指定します。既定値は 52773 です。
プロビジョニング・フェーズ
ICM では、ICM によってプロビジョニングされるインフラストラクチャ (PreExisting 導入の場合はユーザが指定したインフラストラクチャ) のホストへの root アクセスが必要な必須の構成はすべて、icm provision コマンドを使用してそのインフラストラクチャをプロビジョニングする前に完了していることが前提となっています。プロビジョニング・フェーズ中に、ICM はその要件が満たされているかどうかを確認します。満たされていない場合は、見つかった問題を示すメッセージと、その軽減方法の提案が表示されます。以下の例は、簡略化のために編集されています。
# icm provision
Configuring Acme-DATA-TEST-0001...
provision on Acme-DATA-TEST-0001 failed (attempt 1 of 1)...
Acme-DATA-TEST-0001 - Error: Thread exited with value 1
SSH operation failed
See /Samples/GCP/state/Acme-DATA-TEST/Acme-DATA-TEST-0001/ssh.err
and /Samples/GCP/state/Acme-DATA-TEST/Acme-DATA-TEST-0001/ssh.out
Errors occurred during execution; aborting operation
To reprovision, specify -stateDir state
# cat /Samples/GCP/state/Acme-DATA-TEST/Acme-DATA-TEST-0001/ssh.err
20201203-21:19:16:320888393 Error: 2 nonroot issues found;
please examine configNode.log, address the issues, and re-provision
# cat /Samples/GCP/state/Acme-DATA-TEST/Acme-DATA-TEST-0001/ssh.out
------------------------------------------------------------------------
Potential issue found: Cannot determine if requirement met for
nonroot deployment: Configure iptables
# /sbin/iptables --delete INPUT --jump REJECT --reject-with icmp-host-prohibited
# /sbin/iptables --delete FORWARD --jump REJECT --reject-with icmp-host-prohibited
# /sbin/iptables-save
------------------------------------------------------------------------
Issue found: Requirement not met for nonroot deployment: IP forwarding
# echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conf
# sysctl -w net.ipv4.ip_forward=1
------------------------------------------------------------------------
Potential issue found: Cannot determine if requirement met for
nonroot deployment on ubuntu: Retrieve apt-get updates
# apt-get update
------------------------------------------------------------------------
Issue found: Requirement not met for nonroot deployment on ubuntu:
Install net-tools
# apt-get --allow-unauthenticated -y install net-tools
------------------------------------------------------------------------
Potential issue found: Cannot determine if requirement met for
nonroot deployment on ubuntu: Clean apt-get cache
# apt-get -y clean all
------------------------------------------------------------------------
Potential issue found: Cannot determine if requirement met for
nonroot deployment on GCP: Configure core dump
# systemctl disable apport; systemctl stop apport; sysctl -p;
sysctl -w kernel.core_pattern='%e.%p.%h.%t.core'
# echo "%e.%p.%h.%t.core" > /proc/sys/kernel/core_pattern
このようにすると、関係するシステムでこれらの変更を root として直接実行できます (または、システムの VM テンプレートの更新として実行できます)。
-
コマンドを個別に実行する必要はありません。すべてのコマンドを 1 回の操作でまとめて実行できます。
-
これらのコマンドは、root として実行されるよう構成されています。一部のコマンドは sudo で動作するように形式を変更する必要があります。
-
“考えられる問題” に対して提案されるコマンドの一部は、必須でないために正しく機能しない場合がありますが、これは正常です。
必要な変更を加えたら、コマンド icm provision -force を使用して再プロビジョニングします。これで、この付録で前述したように icm install コマンドを使用して導入を行う準備ができました。