ちょっと話題の記事

Amazon Linux から Amazon Linux 2 へのアップグレードを計画しよう

Amazon Linux のサポート期限まで1年を切りました。 Amazon Linux 2 へのアップグレードを早めに計画、検討するために役立つ情報をお届けします。
2019.07.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。

Amazon Linux のサポート期限まで1年を切りました。
Amazon Linux 2 へのアップグレードを早めに計画、検討するために
役立つ情報をお届けします。

Amazon Linux サポート

2020年1月29日更新

Update on Amazon Linux AMI end-of-life より抜粋

End-of-life Extension
The end-of-life for Amazon Linux AMI is now extended to December 31, 2020: until then,
we will continue to provide security updates and refreshed versions of packages as needed.

Maintenance Support
Beyond December 31, 2020, the Amazon Linux AMI will enter a new maintenance support period that extends to June 30, 2023.

当初2020年6月30日までだった Amazon Linux の EOL は2020年12月31日まで拡張されました。
また、メンテナンスサポート期間が2023年6月30日に設定されます。

今後登場するであろう新しい EC2 インスタンスファミリーや
AWS サービスへの追従を計画されている方は Amazon Linux 2 へのアップデートをお勧めします。

計画

対象サーバーの洗い出し

ご自身の管理しているシステムのうち Amazon Linux であるサーバーを一覧にします。

収集する項目例:

  • インスタンスID
  • ホスト名
  • IP アドレス (パブリック/プライベート)
  • アベイラビリティゾーン
  • VPC
  • サブネット
  • EC2 インスタンスタイプ
  • アタッチされている EBS ボリューム
  • アタッチされているセキュリティグループ
  • キーペア
  • テナンシー
  • タグ
  • ソフトウェアインベントリ
  • その他システム固有の設定項目

Systems Manager でのソフトウェアインベントリ収集方法は こちら を参照ください。

スケジュール

マスタースケジュールを作成します。
計画段階で細かいスケジュールが作成できない場合でも
ゴールは定めておきます。 (例えば、GW やどこかの三連休など)

予算

サーバー規模とスケジュールが明らかになってきたら
概算費用を算出して予算取りを行います。

変更点の確認

OS

systemd

init システムが SysVinit から systemd へ変わっています。
例えば、/etc/rc.d/init.d にカスタム起動ファイルを配置したり、chkconfig を使ってシステム運用をしている場合は、手順を変更する必要があります。

Extras Library

Amazon Linux 2 に関するよくある質問 より抜粋。

Extras は、安定したオペレーティングシステムで新しいバージョンのアプリケーションソフトウェアを利用可能にする Amazon Linux 2 のメカニズムで、2023 年 6 月 30 日までサポートされます。Extras は、OS の安定性を確保しつつ、最新のソフトウェアを利用できるようにするうえで役立ちます。例えば、5 年間サポートされる安定したオペレーティングシステムに MariaDB の新しいバージョンをインストールすることができます。Extras の例には、Ansible 2.4.2、memcached 1.5、nginx 1.12、Postgresql 9.6、MariaDB 10.2、Go 1.9、Redis 4.0、R 3.4、Rust 1.22.1 などがあります。

一部のソフトウェアは Extras Library を使ってインストールすることが可能です。
UserData などでソフトウェアの無人インストール運用をしている場合は手順の変更が発生する可能性があります。

ファイルシステム

ファイルシステムが ext4 から xfs に変更されています。
ファイルシステム管理コマンドが変わっています。
ファイルシステムを操作するような運用をしている場合は手順の変更が必要です。

他にも

ホスト名やタイムゾーンを変更する方法が変わっています。
書ききれない細かい変更点が多くあると思います。

本番移行前には必ずテスト機で十分なアップグレードテストを行い
運用観点で動作検証を行うよう計画をお願いします。

アプリケーション/ミドルウェア

yum でインストール可能はソフトウェアのバージョンが異なっていたり
そもそもインストール出来なくなっているものもあります。
例えば、MySQL は yum リポジトリを追加してインストールすることになっています。
お使いのアプリケーション/ミドルウェアの動作環境、インストール方法を事前にご確認ください。

