更新を安全にデプロイするためのベストプラクティス - Amazon Linux 2023

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

更新を安全にデプロイするためのベストプラクティス

Amazon Linux 2023 (AL2023) には、オペレーティングシステムに更新を安全にデプロイし、更新間で何が変更されたかを把握し、必要に応じて古いバージョンに簡単に戻すのに役立つように設計されたいくつかの機能があります。このセクションでは、Amazon Linux の 10 年以上の内部および外部使用 AWS から学んだ教訓について説明します。

警告

を実行するdnf --releasever=latest updateことはベストプラクティスではなく、OS 更新が本番環境で最初にテストされる可能性が高いです。

を使用する代わりにlatest、特定の AL2023 リリースバージョンを使用します。これにより、以前にテストしたのと同じ変更を本稼働インスタンスにデプロイできます。たとえば、 dnf --releasever=2023.8.20250818 updateは常に 2023.8.20250818 リリースに更新されます。

詳細については、AL2023 ユーザーガイドのAL2023 の更新」セクションを参照してください。

OS 更新のデプロイの安全性を計画しない場合、アプリケーション/サービスと OS 更新の間の予期しない負の相互作用の影響は、完全に停止するまで大幅に大きくなる可能性があります。ソフトウェアの問題と同様に、問題が早期に検出されるほど、エンドユーザーへの影響は少なくなります。

基本的には当てはまらない 2 つのことを信じる罠に陥らないことが重要です。

  1. OS ベンダーが OS の更新を間違えることはありません。

  2. 依存する OS の特定の動作またはインターフェイスは、OS ベンダーが依存すると見なす動作とインターフェイスと一致します。

    つまり、OS ベンダーとお客様は、更新に問題があることに同意します。

良い意図に頼らず、デプロイの安全性に OS の更新が含まれるようにシステムを配置します。

本番環境にデプロイして新しい OS 更新をテストすることはお勧めしません。OS をデプロイの別の部分と見なし、本番環境への他の変更に適していると考えるのと同じデプロイ安全メカニズムを適用することを検討することをお勧めします。

本番環境システムにデプロイする前に、すべての OS 更新をテストすることをお勧めします。デプロイする場合は、適切なモニタリングと組み合わせたステージングされたロールアウトが推奨されます。段階的なロールアウトにより、問題が発生した場合でも、即時ではないにしても影響がフリートのサブセットに制限され、さらなる調査と緩和が起こり得る間、更新のさらなるデプロイを停止できます。

OS の更新による悪影響の軽減は、多くの場合、最優先事項であり、その後、問題が解決されます。OS 更新の導入が悪影響と相関する場合、OS の以前の既知の正常なバージョンに戻す機能は強力なツールです。

Amazon Linux 2023 ではバージョニングされたリポジトリによる確定的なアップグレード、OS (または個々のパッケージ) のバージョンへの変更を再現できる強力な新機能である が導入されています。したがって、ある OS バージョンから次の OS バージョンに移行するときに問題が発生した場合、問題を解決する方法を試しながら、既知の OS バージョンにとどまるために使用できる簡単なメカニズムがあります。

AL2023 では、新しいパッケージ更新をリリースするたびに、ロックする新しいバージョンと、そのバージョンにロックする新しい AMIs があります。AL2023 リリースノートでは、各リリースの変更と、パッケージの更新で対処されたセキュリティの問題AL2023 の Amazon Linux セキュリティアドバイザリについて説明しています。

例えば、2023.6.20241028 リリースに存在する問題の影響を受けた場合、以前のリリース 2023.6.20241010 の AMIs とコンテナイメージの使用にすぐに戻ることができます。この場合、後続の 2023.6.20241031 リリースで修正されたパッケージにバグがありましたが、影響を受けるバージョニングされたリポジトリによる確定的なアップグレードすべてのユーザーがすぐに軽減のための簡単なアクションを実行できます。前のイメージを使用するだけです。

バージョニングされたリポジトリによる確定的なアップグレード また、 は、OS 更新の進行中のデプロイが、実施されているか、新しい AMIsまたはコンテナイメージを起動することによって、後からリリースされた OS 更新の影響を受けないことを保証します。

最初の例では、フリート A は大規模なフリートであり、2023.6.20241001 リリースがリリースされたときに 2023.5. から 2023.6.20241028 リリースに更新をデプロイする途中です。 は、フリート A のデプロイが適用する更新に変更を加えることなく継続するバージョニングされたリポジトリによる確定的なアップグレードことを意味します。 20241010

最初にフリートの 1% にデプロイし、次に 5%、10%、20%、40% を 100% に達するまでデプロイするなどのウェーブベースまたはフェーズベースのデプロイ戦略の目的は、より広範囲に展開する前に、限られた方法で変更をテストできることです。このタイプのデプロイ戦略は、本番環境の変更をデプロイするためのベストプラクティスとして一般的に考えられています。

