アベイラビリティーゾーン (AZ) の移行&インスタンスのアップグレードガイド

4 minute read
Content level: Intermediate
0

本記事は特定のアベイラビリティーゾーン(AZ)にあるEC2, EBS, NATゲートウェイ, ElastiCache, ELB, RDSといったAWSリソースを異なるAZに移行するためのガイドです

本記事はAvailability Zone (AZ) Migration & Instance Upgrade Guideの日本語訳となります。

インスタンスが実行する AZ の特定

まず、作業対象の AWS アカウントが、移行元 AZ を利用可能な状態であることを確認してください。確認するには、対象の AWS アカウントにおいて、CLI を使用して、 aws ec2 describe-availability-zones --region 「region-name」 コマンドを実行します。「region-name」を実際の AWS リージョン名に置き換えてください。出力に移行元 AZ が含まれている場合、対象の AWS アカウントはその AZ でインスタンスを実行する利用許可リストに登録されていること判断できます。

次に、CLI から aws ec2 describe-availability-zones --region 「region-name」コマンドを実行して、移行元 AZ の ZoneId にマップされる ZoneName を検索できます。この ZoneName と一致する AZ で実行されているインスタンスはすべて、移行/アップグレードが必要なインスタンスになります。詳細については、Availability Zone Ids for your AWS resources を参照してください。

また、AWS マネジメントコンソールを使用して実行中のインスタンスを表示し、対象の AZ で実行しているインスタンスを確認することもできます。

EC2 インスタンスのアップグレード/移行

EC2 インスタンスを最新世代のインスタンスタイプにアップグレードするには、ドキュメント Change the instance type の “Considerations for compatible instance types” のセクションを参照してください。

既存のワークロードを実行する上で最適なインスタンスのレコメンドが必要な場合は、AWS Compute Optimizer をご利用頂けます。詳細については、ドキュメント Get recommendations for an instance type を参照してください。

最新世代のインスタンスタイプと移行先のAZ を特定したら、新しい AZ で新しいインスタンスを起動できます。手順については、ドキュメント Change the instance type を参照してください。

ボリュームの移行

EC2 インスタンスにアタッチされていない EBS ボリュームについては、EBS スナップショットを介して別のアベイラビリティーゾーン (AZ) に移行できます。対象のボリュームの EBS スナップショットを取得し、移行先 AZ にスナップショットから新しい EBS ボリュームを作成できます。移行が完了した後は、元の EBS ボリュームと、バックアップとして不要になったスナップショットを削除できます。

NAT ゲートウェイの移行

NAT ゲートウェイは AZ 内で冗長性を備えて設計されており、一般的には NAT ゲートウェイが稼働している AZ と同じ AZ 内のリソースによって使用される構成を取ります。従って、移行元 AZ から別の AZ にすべてのリソースを移行したら、移行先 AZ で新しい NAT ゲートウェイを起動し、トラフィックが移行先 AZ の NAT ゲートウェイにルーティングされるように設定する必要があります。移行し終えた後、移行元 AZ の NAT ゲートウェイを削除できます。

移行元 AZ の NAT に利用していた IP アドレスを流用したい場合は、まず移行元 AZ の NAT ゲートウェイを削除して EIP の紐付けを解除してください。次に移行先 AZ で新しい NAT ゲートウェイを起動する際に先ほど紐付けが解放された (流用したい) EIP を使用するように設定してください。

ElastiCache のアップグレード/移行

新しいクラスターを作成する (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/Clusters.Create.html) 、または、別の AZ の既存のクラスターにノードを追加する (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/Clusters.AddNode.html) ことをお勧めします。

