はじめに
この記事は、IBM Cloud Classic Infrastructure (IaaS) 上で稼働していたRHEL7の仮想サーバーを、OSのEOL (End of Life) に伴いRHEL9へ手動で移行したプロジェクトの記録です。
PaaSやコンテナ環境が主流となる中、IaaS環境、特にOSのインプレースアップグレードが提供されないクラシック・インフラでのOSバージョンアップは、依然として多くの企業が直面する課題です。
この環境では「新しいサーバーをプロビジョニングし、データ、設定、アプリケーションをすべて手作業で移行する」というアプローチが必須となります。
今回は、一番確実でリスクの少ない、「新サーバー構築(Order)→DNS切り替え(CIS)→旧サーバー削除(Delete)」 という3フェーズ構成での手動移行手順をまとめました。
前提環境
- 移行元: RHEL 7.9 (IBM Cloud Virtual server for Classic)
- 移行先: RHEL 9.x (IBM Cloud Virtual server for Classic)
- DNS: IBM Cloud Internet Services (CIS) を利用
- Webサーバー: Nginx 稼働中
全体フロー
本記事では、移行プロセスを以下の3つのフェーズに分けて実施します。切り戻し(ロールバック)が容易なのが特徴です。
- 【Phase 1】RHEL 9 オーダー(新環境構築)
- 【Phase 2】CIS DNS変更(通信切り替え)
- 【Phase 3】RHEL 7 削除(旧環境撤去)
【Phase 1】RHEL 9 オーダー(新環境構築)
まずは既存のRHEL 7サーバーを稼働させたまま、横に新しいRHEL 9サーバーを立てます。
1. IBM Cloud コンソールでのオーダー
Classic Infrastructureのコンソールから デバイス -> デバイスリスト -> 作成 と進みます。
- DC選択: 既存サーバーと同じロケーションを選択します。
- スペック選定: 既存サーバーと同等(またはそれ以上)のCPU/RAMを選択します。
- OS選択: ここで明確に Red Hat Enterprise Linux 9.x を指定します。
2. 環境セットアップとデータ移行
RHEL 9がプロビジョニングされたら、SSHでログインしてセットアップを行います。
ポイント: RHEL 9ではセキュリティポリシーが厳格化されています。また、Pythonのバージョンやミドルウェアのデフォルトバージョンも大きく異なります。
# 旧サーバー(RHEL7)から新サーバー(RHEL9)へデータをコピーする例
# ※プライベートIP同士で行うと高速
[root@RHEL9 ~]# rsync -avz -e ssh root@<RHEL7_Private_IP>:/var/www/html/ /var/www/html/
3. 動作検証(hosts書き換え)
DNSを切り替える前に、自分のPCの hosts ファイルを書き換えて、新サーバーのIPアドレスでWebサイトが正しく表示されるか、アプリケーションが動作するかを入念に確認します。
ここでの検証不足は、次のPhase 2での障害に直結します。
【Phase 2】CIS DNS変更(通信切り替え)
新サーバーの準備が整ったら、いよいよ通信を切り替えます。ここからはIBM Cloud IaaS(サーバー側)の操作ではなく、ネットワーク(DNS)側の操作になります。
1. 事前準備:TTLの短縮
切り替え作業の数時間〜数日前に、IBM Cloud Internet Services (CIS) のDNS設定画面で、対象ドメインの TTL (Time To Live) を短く設定しておきます。
- 例:
300(5分) など
これにより、DNSキャッシュが早く切れるようになり、切り替え時のタイムラグを最小限に抑えられます。
2. DNSレコードの変更(カットオーバー)
CISのDNS管理画面にて、Aレコードの向き先IPアドレスを変更します。
-
変更前:
RHEL7_Public_IP -
変更後:
RHEL9_Public_IP
変更を保存すると、数分以内に世界中からのアクセスが新サーバー(RHEL 9)へ流れ始めます。
3. ログ確認とロールバック計画
新サーバーのアクセスログ(/var/log/nginx/access.log 等)を tail -f で監視し、トラフィックが来ているか確認します。
万が一トラブルが起きたら?
この構成の最大のメリットはここです。もし新環境で致命的なエラーが見つかった場合、CISでDNSレコードを旧IP(RHEL 7)に戻すだけで、即座に元の環境へロールバックできます。
【Phase 3】RHEL 7 削除(旧環境撤去)
DNS切り替え後、数日〜1週間程度様子を見て、問題がないことが確定したら旧サーバーを削除します。これを忘れると課金が継続してしまうので注意が必要です。
1. 旧サーバーのキャンセル
IBM Cloud Classicコンソールの デバイスリスト から旧サーバー(RHEL 7)を探します。
- 対象サーバーの
アクションメニューを開く。 -
デバイスのキャンセルを選択。
2. 即時か、契約満了日か
キャンセル画面で重要なのが キャンセル日 です。
- 即時キャンセル: 即時削除。すぐにサーバーにアクセスできなくなります。
- 確定日 20xx/xx/xx, 15:00:00 にキャンセル: 契約満了日(月末など)まで残ります。
「もう二重課金は避けたい」という場合は「即時キャンセル」を選びますが、操作した瞬間にデータが消えるため、バックアップ漏れがないか最終確認をしてから「デバイスのキャンセル」を押してください。
まとめ
IBM Cloud Classic IaaSにおけるOSメジャーバージョンアップは、自動化ツールがないからこそ、基本に忠実なこの3ステップが最強のソリューションとなります。
RHEL 7のEOL対応を進めている方の参考になれば幸いです。