Alibaba Cloud Network Load Balancer (NLB) は、TCP、UDP、およびSSL over TCPをサポートし、高性能なレイヤ4負荷分散機能を提供します。 このトピックでは、NLBインスタンスを作成してクライアント要求をバックエンドIPv4サービスに転送する方法について説明します。
前提条件
仮想プライベートクラウド (VPC) は中国 (上海) リージョンに作成され、vSwitchはゾーンEとゾーンGのそれぞれに作成されます。この例では、VPCの名前はVPC1で、vSwitchの名前はVSW1とVSW2です。 詳細については、「VPCとvSwitchの作成」をご参照ください。
Elastic Compute Service (ECS) インスタンス (ECS01) がVSW1にデプロイされ、別のECSインスタンス (ECS02) がVSW2にデプロイされています。
ECSインスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
次のコマンドは、ECS01およびECS02にアプリケーションをデプロイする方法を示しています。
ドメイン名を登録し、そのドメイン名に対してICP (Internet content provider) 番号を取得する。 詳細については、「Alibaba Cloudへのドメイン名の登録」および「概要」をご参照ください。
次の表に、VPC1の設定を示します。 構成は参照だけのためです。
次の表に、ECS01およびECS02の設定を示します。 構成は参照だけのためです。
手順1: NLBインスタンスの作成
NLBコンソールにログインします。
上部のナビゲーションバーで、NLBインスタンスがデプロイされているリージョンを選択します。
インスタンスページで、NLBの作成をクリックします。
NLB (従量課金) 国際サイトページで、パラメーターを設定します。 今すぐ購入をクリックします。
次の表に、一部のパラメーターのみを示します。 他のパラメーターはデフォルト値を使用します。 詳細については、「NLBインスタンスの作成と管理」をご参照ください。
パラメーター
説明
リージョン
NLBインスタンスを作成するリージョンを選択します。
ネットワークタイプ
NLBインスタンスのネットワークタイプを選択します。 システムは、選択したネットワークタイプに基づいて、NLBインスタンスにパブリックまたはプライベートIPアドレスを割り当てます。 この例では、インターネットが選択されています。
[VPC]
NLBインスタンスをデプロイするVPCを選択します。
ゾーンID
少なくとも2つのゾーンを選択します。 この例では、上海ゾーンEと上海ゾーンGが選択され、各ゾーンのvSwitchが選択されています。
IPバージョン
IPバージョンを選択します。 この例では、IPv4が選択されています。
[インスタンス名]
NLBインスタンスの名前を入力します。
リソースグループ
NLBインスタンスのリソースグループを選択します。
サービスにリンクされたロール
NLBインスタンスを初めて作成するときに、[サービスにリンクされたロールの作成] をクリックして、AliyunServiceRoleForNlbサービスにリンクされたロールを作成します。 ロールにはAliyunServiceRolePolicyForNlbポリシーが割り当てられ、NLBが他のクラウドサービスにアクセスできるようにします。 詳細については、「NLBのシステムポリシー」をご参照ください。
手順2: サーバーグループの作成
左側のナビゲーションウィンドウで、を選択します。
サーバーグループページで、サーバーグループの作成をクリックします。
[サーバーグループの作成] ダイアログボックスでパラメーターを設定し、[作成] をクリックします。 下表にパラメーターを示します。
次の表に、主要なパラメーターのみを示します。 他のパラメータはデフォルト値を使用する。 詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
サーバーグループタイプ
サーバーグループタイプを選択します。 この例では、[サーバータイプ] が選択されています。
サーバーグループ名
サーバーグループの名前を入力します。
VPC
[VPC] ドロップダウンリストからVPCを選択します。 VPC内のサーバーのみをサーバーグループに追加できます。
バックエンドサーバープロトコル
バックエンドプロトコルを選択します。 有効な値: TCP、UDP、SSL over TCP。 この例では、TCPが選択されています。
スケジューリングアルゴリズム
スケジューリングアルゴリズムを選択します。 この例では、[加重ラウンドロビン] が選択されています。
ヘルスチェック
ヘルスチェックはデフォルトで有効です。 この例では、デフォルト設定が使用されています。
サーバーグループのIDをクリックして、[バックエンドサーバー] タブに移動します。
バックエンドサーバーの追加 をクリックします。 [バックエンドサーバーの追加] パネルで、[ECS01] と [ECS02] を選択し、[次へ] をクリックします。
[ポート /重み] ステップで、ポート80を指定し、デフォルトの重み100を使用して、[OK] をクリックします。
手順3: リスナーの設定
左側のナビゲーションウィンドウで、を選択します。
[インスタンス] ページで、管理するNLBインスタンスを見つけ、[リスナーの作成] をクリックします。
Server Load Balancerの設定ページで、パラメーターを設定し、次へをクリックします。
次の表に、一部のパラメーターのみを示します。 他のパラメーターはデフォルト値を使用します。 詳細については、「TCPリスナーの追加」をご参照ください。
パラメーター
説明
リスナープロトコルの選択
リスナープロトコルを選択します。 この例では、TCPが選択されています。
リスナーポート
リクエストを受信してバックエンドサーバーに転送するリスナーポートを指定します。 この例では、ポート80が選択されている。
リスナー名
リスナーの名前を入力します。
詳細設定
この例では、デフォルト設定を使用します。 [変更] をクリックして、設定を変更できます。
サーバーグループステップで、サーバータイプを選択し、サーバータイプの横にあるドロップダウンリストからサーバーグループを選択します。サーバータイプバックエンドサーバーを表示し、次へをクリックします。
確定ステップで、設定を確認し、送信をクリックします。
OK をクリックして [リスナー] タブに戻ります。 ヘルスチェックステータスのリスナーのステータスが [正常] に変更された後、ECS01とECS02はNLBインスタンスからリクエストを転送できます。
ステップ4: DNSレコードを作成する
実際のビジネスシナリオでは、CNAMEレコードを使用してカスタムドメイン名をNLBインスタンスのドメイン名にマップすることを推奨します。
左側のナビゲーションウィンドウで、を選択します。
インスタンスページで、管理するNLBインスタンスのドメイン名をコピーします。
CNAMEレコードを作成するには、次の手順を実行します。
Alibaba Cloud DNSコンソールにログインします。
ドメイン名の解決ページで、ドメイン名の追加をクリックします。
ドメイン名の追加ダイアログボックスでドメイン名を入力し、OKをクリックします。
重要CNAMEレコードを作成する前に、TXTレコードを使用してドメイン名の所有権を確認する必要があります。
管理するドメイン名を見つけて、アクション列のDNS設定をクリックします。
ドメイン名の詳細ページのDNS設定タブで、DNSレコードの追加をクリックします。
[DNSレコードの追加] パネルでパラメーターを設定し、[OK] をクリックします。 下表にパラメーターを示します。
パラメーター
説明
レコードタイプ
ドロップダウンリストから [CNAME] を選択します。
ホスト名
ドメイン名のプレフィックス。 この例では、@ を入力します。
説明ドメイン名がルートドメイン名の場合は、@ と入力します。
DNSリクエストソース
[デフォルト] を選択します。
レコード値
NLBインスタンスのドメイン名であるCNAMEを入力します。
TTL
DNSサーバーにキャッシュされるCNAMEレコードの有効期限 (TTL) 値を指定します。 この例では、デフォルト値が使用されます。
ステップ5: 結果を確認する
NLBインスタンスの可用性をテストします。
この例では、インターネットにアクセスできるLinuxクライアントが使用されています。 CentOSを使用し、telnetがインストールされていない場合は、
yum install -y telnet
コマンドを実行してtelnetをインストールします。telnet Domain name Port
コマンドを実行します。 応答パケットに含まれるnlbに接続-...、NLBインスタンスはバックエンドサーバーにリクエストを転送できます。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.
http:// domain name
など、ブラウザからドメイン名にアクセスします。 次の図に示すように応答パケットを受信できる場合、NLBインスタンスはバックエンドサーバーにリクエストを転送できます。
(オプション) 障害をシミュレートします。
ECS01でアプリケーションを停止します。 ECS01で
systemctl stop nginx.service
コマンドを実行し、アプリケーションを停止します。クライアントで
telnet Domain name Port
コマンドをもう一度実行して、Connected to nlb-... を含む応答パケットを受信できるかどうかをテストします。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.
http:// domain name
など、ブラウザからドメイン名にアクセスします。 次の図に示すように応答パケットを受信できる場合、NLBインスタンスはバックエンドサーバーにリクエストを転送できます。ECS01でアプリケーションを起動し、ECS02でアプリケーションを停止します。 ECS01で
systemctl start nginx.service
コマンドを実行してアプリケーションを再起動し、ECS02でsystemctl stop nginx.service
コマンドを実行してアプリケーションを停止します。クライアントで
telnet Domain name Port
を再度実行して、Connected to nlb-... を含む応答パケットを受信できるかどうかをテストします。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'.
http:// domain name
など、ブラウザからドメイン名にアクセスします。 次の図に示すように応答パケットを受信できる場合、NLBインスタンスはバックエンドサーバーにリクエストを転送できます。上記のテストでは、単一のサーバーによって引き起こされた単一障害点 (SPOF) がNLBインスタンスの可用性を損なうことはないことが示されています。
リリースリソース
ECSインスタンスとセキュリティグループをリリースします。
DNSレコードを削除します。
詳細については、「DNSレコードの削除」をご参照ください。
NLBリソースをリリースします。
VPCリソースを解放します。
VPCコンソールにログインします。 上部のナビゲーションバーで、VPCが存在するリージョンを選択します。
[操作] 列の [削除] をクリックし、[強制削除] を選択してVPCとvSwitchを削除します。
関連ドキュメント
NLBの使用シナリオとコンポーネントの詳細については、NLBとは何ですか?
NLBの機能の詳細については、「関数と機能」をご参照ください。
NLBクォータの詳細とクォータを増やす方法については、「制限」をご参照ください。
NLBが使用可能なリージョンの詳細については、「NLBをサポートするリージョン」をご参照ください。
NLBの課金の詳細については、「NLB課金」をご参照ください。