旧世代のノードを使用している場合は、最新世代のノードにアップデートする (https://aws.amazon.com/elasticache/previous-generation/) ことをお勧めします 。

ELB の移行ガイド

このガイドでは、ワークロードに影響を与えずに Elastic Load Balancer (ELB) を単一の EC2 Availability Zone (AZ) から安全に移行する方法を紹介します。ELB には、クラシック (CLB)、アプリケーション (ALB)、ネットワーク (NLB)、ゲートウェイロードバランサー (GWLB) の 4つのタイプがあります。ロードバランサーのタイプによって移行手順が異なります。以下のセクションにクラシックロードバランサー (CLB) とアプリケーションロードバランサー (ALB) の手順を紹介します。

AWS CLI の aws ec2 describe-availability-zones --region「region-name」コマンドを使用して AZ の ID 情報を生成できます。必ず「region-name」を実際の AWS リージョン名に置き換えてください。

下記はAWS CLI の出力例です。ZoneName はアカウントごとに異なる場合がありますが、物理的な ZoneId は同じであることに注意してください。

aws ec2 describe-availability-zones --zone-ids --region ap-northeast-1
{
    "AvailabilityZones": [
        {
            "State": "available",
            "OptInStatus": "opt-in-not-required",
            "Messages": [],
            "RegionName": "ap-northeast-1",
            "ZoneName": "ap-northeast-1a",
            "ZoneId": "xxxxxxx",
            "GroupName": "ap-northeast-1",
            "NetworkBorderGroup": "ap-northeast-1",
            "ZoneType": "availability-zone"
        }
    ]
}

クラシックロードバランサー

ドキュメントリンク: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-manage-subnets.html#remove-subnet 注: ロードバランサーの設定を変更する前に、残りのすべての AZ に、移行元 AZ から削除されるターゲットを補うのに十分な容量を持っていることを確認してください。

AWS コンソールを使用して Availability Zone を移行する手順

  1. Amazon EC2 コンソール https://console.aws.amazon.com/ec2/ を開きます。
  2. ナビゲーションペインで、Load Balancing の下にある Load Balancers を選択します。
  3. 対象のロードバランサーを選択し、詳細ページを開きます。
  4. Network mapping タブで、Edit subnets を選択します。
  5. Edit subnets ページの Network mapping セッションで、別の利用可能な AZ の適切なサブネットを選択します。
  6. 終了したら、Save changes を選択します。
  7. Target Instances タブを確認し、新しい AZ に登録したターゲットが正常にマップされてトラフィックを受信するまで 15 分ほど待ちます。
  8. Edit subnets を再度クリックし、移行元 AZ の選択を解除して、その AZ とそれに関連付けられたサブネットを削除します。
  9. Save changes を選択します。

AWS CLI を使用して Availability Zone を移行する手順

まず、attach-load-balancer-to-subnets コマンドを実行し、移動先の新しい AZ を選択します。

aws elb attach-load-balancer-to-subnets --load-balancer-name my-loadbalancer --subnets subnet-33333333

出力には、現在ロードバランサーに設定されている AZ が一覧表示されます。

出力例:

{
    "Subnets": [
        "subnet-11111111",
        "subnet-22222222",
        "subnet-33333333"
    ]
}

Target Instances タブを確認し、新しい AZ に登録したターゲットが正常とマークされトラフィックを受信するまで 15 分ほど待ちます。

次に detach-load-balancer-from-subnets コマンドを実行し、移行元 AZ を削除します。

aws elb detach-load-balancer-from-subnets --load-balancer-name my-loadbalancer --subnets subnet-11111111

出力には、ロードバランサーに残っている AZ が一覧表示されます。

出力例:

{
    "Subnets": [
        "subnet-22222222",
        "subnet-33333333"
    ]
}

アプリケーションロードバランサー

ドキュメントリンク: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-subnets.html

注: ロードバランサーの設定を変更する前に、残りのすべての AZ に、移行元 AZ から削除されるターゲットを補うのに十分な容量を持っていることを確認してください。

AWS コンソールを使用して Availability Zone を移行する手順

  1. Amazon EC2 コンソール https://console.aws.amazon.com/ec2/ を開きます。
  2. ナビゲーションペインで、Load Balancing の下にある Load Balancers を選択します。
  3. 対象のロードバランサーを選択し、詳細ページを開きます。
  4. Network mapping タブで、Edit subnets を選択します。
  5. Edit subnets ページの Network mapping セッションで、別の利用可能な AZ の適切なサブネットを選択します。
  6. 終了したら、Save changes を選択します。
  7. Target Instances タブを確認し、新しい AZ に登録したターゲットが正常にマップされてトラフィックを受信するまで 15 分ほど待ちます。
  8. Edit subnets を再度クリックし、移行元 AZ の選択を解除して、その AZ とそれに関連付けられたサブネットを削除します。
  9. Save changes を選択します。

AWS CLI を使用して Availability Zones を更新する手順

移行元 AZ にあるサブネットが含まれないように、set-subnets コマンドを使用してください。ALB が 2つのサブネットにのみデプロイされている場合は、CLI コマンドで2 番目のサブネットを指定する必要があることに注意してください。少なくとも 2 つの AZ からサブネットを指定する必要があります。

aws elbv2 set-subnets --load-balancer-arn arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/abcd123456789012 --subnets subnet-11111111 subnet-22222222

RDS の移行ガイド

インスタンスを移行するには、それぞれのエンジンと設定に応じた手順で行います。

  • OSSエンジンSingle-AZのオプション

  • OSS エンジン Multi-AZ のオプション:

    • プライマリインスタンスが移行元 AZ にある場合:

      1. スタンバイへの強制フェイルオーバーをさせる、2. Single-AZ に変換する、 3. 任意の DB サブネットグループから移行元 AZ を削除する、4. Multi-AZ に戻す 注:この場合、データベースインスタンスへの書き込みレイテンシーに影響があります。大きなストレージを持つ DB や重いワークロードを持つ DB では、数時間にわたってレイテンシーの影響が見られる場合があります。 https://aws.amazon.com/blogs/database/best-practices-for-converting-a-single-az-amazon-rds-instance-to-a-multi-az-instance/
    • スタンバイインスタンスが移行元 AZ にある場合:

      1. Single-AZ に変換する、2. 任意の DB サブネットグループから移行元 AZ を削除する、3. Multi-AZ に戻す
  • Commercial エンジン Single-AZ:

  • Commercial エンジン MAZ:

インスタンスは、コンソール、API、または CLI を使用して新しい世代にアップグレードすることができます。それぞれの方法の詳細な手順については、 Modifying an Amazon RDS Instance を参照してください。一部のインスタンスタイプには、さまざまなエンジンに対する最小エンジン バージョン要件があることに留意してください。エンジン別にサポートされているインスタンスタイプの詳細については、 Supported DB engines for DB instance classesを参照してください。