

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

# Classic Load Balancer の登録済みインスタンス
<a name="elb-backend-instances"></a>

Classic Load Balancer を作成した後、そのロードバランサーに対し EC2 インスタンスを登録する必要があります。同じリージョン内の 1 つまたは複数のアベイラビリティーゾーンにある EC2 インスタンスをロードバランサーとして選択できます。Elastic Load Balancing は、登録済み EC2 インスタンスに関するヘルスチェックを定期的に実行し、正常な登録済み EC2 インスタンスに対し、ロードバランサーの DNS 名への受信リクエストを自動的に分散させます。

**Topics**
+ [インスタンスのベストプラクティス](#backend-instance-best-practices)
+ [VPC の推奨事項](#set-up-ec2)
+ [ロードバランサーにインスタンスを登録するには](elb-deregister-register-instances.md)
+ [ヘルスチェック](elb-healthchecks.md)
+ [セキュリティグループ](elb-instances-security-groups.md)
+ [ネットワーク ACL](elb-instances-network-acls.md)

## インスタンスのベストプラクティス
<a name="backend-instance-best-practices"></a>
+ ロードバランサーが、リスナーポートとヘルスチェックポートの両方で、インスタンスと通信できることを確認する必要があります。詳細については、「[Classic Load Balancer のセキュリティグループの設定](elb-vpc-security-groups.md)」を参照してください。インスタンスのセキュリティグループは、両方のポート (ロードバランサー用の各サブネットのポート) で、双方向のトラフィックを許可する必要があります。
+ ロードバランサーに登録するすべてのインスタンスに Apache や Internet Information Services (IIS) などのウェブサーバーをインストールします。
+ HTTP および HTTPS リスナーを使用する場合は、ロードバランサーが複数のクライアントリクエストに対応するためインスタンスへの接続を再利用できるようにするキープアライブオプションを EC2 インスタンスで有効にすることをお勧めします。これによってウェブサーバーの負荷が軽減し、ロードバランサーのスループットが向上します。キープアライブのタイムアウトは、ロードバランサーがインスタンスへの接続を確実に閉じることができるように、60 秒以上にする必要があります。
+ Elastic Load Balancing では、パスの最大送信単位 (MTU) 検出をサポートしています。パス MTU 検出が正しく機能するようにするため、インスタンスのセキュリティグループで ICMP フラグメント化に必要な (タイプ 3、コード 4) メッセージが許可されるようにする必要があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[パス MTU 検出](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery)」を参照してください。

## VPC の推奨事項
<a name="set-up-ec2"></a>

**Virtual Private Cloud (VPC)**  
2014 年 AWS アカウント より前に を作成していない限り、各リージョンにデフォルトの VPC があります。ロードバランサーには既存のデフォルト VPC を使用するか、新しい VPC を作成できます。詳細については、*[Amazon VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/)*を参照してください。

**ロードバランサーのサブネット**  
ロードバランサーが正しくスケーリングできるように、ロードバランサー毎に各サブネットの CIDR ブロックを、最低でも `/27` ビットマスク (例: `10.0.0.0/27`) にし、少なくとも 8 個の空き IP アドレスを用意してください。ロードバランサーははこれらの IP アドレスを使用してインスタンスとの接続を確立し、必要に応じてスケールアウトします。IP アドレスが不十分な場合、ロードバランサーがスケーリングできず、容量不足が原因で 503 エラーが発生する可能性があります。

インスタンスを起動する各アベイラビリティーゾーンにサブネットを作成します。アプリケーションに応じて、パブリックサブネット、プライベートサブネット、またはパブリックサブネットとプライベートサブネットの組み合わせでインスタンスを起動できます。パブリックサブネットには、インターネットゲートウェイへのルートがあります。デフォルト VPC には、アベイラビリティーゾーンごとにデフォルトで 1 つのパブリックサブネットがあることに注意してください。

ロードバランサーを作成する場合は、ロードバランサーに 1 つ以上のパブリックサブネットを追加する必要があります。インスタンスがプライベートサブネットにある場合、インスタンスのサブネットと同じアベイラビリティーゾーンにパブリックサブネットを作成し、このパブリックサブネットをロードバランサーに追加します。

**ネットワーク ACL**  
VPC のネットワーク ACL では、リスナーポートおよびヘルスチェックポートで両方向のトラフィックが許可される必要があります。詳細については、「[Classic Load Balancer のインスタンスのネットワーク ACL](elb-instances-network-acls.md)」を参照してください。

# Classic Load Balancer に EC2 インスタンスを登録するには
<a name="elb-deregister-register-instances"></a>

EC2 インスタンスを登録すると、ロードバランサーに追加されます。ロードバランサーは、登録済みインスタンスの状態を、有効になっているアベイラビリティーゾーンで常に監視し、正常なインスタンスにリクエストをルーティングします。インスタンスの需要が上昇した場合、需要に対応できるようにロードバランサーに追加インスタンスを登録できます。

EC2 インスタンスを登録解除すると、ロードバランサーから削除されます。登録解除するとすぐに、ロードバランサーはインスタンスへのリクエストのルーティングを停止します。需要が低下した場合や、インスタンスを保守する必要がある場合、ロードバランサーからインスタンスを登録解除することができます。登録解除されたインスタンスは実行され続けますが、ロードバランサーからトラフィックを受信しなくなります。準備ができたら、再度ロードバランサーに登録することができます。

インスタンスの登録解除時に Connection Drainingが有効化されている場合は、Elastic Load Balancing は実行中のリクエストが完了するまで待機します。詳細については、「[Classic Load Balancer の Connection Draining の設定](config-conn-drain.md)」を参照してください。

ロードバランサーが Auto Scaling グループにアタッチされている場合、グループ内のインスタンスがロードバランサーに自動的に登録されます。Auto Scaling グループからロードバランサーをデタッチした場合には、グループ内のインスタンスは登録解除されます。

Elastic Load Balancing は、EC2 インスタンスの IP アドレスを使用して、そのインスタンスをロードバランサーに登録します。

[EC2-VPC] アタッチされている Elastic Network Interface (ENI) にインスタンスを登録するとき、ロードバランサーは、インスタンスのプライマリインターフェイス (eth0) のプライマリ IP アドレスにリクエストをルーティングします。

**Topics**
+ [インスタンスの登録](#elb-register-instances)
+ [ロードバランサーに登録されているインスタンスの表示](#elb-describe-load-balancer-instances)
+ [インスタンスが登録されているロードバランサーの確認](#elb-describe-instance-load-balancer)
+ [インスタンスの登録解除](#elb-deregister-instances)

## インスタンスの登録
<a name="elb-register-instances"></a>

準備が整ったら、ロードバランサーにインスタンスを登録します。インスタンスがロードバランサーで有効なアベイラビリティーゾーンにある場合、そのインスタンスは、必要な数のヘルスチェックに合格するとすぐに、ロードバランサーからトラフィックを受信する準備が整います。

**コンソールを使用してインスタンスを登録するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインの [**ロードバランシング**] で [**ロードバランサー**] を選択します。

1. ロードバランサーの名前を選択して、その詳細ページを開きます。

1. **[ターゲットインスタンス]** タブで、 **[インスタンスを管理]** を選択します。

1. **[インスタンスを管理]** ページの **[使用可能なインスタンス]** テーブル内で、ロードバランサーに登録するインスタンスを選択します。

1. 登録する必要があるインスタンスが **[選択済みインスタンスを確認]** テーブル内に入力されていることを確認します。

1. **[Save changes]** (変更の保存) をクリックします。

**を使用してインスタンスを登録するには AWS CLI**  
次の [register-instances-with-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elb/register-instances-with-load-balancer.html) コマンドを使用します。

```
aws elb register-instances-with-load-balancer --load-balancer-name my-loadbalancer --instances i-4e05f721
```

ロードバランサーに登録されているインスタンスを一覧表示する応答の例を次に示します。

```
{
    "Instances": [
        {
            "InstanceId": "i-315b7e51"
        }, 
        {
            "InstanceId": "i-4e05f721"
        }
    ]
}
```

## ロードバランサーに登録されているインスタンスの表示
<a name="elb-describe-load-balancer-instances"></a>

指定したロードバランサーに登録されているインスタンスを一覧表示するには、次の [describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html) コマンドを使用します。

```
aws elb describe-load-balancers --load-balancer-names my-load-balancer --output text --query "LoadBalancerDescriptions[*].Instances[*].InstanceId"
```

出力例を次に示します。

```
i-e905622e
i-315b7e51
i-4e05f721
```

## インスタンスが登録されているロードバランサーの確認
<a name="elb-describe-instance-load-balancer"></a>

指定したインスタンスが登録されているロードバランサーの名前を取得するには、次の [describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html) コマンドを使用します。

```
aws elb describe-load-balancers --output text --query "LoadBalancerDescriptions[?Instances[?InstanceId=='i-e905622e']].[LoadBalancerName]"
```

出力例を次に示します。

```
my-load-balancer
```

## インスタンスの登録解除
<a name="elb-deregister-instances"></a>

容量が必要なくなった場合やインスタンスを保守する必要がある場合、ロードバランサーからインスタンスを登録解除することができます。

ロードバランサーが Auto Scaling グループにアタッチされている場合、グループからインスタンスをデタッチするとロードバランサーからも登録解除されます。詳細については、*Amazon EC2 Auto Scaling ユーザーガイド*の「[Auto Scaling グループから EC2 インスタンスをデタッチする](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-detach-attach-instances.html)」を参照してください。

**コンソールを使用してインスタンスを登録解除するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインの [**ロードバランシング**] で [**ロードバランサー**] を選択します。

1. ロードバランサーの名前を選択して、その詳細ページを開きます。

1. **[ターゲットインスタンス]** タブで、 **[インスタンスを管理]** を選択します。

1. **[インスタンスを管理]** ページの **[使用可能なインスタンス]** テーブル内で、ロードバランサーから登録を解除するインスタンスの選択を解除します。

1. 登録解除する必要があるインスタンスが **[選択済みインスタンスを確認]** テーブル内に入力されていないことを確認してください。

1. **[Save changes]** (変更の保存) をクリックします。

**を使用してインスタンスの登録を解除するには AWS CLI**  
次の [deregister-instances-from-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elb/deregister-instances-from-load-balancer.html) コマンドを使用します。

```
aws elb deregister-instances-from-load-balancer --load-balancer-name my-loadbalancer --instances i-4e05f721
```

ロードバランサーに登録されている残りのインスタンスをリスト表示する応答の例を次に示します。

```
{
    "Instances": [
        {
            "InstanceId": "i-315b7e51"
        }
    ]
}
```

# Classic Load Balancer のインスタンスのヘルスチェック
<a name="elb-healthchecks"></a>

Classic Load Balancer は、登録されたインスタンスのステータスをテストするため、定期的にリクエストを送信します。これらのテストは、*ヘルスチェック*と呼ばれます。ヘルスチェック時に正常なインスタンスのステータスは、`InService` となります。ヘルスチェック時に異常があるインスタンスのステータスは、`OutOfService` となります。ロードバランサーは、インスタンスの状態が正常であるか異常であるかにかかわらず、すべての登録済みインスタンスでヘルスチェックを実行します。

ロードバランサーは、正常なインスタンスのみにリクエストをルーティングします。インスタンスが異常であると判断した場合、ロードバランサーはそのインスタンスへのリクエストのルーティングを中止します。インスタンスが正常な状態に戻ると、ロードバランサーはそのインスタンスへのリクエストのルーティングを再開します。

ロードバランサーは Elastic Load Balancing によって提供されるデフォルトのヘルスチェック設定、またはユーザーが作成したヘルスチェック設定を使用して、登録されたインスタンスの状態をチェックします。

Auto Scaling グループに Classic Load Balancer を関連付けておくと、ロードバランサーのヘルスチェックを使用して、Auto Scaling グループ内のインスタンスのヘルス状態を判断することが可能になります。デフォルトでは、Auto Scaling グループ内の各インスタンスのヘルス状態が定期的に判断されます。詳細については、*Amazon EC2 Auto Scaling 開発者ガイド*の「[Auto Scaling グループへの Elastic Load Balancing ヘルスチェックの追加](https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html)」を参照してください。

**Topics**
+ [ヘルスチェックの設定](#health-check-configuration)
+ [ヘルスチェックの設定の更新](#update-health-check-config)
+ [インスタンスのヘルスの確認](#check-instance-health)
+ [ヘルスチェックのトラブルシューティング](#troubleshoot-health-checks)

## ヘルスチェックの設定
<a name="health-check-configuration"></a>

ヘルス設定には、登録されているインスタンスのヘルス状態を判断するめに、ロードバランサーが使用する情報が含まれています。次の表は、ヘルスチェック設定のフィールドの説明を示しています。


| フィールド | 説明 | 
| --- | --- | 
|  プロトコル  |  インスタンスと接続するために使用するプロトコル。 有効な値: `TCP`、`HTTP`、`HTTPS`、および `SSL` コンソールのデフォルト: `HTTP` CLI/API のデフォルト: `TCP`  | 
|  ポート  |  インスタンスに接続するために使用するポート (`protocol:port` ペアなど)。ロードバランサーが、設定された応答タイムアウト期間内に指定されたポートでインスタンスに接続できない場合、インスタンスは異常と見なされます。 プロトコル: `TCP`、`HTTP`、`HTTPS`、および `SSL` ポート範囲: 1～65535 コンソールのデフォルト: `HTTP:80` CLI/API のデフォルト: `TCP:80`  | 
|  パス  |  HTTP または HTTPS リクエストの送信先。 HTTP または HTTPS GET リクエストがポートとパス上のインスタンスに発行されます。ロードバランサーが応答タイムアウト時間内に "200 OK" 以外の応答を受信した場合、インスタンスは異常と見なされます。応答に本文が含まれている場合、アプリケーションは Content-Length ヘッダーを 0 以上の値に設定するか、値を "chunked" に設定した Transfer-Encoding を指定する必要があります。 デフォルト: `/index.html`  | 
|  応答タイムアウト  |  ヘルスチェックからの応答を受け取るまで待つ時間 (秒単位)。 有効な値: 2 ～ 60 デフォルト: 5  | 
|  HealthCheck 間隔  |  個々のインスタンスのヘルスチェックの間隔 (秒単位)。 有効な値: 5 ～ 300 デフォルト: 30  | 
|  非正常のしきい値  |  EC2 インスタンスで異常が発生していることを宣言する前に連続して失敗したヘルスチェックの数。 有効な値: 2 ～ 10 デフォルト: 2  | 
|  正常のしきい値  |  EC2 インスタンスが正常であることを宣言する前に連続して成功したヘルスチェックの数。 有効な値: 2 ～ 10 デフォルト: 10  | 

ロードバランサーは、指定されたポート、プロトコル、およびパスを使用して、`Interval` 秒ごとに、登録された各インスタンスにヘルスチェックリクエストを送信します。各ヘルスチェックリクエストは独立しており、間隔全体で存続します。インスタンスが応答するまでにかかる時間は、次のヘルスチェックまでの間隔に影響を与えません。ヘルスチェックが **UnhealthyThresholdCount** 連続失敗数のしきい値を超えると、ロードバランサーはインスタンスをサービス停止中の状態にします。ヘルスチェックが **HealthyThresholdCount** 連続成功数のしきい値を超えると、ロードバランサーはインスタンスを実行中の状態に戻します。

インスタンスがヘルスチェックの間隔内に 200 応答コードを返せば、HTTP/HTTPS ヘルスチェックは正常です。TCP 接続が成功すれば、TCP ヘルスチェックは正常です。SSL ハンドシェイクが成功すれば、SSL ヘルスチェックは正常です。

## ヘルスチェックの設定の更新
<a name="update-health-check-config"></a>

ロードバランサーのヘルスチェックの設定はいつでも更新できます。

**コンソールを使用してロードバランサーのヘルスチェックの設定を更新するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインの [**ロードバランシング**] で [**ロードバランサー**] を選択します。

1. ロードバランサーの名前を選択して、その詳細ページを開きます。

1. [**ヘルスチェック**] タブで、[**編集**] を選択します。

1. **[ヘルスチェックの編集の設定]** ページの **[ヘルス チェック]** で、必要に応じて設定を更新します。

1. 選択した内容でよければ、**[変更内容の保存]** を選択します。

**を使用してロードバランサーのヘルスチェック設定を更新するには AWS CLI**  
次の [configure-health-check](https://docs.aws.amazon.com/cli/latest/reference/elb/configure-health-check.html) コマンドを使用します。

```
aws elb configure-health-check --load-balancer-name my-load-balancer --health-check Target=HTTP:80/path,Interval=30,UnhealthyThreshold=2,HealthyThreshold=2,Timeout=3
```

## インスタンスのヘルスの確認
<a name="check-instance-health"></a>

登録済みインスタンスのヘルスステータスをチェックできます。

**コンソールを使用してインスタンスのヘルスステータスをチェックするには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインの [**ロードバランシング**] で [**ロードバランサー**] を選択します。

1. ロードバランサーの名前を選択して、その詳細ページを開きます。

1. **[詳細]** セクションの **[ステータス]** は、サービス中のインスタンスの数を示します。

1. **[ターゲットインスタンス]** タブの **[ターゲットインスタンス]** テーブル内の **[ヘルスステータス]** 列は、登録されている各インスタンスの特定のステータスを示します。

**を使用してインスタンスのヘルスステータスを確認するには AWS CLI**  
次の [describe-instance-health](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-instance-health.html) コマンドを使用します。

```
aws elb describe-instance-health --load-balancer-name my-load-balancer
```

## ヘルスチェックのトラブルシューティング
<a name="troubleshoot-health-checks"></a>

登録済みインスタンスが、いくつかの理由からロードバランサーのヘルスチェックに失敗する場合があります。ヘルスチェックの失敗理由として最も多いのは、EC2 インスタンスがロードバランサーへの接続を閉じている場合や、EC2 インスタンスからの応答がタイムアウトになった場合です。考えられる原因、および失敗したヘルスチェックの問題を解決するための手順については、「[Classic Load Balancer のトラブルシューティング: ヘルスチェック](ts-elb-healthcheck.md)」を参照してください。

# Classic Load Balancer のインスタンスのセキュリティグループ
<a name="elb-instances-security-groups"></a>

*セキュリティグループ*は、1 つ以上のインスタンスとの間で許可されているトラフィックを制御するファイアウォールとして機能します。EC2 インスタンスを起動するとき、1 つ以上のセキュリティグループをインスタンスに関連付けることができます。セキュリティグループごとに、トラフィックを許可する 1 つ以上のルールを追加します。セキュリティグループのルールは、いつでも変更できます。新しいルールは、セキュリティグループに関連付けられているすべてのインスタンスに自動的に適用されます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 セキュリティグループ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)」を参照してください。

インスタンスのセキュリティグループでは、ロードバランサーとの通信が許可される必要があります。次の表に、推奨されるインバウンドルールを示します。


| ソース | プロトコル | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| *ロードバランサーのセキュリティグループ* | TCP | *インスタンスリスナー* | インスタンスリスナーポートでロードバランサーからのトラフィックを許可する | 
| *ロードバランサーのセキュリティグループ* | TCP | *ヘルスチェック* | ヘルスチェックポートでロードバランサーからのトラフィックを許可する | 

また、パス MTU 検出をサポートするため、インバウンド ICMP トラフィックを許可することをお勧めします。詳細については、「*Amazon EC2 ユーザーガイド*」の「[パス MTU 検出](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery)」を参照してください。

# Classic Load Balancer のインスタンスのネットワーク ACL
<a name="elb-instances-network-acls"></a>

*ネットワークアクセスコントロールリスト (ACL)* は、サブネットレベルで特定のインバウンドまたはアウトバウンドのトラフィックを許可または拒否します。VPC のデフォルトのネットワーク ACL を使用するか、セキュリティグループと同様のルールを使用して VPC のカスタムネットワーク ACL を作成し、セキュリティの追加レイヤーを VPC に追加できます。

VPC のデフォルトネットワークアクセスコントロールリスト (ACL) では、すべてのインバウンドトラフィックとアウトバウンドトラフィックが許可されます。カスタムネットワーク ACL を作成する場合、ロードバランサーとインスタンスの通信を許可するルールを追加します。

インスタンスのサブネットの推奨ルールは、サブネットがプライベートとパブリックのどちらであるかによって異なります。次のルールは、プライベートサブネット用です。インスタンスがパブリックサブネット内にある場合、送信元と宛先を VPC の CIDR から `0.0.0.0/0` に変更します。

推奨されるインバウンドルールを次に示します。


| ソース | プロトコル | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
|  *VPC CIDR*  |  TCP  |  *インスタンスリスナー*  |  インスタンスリスナーポートで VPC CIDR からのインバウンドトラフィックを許可する  | 
|  *VPC CIDR*  |  TCP  |  *ヘルスチェック*  |  ヘルスチェックポートで VPC CIDR からのインバウンドトラフィックを許可する  | 

推奨されるアウトバウンドルールを次に示します。


| 目的地 | プロトコル | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
|  *VPC CIDR*  |  TCP  |  1024-65535  |  一時ポートで VPC CIDR へのアウトバウンドトラフィックを許可する  | 