Kompira Enterprise 1.6.11 と Python 3.X
# 1. はじめに
Kompira Enterprise 1.6.11 以降では Kompira 環境が Python 3.9 に対応しました。
このメモでは Kompira 環境における Python のバージョンについてまとめます。

## 1.1. 対応 Python バージョン
KE 1.6.11 では以下の Python バージョンに対応します。

- Python 3.9.x
- Python 3.8.x
- Python 3.6.x （一部のOSでのみ利用できます）

## 1.2. Kompira パッケージ
KE 1.6.11 以降の Kompira パッケージには Python 3.6 用、3.8 用、3.9 用のモジュールを含むようになっており、1つのパッケージでいずれの Python バージョンでのインストールおよびアップデートができるようになっています。

なおその影響で、KE 1.6.11 以降のパッケージは v1.6.8 までと比べると約3倍程度サイズが大きくなっています。これはオフラインインストール用の kompira-extra パッケージを作成した場合も同様であり、v1.6.11 以降用に kompira-extra パッケージを作成すると、v1.6.10 までに比べるとサイズが大きくなります。

# 2. Kompira と Python のバージョン
## 2.1. KE1.6.11 以降の新規インストール
### 2.1.1. 標準の新規インストール (Python 3.9)
KE 1.6.11 以降を新規インストールした場合は、Python 3.9 を Kompira の環境として利用するように構成します。このとき、インストールする OS によって、Python のマイクロバージョン（3.9.x の x の部分）は異なります。

KE 1.6.11 以降では、新規に Kompira をインストールする場合は、標準手順で新規インストールを行ない Python 3.9 で Kompira 環境を構成することを推奨します。

**注意事項：既存のライブラリオブジェクトを流用する場合は、Python のバージョン変更に伴って動作が変わる可能性がありますので、十分に動作確認を行なうようにしてください。**

### 2.1.2. Python 3.8 を利用した新規インストール
なんらかの理由で、KE 1.6.11 以降を Python 3.8 を利用して新規インストールしたい場合は以下の手順を参考にしてください。

**注意事項：ただし、KE 1.6.11 で新規サポート対象になった RHEL 9系 および AmazonLinux 2023 環境については Python 3.8 に対応していないため、この「Python 3.8 を利用した新規インストール」手順は利用できません。**

#### 2.1.2.1. オンラインインストールの場合
(1) Kompira インストールパッケージを展開したディレクトリに移動して、Python 3.8 をインストールする。
```
# ./scripts/python_utils.sh install 3.8
    :
```

(2) Python 3.8 を利用して Kompira をインストールする
```
# PYTHON=$(./scripts/python_utils.sh which 3.8) ./install.sh --skip-python3-install
    :
[2025-04-15 21:37:12] VERBOSE: run: systemctl restart kompirad
[2025-04-15 21:37:38] ****: ----------------------------------------------------------------
[2025-04-15 21:37:38] ****: Test access to kompira.
[2025-04-15 21:37:38] ****: 
[2025-04-15 21:37:39] INFO: Access succeeded:   <div class="brand-version">1.6.11a1</div>
[2025-04-15 21:37:39] ****: 
[2025-04-15 21:37:39] ****: Finish: Install the Kompira (status=0)
[2025-04-15 21:37:39] ****: ****************************************************************
```

(3) Kompira 環境の Python のバージョンを確認する
```
# /opt/kompira/bin/python -V
Python 3.8.X
```

#### 2.1.2.2. オフラインインストールの場合
(1) Kompira インストールパッケージを展開したディレクトリに移動して、Python 3.8 をインストールする。（kompira-extra パッケージは事前に展開されているものとします）
```
# ./scripts/python_utils.sh --offline install 3.8
    :
```

(2) Python 3.8 を利用して Kompira をインストールする
```
# PYTHON=$(./scripts/python_utils.sh which 3.8) ./install.sh --skip-python3-install --offline
    :
[2025-04-18 09:37:05] ****: Finish: Install the Kompira (offline-mode) (status=0)
[2025-04-18 09:37:05] ****: ****************************************************************
```

(3) Kompira 環境の Python のバージョンを確認する
```
# /opt/kompira/bin/python -V
Python 3.8.X
```

## 2.2. KE1.6.10 以前からのアップデート
### 2.2.1. 標準のアップデート (Python 3.6 or Python 3.8)
既存環境をアップデートする場合は Python のバージョンの変更はされず保持します。
既存の /opt/kompira/bin 配下にインストール済みの python のバージョンが保持されます。

### 2.2.2. Python 3.9 を利用したアップデート
Python 3.6 や 3.8 で構成された既存の Kompira をデータベースなど他の環境はそのままに、Python 3.9 を利用して新たに Kompira 環境を構成しなおしたい、という場合は以下の手順を参考にしてください。