こちらもテスト機で十分にテスト実施してから本番アップグレードを計画します。

JDK

Amazon Linux 2 アップグレードとは直接関係はありませんが
Java アプリケーションをお使い場合はこの機会に
Amazon Corretto への切り替えを検討してみてはいかがでしょうか。

Corretto は Amazon の長期サポートを含んだ OpenJDK のビルドです。
Corretto 8 は最短でも2023年6月までの長期的なサポートが無償で提供されます。

構成管理ツール

Ansible 等の構成管理ツールをお使い場合は
Playbook の変更が必要な可能性があります。
ご留意ください。

大事なことなので繰り返し書きますが、十分なテストを実施ください。

アップグレード方法

インプレースアップグレードはサポートされていません。
Amazon Linux 2 に関するよくある質問 に記載があります。

ですので、Amazon Linux 2 へのアップグレードはマイグレーション方式になります。

  • 新しい EC2 インスタンスを Amazon Linux 2 で起動する
  • アプリケーションをインストールする
  • データを移行する

人手がかかります。その前提で計画を立てるようにします。

インスタンス世代

旧世代のインスタンス(m3, r4 など)をお使いの場合は、新世代(m5 など)のインスタンス利用をご検討ください。
新世代はパフォーマンス面、コスト面で優れています。

インスタンスサイズ

現行サーバーで CPU 使用率、メモリ使用率、ディスク空き容量などのメトリクスを確認します。
リソースに余裕があるようであれば、アップグレード後のインスタンスサイズを一段下ることを検討します。
コスト削減につながります。

リザーブドインスタンスの再購入

インスタンスタイプ(世代やサイズ) を変更する前に
既存 EC2 インスタンスでリザーブドインスタンスの購入有無を確認します。

既存でリザーブドインスタンスをスタンダードで購入されている場合、
インスタンスタイプの変更に伴うリザーブドインスタンスの交換は出来ませんのでご注意ください。

また、新しいリザーブドインスタンスを購入するタイミングを検討ください。
基本的にはインスタンスを切り替える日になるかと思います。
購入に社内稟議が必要な場合は余裕を持って計画ください。

Savings Plans

2020年1月10日 追記

AWS から新しい割引プランである Savings Plans が 2019年11月12日にリリースされています。
2020年1月10日時点で、EC2 で最大 72%、Fargate で最大 52% の利用料金節約を可能にする料金モデルです。
リザーブドインスタンスよりインスタンスタイプやインスタンスファミリーの変更に柔軟な料金モデルです。
ぜひこの機会に Savings Plans をご検討ください。

上限緩和申請

インスタンスタイプ(世代やサイズ) を変更した場合には
上限緩和が必要な場合があります。
マネジメントコンソールの EC2 から現在の制限を確認して必要に応じて新しいインスタンスタイプの緩和申請を行います。

Amazon Linux 2 プレアップグレードアシスタント

パッケージ、ライブラリ、サービス、コマンドラインオプション、設定ファイルの非互換性をチェックしてくれるツールが公開されています。
Amazon Linux から Amazon Linux 2 へと移行する際の影響を確認することが可能です。
移行前に一度実行してみてください。
詳しくは こちら を参照ください。

独り言

計画、検討をしましょうという内容で書きましたが
成功のために大切なのは 検証してみること です。

影響範囲を机上で考えるのは大事ですがそこそこにしておいて
Amazon Linux 2 をサクッと起動してサクッとアプリケーションインストールして
サクッとデータ移行してサクッとテストを実施してしまいましょう。

参考

Amazon Linux AMI よくある質問
Amazon Linux 2 に関するよくある質問
長期サポート (LTS) を付随した Amazon Linux 2 が一般公開
Amazon Linux 2 プレアップグレードアシスタントの発表
Amazon Corretto
[速報]5年長期サポートのAmazon Linux 2が一般公開されました

以上、吉井 亮 がお届けしました。