はじめに
本記事では、CentOS7のサポート終了に伴う移行先の選択肢の一つとして、AlmaLinux9へのインプレースアップグレードについて検証した結果をご紹介します。検証では、AWS EC2上にCentOS7のAMIを用いて簡易的なWebサーバーを構築し、ElevateプロジェクトのLeappツールを使用してAlmaLinux9へのアップグレードを行いました。
注意:本記事で紹介する手順は、あくまで検証目的のものです。実際の運用環境での移行に際しては、十分な検証とバックアップの取得が不可欠です。移行作業は自己責任で行ってください。
背景
CentOS7は2024年6月にサポートが終了します。これに伴い、多くの組織がCentOS7からの移行を検討しています。移行先の選択肢としては、AlmaLinuxやRocky Linuxなどのオープンソースディストリビューションや、有償のRed Hat Enterprise Linuxなどが挙げられます。
移行方式の比較
OSの移行には、主に2つの方式があります。
-
インプレースアップグレード方式
既存のサーバー上で現在のOSを新しいバージョンに直接アップグレードする方式です。
この方式では、サーバーのハードウェアを変更せずに、OSのみを入れ替えます。- メリット:既存のハードウェアとデータを保持したままアップグレードできるため、システム移行に比べて手間が少なくて済みます。
- デメリット:アップグレードプロセスが複雑で時間がかかる場合があり、互換性の問題によってアップグレードが失敗する可能性があります。
-
新規サーバー構築方式
新しいハードウェアを用意し、そこに新しいOSを新規インストールする方式です。
既存のシステムから必要なデータや設定を新しいサーバーに移行します。- メリット:クリーンな状態でLinuxを構築できるため、アップグレード時の問題を回避できます。また、既存のハードウェアとは異なるスペックのサーバーを選択できるため、パフォーマンスの最適化が可能です。
- デメリット:既存のシステムから必要なデータや設定を移行する手間がかかり、移行作業に時間を要します。
今回の検証では、インプレースアップグレード方式に焦点を当てました。
移行先としては、AlmaLinux、Rocky Linux、Red Hatなどが考えられますが、OS料金が無料かつ移行ツールとそのドキュメントが存在するため、今回はAlmaLinuxへのアップグレード検証を行いました。
AlmaLinuxへ移行する際の注意点
AWS では、Business サポートプラン以上の顧客を対象として、サードパーティソフトウェアのサポートを提供しています。
ただし、現時点ではAlmaLinuxはAWSのソフトウェアサポート対象外です。
そのため、移行後のトラブルシューティングやパッチ適用などの運用業務は、自社で対応する必要があります。
参考:AWSがサポートしているサードパーティソフトウェア一覧
検証環境の準備
AWS上に検証環境を構築しました。以下の手順で、EC2インスタンスを起動しWebサーバーを構築しました:
- 任意のVPC、パブリックサブネットを選択
- AMI:CentOS 7(x86_64)- with Updates HVM
- インスタンスタイプ:t2.medium(※小さいインスタンスタイプでは、OSアップグレード再起動に長時間かかったり失敗する可能性があります)
- パブリックIP:自動割り当て
- セキュリティグループ:SSH、HTTPを許可
EC2インスタンスにSSH接続し、以下のコマンドを実行して簡易的なWebサーバーを構築しました。
注意:SSH接続時、ユーザー名を「centos」としないと接続できません。
# システムをアップデートし再起動
sudo yum update -y
sudo reboot
# 再度SSH接続しミドルウェアをインストール
sudo yum install -y httpd mariadb-server php php-mysql php-fpm
# サービスの起動と自動起動の設定
sudo systemctl start httpd
sudo systemctl start mariadb
sudo systemctl enable httpd
sudo systemctl enable mariadb
# MySQLの初期設定
sudo mysql_secure_installation
# info.phpとtest.phpの作成
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
sudo vi /var/www/html/test.php
test.phpの内容:
<?php
$conn = new mysqli('localhost', 'root', 'rootパスワードを入力する');
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
環境構築が完了しているかを確認するため、以下の項目を確認してください:
-
http://EC2のパブリックIP/info.php を開き、以下の画面が表示されるとPHPが動作しています。
-
http://EC2のパブリックIP/test.php を開き、以下の画面が表示されるとmariadbが動作しています。
CentOS7からAlmaLinux9へのインプレースアップグレード手順
移行方法概要
ELevate ProjectのLeapツールを使ってCentOS7からAlmalinux9へとインプレースアップグレードを行います。
こちらは、CentOSからAlmaLinuxへのインプレースアップグレードを支援するためのツールセットです。
本ツールを使ったAlmaLinux9へのインプレースアップグレードは、下記3ステップで行います:
- CentOS7からAlmaLinux8にアップグレード
- AlmaLinux9にアップグレードするための準備
- AlmaLinux8からAlmaLinux9にアップグレード
もし、下記手順で上手くいかないようであれば、AlmaLinux Wikiを参照してみてください。
移行手順
STEP1. CentOS7からAlmaLinux8へのアップグレード
- システムを最新の状態に更新し再起動します。
(上記の「検証環境の準備」ですでに実施している場合は、この手順は飛ばしてください。)
sudo yum update -y
sudo reboot
- AlmaLinuxのElevateリポジトリをインストールします。
このリポジトリには、CentOSからAlmaLinuxへのアップグレードに必要なパッケージが含まれています。
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
- アップグレードに必要な
leapp-upgrade
とleapp-data-almalinux
パッケージをインストールします。
これらのパッケージは、アップグレードプロセスを管理し、必要なデータを提供します。
sudo yum install -y leapp-upgrade leapp-data-almalinux
leapp
ツールを使って、アップグレード前の事前確認を行います。
現在のシステムがアップグレードに適しているかどうかがチェックされ、問題がある場合は報告されます。
sudo leapp preupgrade
- 「UPGRADE INHIBITED」と赤文字で表示された場合は、以下の3つのコマンドを実行します。
これらのコマンドは、アップグレードを妨げている問題を解決するために必要です。
sudo rmmod pata_acpi
echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
-
手順5の3つのコマンドを実行後、再度
leapp preupgrade
を実行します。
エラーが解消され、「REPORT」と表示されるはずです。
-
実際のアップグレードを開始します。
このコマンドは、CentOS7からAlmaLinux8へのアップグレードプロセスを開始します。
sudo leapp upgrade
- アップグレードが完了したら、システムを再起動します。
sudo reboot
注意:再起動してSSH接続できる状態になるまでには15分ほどかかります。
途中、EC2のステータスチェックが「1/2チェックに合格しました」になりますが、しばらく待つと「2/2チェックに合格しました」となり、SSH接続できる状態になります。
- OSがAlmaLinux8になっていることを確認します。
cat /etc/redhat-release
10. AlmaLinux8でもPHP, MariaDBが作動していることを確認します。
-
http://EC2のパブリックIP/info.php を開き、以下の画面が表示されるとPHPが動作しています。
-
http://EC2のパブリックIP/test.php を開き、以下の画面が表示されるとmariadbが動作しています。
STEP2. AlmaLinux9にアップグレードするための準備
/etc/yum.conf
のexclude
行をコメントアウトします。
sudo vi /etc/yum.conf
変更後の内容:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
#exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp
- CentOS7関連のパッケージを削除します。
sudo yum remove $(rpm -qa | grep el7)
- 一時ディレクトリを削除します。
sudo rm -fr /root/tmp_leapp_py3
- dnfのキャッシュをクリーンアップします。
sudo dnf clean all
STEP3. AlmaLinux8からAlmaLinux9へのアップグレード
- AlmaLinux9のElevateリポジトリをインストールします。
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
- アップグレードに必要なパッケージをインストールします。
sudo yum install -y leapp-upgrade leapp-data-almalinux
- アップグレードの事前チェックを行います。
sudo leapp preupgrade
- アップグレードを開始します。
sudo leapp upgrade
注意:upgradeに失敗した場合は、make-devel
パッケージが競合している可能性があるため削除します。
sudo yum remove make-devel
- アップグレードが完了したら、システムを再起動します。
sudo reboot
- OSがAlmaLinux9になっていることを確認します。
cat /etc/redhat-release
7. AlmaLinux9でもPHP, MariaDBが作動していることを確認します。
-
http://EC2のパブリックIP/info.php を開き、以下の画面が表示されるとPHPが動作しています。
-
http://EC2のパブリックIP/test.php を開き、以下の画面が表示されるとmariadbが動作しています。
以上の手順で、CentOS7からAlmaLinux9へのインプレースアップグレードを行うことができました。アップグレードプロセスには時間がかかる場合があるため、十分な時間を確保してください。また、アップグレード前にシステムのバックアップを取ることを強くお勧めします。
まとめ
今回の検証により、CentOS7からAlmaLinux9へのインプレースアップグレードが実現可能であることが確認できました。移行にあたっては、事前の十分な検証とバックアップの取得が重要です。移行先の選択については、組織のニーズや要件に応じて慎重に検討する必要があります。
CentOS7のサポート終了まで残りわずかとなりましたが、適切な移行計画と実行により、システムの安定性とセキュリティを維持することができるでしょう。今回紹介したインプレースアップグレード方式が皆様の移行検討の一助となれば幸いです。
また、移行後のシステム運用においては、定期的なアップデートとセキュリティパッチの適用などが重要です。AlmaLinuxコミュニティからの各種サポートを活用しながら、安定的なシステム運用を目指しましょう。
参考リンク
- AlmaLinux Wiki
- CentOS 7 から AlmaLinux 8 へマイグレーションするには:インプレースでのメジャーバージョン移行方法
- サポート終了迫る!CentOS7 を AlmaLinux8 へ移行してみた