**注意事項：ただし、RHEL 7.X および AmazonLinux2 環境については Python 3.9 に対応していないため、この「Python 3.9 を利用したアップデート」手順は利用できません。**

Kompira のインストーラはサーバ上にディレクトリ `/opt/kompira` が存在しない場合は、Kompira 環境を新たに作成します。v1.6.11 以降ではこのときに Python 3.9 を利用して Kompira 環境を作成するため、この動作を利用します。

基本的な方針しては、既存の /opt/kompira を名前変更（または削除）してから install.sh を実行することで、Python 3.9 を利用した Kompira 環境が新たに作成させる、というものになります。

**注意事項：ライブラリオブジェクトを利用している場合、Python のバージョン変更に伴って動作が変わる可能性がありますので、十分に動作確認を行なうようにしてください。**

**注意事項：/opt/kompira/ 配下の変更点は引き継がれないため、以下のような場合は追加の対応が必要になります。**

- /opt/kompira/kompira.conf や /opt/kompira/kompira_audit.conf などの設定ファイルを編集していた場合
    - 改めて設定を編集しなおしてください
- /opt/kompira/bin/pip を用いて追加で Python パッケージをインストールしていた場合
    - 改めて Python パッケージをインストールしてください
- /opt/kompira/ssl 配下の SSL 証明書を外部の kompira_jobmngrd や kompira_sendevt に配置していた場合
    - 改めて SSL 証明書を配置しなおしてください

#### 2.2.2.1 シングル構成のアップデート
* 可能であれば作業前に対象サーバのスナップショットを取得するなど、元に戻せるようにしておくことを推奨します。

(1) 既存の /opt/kompira を名前変更（または削除）する
```
# mv /opt/kompira /opt/kompira.old
```

(2) 通常の手順で Kompira をインストールする（Python 3.9 が利用される）
```
# ./install.sh
    :
[2025-04-18 09:42:16] ****: ----------------------------------------------------------------
[2025-04-18 09:42:16] ****: Install Python 3.X package
[2025-04-18 09:42:16] ****:
[2025-04-18 09:42:16] INFO: Available Python versions: 3.9 3.8
[2025-04-18 09:42:16] INFO: Recommended Python: 3.9
[2025-04-18 09:42:16] VERBOSE: run: /root/kompira-1.6.11a2+19cf4c60-bin/scripts/python_utils.sh install 3.9 --without-debuginfo
    :
[2025-04-18 09:45:13] ****: Finish: Install the Kompira (status=0)
[2025-04-18 09:45:13] ****: ****************************************************************
```

(3) Kompira 環境の Python のバージョンが 3.9 になっていることを確認する
```
# /opt/kompira/bin/python -V
Python 3.9.X
```

データベースなどは保持したまま Kompira のアップデートがなされているはずですので、ログインして既存のデータが存在することや、ジョブフローなどが問題なく動作することを確認してください。

#### 2.2.2.2. 冗長構成のアップデート
* 事前に両系が正常に動作していることを確認してから作業するようにしてください。
* 可能であれば作業前に両サーバでスナップショットを取得するなど、元に戻せるようにしておくことを推奨します。

(1) SBY系のクラスタを停止させる
```
# pcs cluster stop
```

(2) ACT系のクラスタを停止させる
```
# pcs cluster stop --force
```

(3) ACT 系の既存の /opt/kompira を名前変更（または削除）する
```
# mv /opt/kompira /opt/kompira.old
```