ウェーブベースのデプロイ戦略とフリート 2023.6.20241010 への更新は、一度に多くのホストにデプロイされる段階にあり、2023.6.20241028 がリリースされたという事実は、 を使用して進行中のデプロイには影響しませんバージョニングされたリポジトリによる確定的なアップグレード

フリート B が古いバージョンである 2023.5.20240708 を実行し、2023.6.20241028 への更新のデプロイを開始し、フリート B がそのバージョンの問題の影響を受けた場合、これはデプロイの早い段階で気付くでしょう。その時点で、問題の修正が利用可能になるまでロールアウトを一時停止するかどうか、または同じバージョンフリート A のデプロイを開始する間に 2023.6.20241010 が実行された場合に、フリート B が 2023.5.20240708 から 2023.6.20241010 までのすべての更新を取得するかどうかを決定できます。

OS の更新をすぐに受け取らないと問題が発生する可能性があることに注意してください。新しい更新には、環境に関連するバグやセキュリティの修正が含まれている可能性があります。詳細については、「Amazon Linux 2023 でのセキュリティおよびコンプライアンス」および「AL2023 でパッケージとオペレーティングシステムの更新を管理する」を参照してください。

デプロイシステムを設定して、新しい OS 更新を簡単に取得し、本番環境にデプロイする前にテストし、ウェーブベースのデプロイなどのメカニズムを使用して悪影響を最小限に抑えることが重要です。OS 更新の悪影響を軽減できるようにするには、デプロイシステムに OS の以前の既知の正常なバージョンをポイントさせる方法を知っておくことが重要です。問題が解決されると、古い既知の正常なバージョンにロックされるのではなく、新しい既知の正常なバージョンに移行します。

軽微な更新の準備

AL2023 の新しいポイントリリースなど、OS の小規模な更新の準備は、ゼロエフォートに制限することを意図しています。今後の変更については、AL2023 リリースノートを必ずお読みください。

終了するパッケージのサポート期間には、言語ランタイムの新しいバージョン ( など) への移行が含まれる場合がありますAL2023 での PHP。サポート期間が終了する前に、新しい言語ランタイムバージョンに快適に移行することで、事前にこれに備えるのがベストプラクティスです。

などのパッケージの場合pcre バージョン 1、事前に計画し、コードのいずれかを置き換えに移行する機会もあります。この場合、コードはpcreバージョン 2 です。挫折に備えて、できるだけ早く行うことをお勧めします。

などの直接置き換えがない場合はバークレー DB (libdb)、ユースケースに基づいて選択する必要がある場合があります。

メジャーアップデートの準備

オペレーティングシステムの新しいメジャーバージョンへの更新は、ほぼ普遍的に計画が必要であり、変更または廃止された機能に適応し、デプロイ前にテストする必要があります。次のメジャーバージョンに移行する前に、廃止または削除された機能の使用に対処するなど、Amazon Linux 2023 の次のメジャーバージョンをより段階的に準備できることは珍しいことではありません。

例えば、AL2 から AL2023 に移行する場合、 AL2 で廃止され、AL2023 で削除された機能セクションを読むと、AL2 を使用して AL2023 の準備をしている間に、いくつかの安全で小さなステップが発生する可能性があります。例えば、 を使用する準備として、すべてのPython 2.7 は Python 3 に置き換えられました使用 (yumパッケージマネージャーの などの OS 使用以外) を Python 3 に移行できますAL2023 での PythonPHP を使用する場合、AL2 (PHP 8.2 AL2 Extra 経由) と AL2023 の両方が PHP 8.2 を出荷するため、PHP バージョン移行と OS 移行の両方を同時に行う必要はありません。

AL2023 の使用中に、AL2023 を使用しながら、現在 Amazon Linux 2AL2023 の次のメジャーバージョンを準備することもできます。このセクションでは、AL2023 で廃止され、削除される予定の機能とパッケージAL2023 で廃止について説明します。

例えば、initスクリプトをsystemd同等のものに移行するなど、残りのSystem V init (sysvinit)使用を移行すると、将来の準備が整います。また、すべてのsystemd機能を使用して、サービス、再起動方法とタイミング、必要な他のサービス、リソースやアクセス許可の制約を適用する必要があるかどうかをモニタリングできます。

32 ビットサポートなどの機能の場合、非推奨は複数のメジャーバージョンの OS にまたがることができます。32 ビットの場合、Amazon Linux 1 (AL1) は を廃止し32 ビット x86 (i686) AMIs、Amazon Linux 2 は を廃止し32 ビット x86 (i686) パッケージ、Amazon Linux 2023 は を廃止します32 ビット x86 (i686) ランタイムのサポート。からの移行は、複数のメジャーバージョンの OS IMDSv1にも及びます。これらのタイプの変更では、一部のお客様は適応に長い時間がかかるため、Amazon Linux 2023 でこの機能が利用できなくなるまでに大量の余裕があることがわかっています。

廃止された機能のリストは OS の存続期間中に更新されるため、その変更を最新の状態に保つことをお勧めします。