(4) ACT 系を通常の手順で Kompira をインストールする（Python 3.9 が利用される）
```
# ./install.sh
    :
[2025-04-18 09:47:41] ****: ----------------------------------------------------------------
[2025-04-18 09:47:41] ****: Check cluster status.
[2025-04-18 09:47:41] ****: 
[2025-04-18 09:47:41] INFO: Pacemaker is stop.
[2025-04-18 09:47:42] ****: ----------------------------------------------------------------
[2025-04-18 09:47:42] ****: Install Python 3.X package
[2025-04-18 09:47:42] ****: 
[2025-04-18 09:47:42] INFO: Available Python versions: 3.9 3.8
[2025-04-18 09:47:42] INFO: Recommended Python: 3.9
[2025-04-18 09:47:42] VERBOSE: run: /root/kompira-1.6.11a2+19cf4c60-bin/scripts/python_utils.sh install 3.9 --without-debuginfo
    :
[2025-04-18 09:50:23] INFO: Waiting Current DC...................
[2025-04-18 09:50:45] WARN: PostgreSQL is stop (rc=2)
[2025-04-18 09:50:45] INFO: Pacemaker is running (SLAVE)
[2025-04-18 09:50:45] INFO: Waiting for the resources to stabilize.
[2025-04-18 09:50:46] INFO: nodes[2]: ha-kompira1 ha-kompira2 (local=ha-kompira1)
---------------------------------+------------------------------------------------------------+-------------------------------------------
    postgres[0],     postgres[1] |                  rabbitmq[0],                  rabbitmq[1] | memcached,  kompirad,  jobmngrd,     httpd
---------------------------------+------------------------------------------------------------+-------------------------------------------
   Master(1001),         OFFLINE |                   Starting(),                      OFFLINE |   Stopped,   Stopped,   Stopped,   Stopped
    :
   Master(1001),         OFFLINE | Starting(rabbit@ha-kompira1),                      OFFLINE |   Stopped,   Stopped,   Stopped,   Stopped
   Master(1001),         OFFLINE |  Started(rabbit@ha-kompira1),                      OFFLINE |  Starting,   Stopped,   Stopped,   Stopped
    :
   Master(1001),         OFFLINE |  Started(rabbit@ha-kompira1),                      OFFLINE |   Started,  Starting,   Stopped,   Stopped
   Master(1001),         OFFLINE |  Started(rabbit@ha-kompira1),                      OFFLINE |   Started,   Started,  Starting,   Stopped
   Master(1001),         OFFLINE |  Started(rabbit@ha-kompira1),                      OFFLINE |   Started,   Started,  Starting,   Stopped
   Master(1001),         OFFLINE |  Started(rabbit@ha-kompira1),                      OFFLINE |   Started,   Started,   Started,  Starting
   Master(1001),         OFFLINE |  Started(rabbit@ha-kompira1),                      OFFLINE |   Started,   Started,   Started,   Started
---------------------------------+------------------------------------------------------------+-------------------------------------------
[2025-04-18 09:51:20] ****: 
[2025-04-18 09:51:20] ****: Finish: Install the Kompira (status=0)
[2025-04-18 09:51:20] ****: ****************************************************************
```

終盤に自動的にクラスタが ACT 系で起動しているはずなので、確認してください。

(5) ACT 系の Kompira 環境の Python のバージョンが 3.9 になっていることを確認する
```
# /opt/kompira/bin/python -V
Python 3.9.X
```

(6) SBY 系の既存の /opt/kompira を名前変更（または削除）する
```
# mv /opt/kompira /opt/kompira.old
```

(7) SBY 系を通常の手順で Kompira をインストールする（Python 3.9 が利用される）
```
# ./install.sh
    :
[2025-04-18 09:54:15] ****: ----------------------------------------------------------------
[2025-04-18 09:54:15] ****: Check cluster status.
[2025-04-18 09:54:15] ****: 
[2025-04-18 09:54:15] INFO: Pacemaker is stop.
[2025-04-18 09:54:16] ****: ----------------------------------------------------------------
[2025-04-18 09:54:16] ****: Install Python 3.X package
[2025-04-18 09:54:16] ****: 
[2025-04-18 09:54:16] INFO: Available Python versions: 3.9 3.8
[2025-04-18 09:54:16] INFO: Recommended Python: 3.9
[2025-04-18 09:54:16] VERBOSE: run: /root/kompira-1.6.11a2+19cf4c60-bin/scripts/python_utils.sh install 3.9 --without-debuginfo
    :
[2025-04-18 09:56:53] INFO: Waiting Current DC...................
[2025-04-18 09:57:16] WARN: PostgreSQL is stop (rc=2)
[2025-04-18 09:57:16] INFO: Pacemaker is running (SLAVE)
[2025-04-18 09:57:16] INFO: Waiting for the resources to stabilize.
[2025-04-18 09:57:17] INFO: nodes[2]: ha-kompira1 ha-kompira2 (local=ha-kompira2)
---------------------------------+------------------------------------------------------------+-------------------------------------------
    postgres[0],     postgres[1] |                  rabbitmq[0],                  rabbitmq[1] | memcached,  kompirad,  jobmngrd,     httpd
---------------------------------+------------------------------------------------------------+-------------------------------------------
   Master(1001),  Starting(1000) |  Started(rabbit@ha-kompira1),                           () |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                   Starting() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),                    Started() |   Started,   Started,   Started,   Started
   Master(1001),     Slave(1000) |  Started(rabbit@ha-kompira1),  Started(rabbit@ha-kompira2) |   Started,   Started,   Started,   Started
---------------------------------+------------------------------------------------------------+-------------------------------------------
[2025-04-18 09:57:28] ****: 
[2025-04-18 09:57:28] ****: Finish: Install the Kompira (status=0)
[2025-04-18 09:57:28] ****: ****************************************************************
```

終盤に自動的にクラスタが SBY 系で起動しているはずなので、確認してください。

(8) SBY 系の Kompira 環境の Python のバージョンが 3.9 になっていることを確認する
```
# /opt/kompira/bin/python -V
Python 3.9.X
```

データベースなどは保持したまま Kompira のアップデートがなされているはずですので、ログインして既存のデータが存在することや、ジョブフローなどが問題なく動作することを確認してください。
