#1:はじめに
ElasticLoadBalancer(ELB)の構築方法について、AWSマネジメントコンソールを使用した方法がとてもポピュラーかとは思いますが、AWS CLIを使用して構築を行うことも可能です。
マネコンでポチポチ操作でも分かりやすくて良いですが、一々パラメータを設定しているとタイポ等のミスも起こりがちです。
AWS CLIを使用した方法なら、予めパラメータを記載できて、決められたコマンドを実行するだけなのでパラメータの記載ミスが減ります。
マネコンだけではなく、AWS CLIを使用した構築方法も知っておいて損はないかと思われます。
今回はCLIを使用したNLBの作成手順をせっかくなのでEC2の作成から順を追ってご紹介致します。
#2:概要
<記事概要>
AWS CLIを使用したAmazon NLBの構築方法をご紹介
<要件>
●作成物
・Elastic IP Address(EIP)
・SecurityGroup(SG) ※ルール追加
・targetGroup(TG)
・NetworkLoadbalancer(NLB)
<環境>
Windows10 powershell
※AWS CLIのコマンドは環境によって差異はでませんので、Linux環境でも同様のコマンドで操作することが可能です
<前提>
・AWS CLIはインストール済み
・IAMユーザ、IAMロールは作成済み
・Webサーバー機能を持っているEC2インスタンスを2台作成済み
#3:手順
① AWS CLIプロファイルの生成
② EIPの作成
③ SGに新規ルールを追加
④ target Groupの作成
⑤ NLBの作成
#4:AWS CLIプロファイルの生成
AWS CLIを使用するため、プロファイル設定を行います。
まずは実行環境でもあるpowershellを起動します。
ローカル端末にて、『Windowsスタート』 - 『Powershell』をクリック。
Powershellを起動したら、以下コマンドを実行して下さい。
※コマンドの説明はコマンド上部のコメントにて記載してます
※プロンプトは非表示にしてます
# カレントディレクトリをユーザーディレクトリに変更
PS C:\***> cd
# AWS CLIプロファイル設定
PS C:\User\my-user> aws configure --profile qiita-Hands-on
AWS Access Key ID [None]: <アクセスキー>
AWS Secret Access Key [None]: <シークレットアクセスキー>
Default region name [None]: ap-northeast-1
Default output format [None]: text
# IAMユーザーの確認
PS C:\User\my-user> aws iam list-users --profile qiita-Hands-on
テキストエディタで以下ファイルを開いてください。
・aws configureコマンドによって生成した設定ファイル
パス:C:\Users\my-user.aws\config
以下を参照し、IAMロール設定を追記して下さい
[default]
region = ap-northeast-1
output = json
[profile 【スイッチロールするプロファイル名】]
role_arn = <IAMロールARN>
source_profile = qiita-Hands-on
#5:EIPの作成
固定IPを作成します。
今回はEC2インスタンスではなく、NLB作成時に各AZに関連付けます。
以下コマンドを実行してください。
# 新規EIPの作成(ap-northeast-1a)
aws ec2 allocate-address --domain vpc
# 新規EIPの作成(ap-northeast-1c)
aws ec2 allocate-address --domain vpc
#6:セキュリティグループへの新規ルールの追加
セキュリティグループへ新規ルールを追加し、後に作成するTargetGroupが外部と通信できるように設定します。
ポート番号はTrgetgroupに設定するポートを、IPはアクセスが予想されるIPを指定します。
今回はポート[80]、IPはオープンアドレス[0.0.0.0/0]を使用します。
以下コマンドを実行してください。
aws ec2 authorize-security-group-ingress \
--group-id <SGIDを指定してください> \
--protocol tcp \
--port 80 \
IpRanges='[{CidrIp=0.0.0.0/0,Description="Qiita handson rule"}]'
#7:ターゲットグループの作成
NLBに紐付けるTargetGroupを作成します。
ポートを[80(http)]、作成するvpcのidを指定します。
別コマンドにて、ターゲットに事前に作成したEC2インスタンス2つを指定します。
TargetGroupの作成はターゲットを追加するという工程があるので、上記手順のようなワンライナーではなく何度かに分けてコマンドを実行します。
ここでは最低限の設定しかしませんが、細かな設定を追加したい場合などはオプションを使用します。
オプションの詳細は以下公式ドキュメントをご参照ください ↓
https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-target-group.html
以下コマンドを実行してください。
# TargetGroupを作成
aws elbv2 create-target-group --name qiita-hands-on-TG \
--protocol HTTP --port 80 \
--vpc-id <vpcのARNを指定>
# TargetGroupへ新規ターゲットを登録する
aws elbv2 register-targets \
--target-group-arn <targetGroup ARN> \
Id=<インスタンスID> \
Id=<インスタンスID>
#8:NLBの作成
NLBを作成し、先程作成したtargetGroupをリスナーとして登録します。
TargetGroup同様ワンライナーではなく、何度かコマンドを分けて実行します。
流れは、
1.aws elbv2 create-load-balancer ~~~
2.aws elbv2 create-listener ~~~
となります。
create-load-balancerコマンド実行時、targetGroup同様オプションを指定することで詳細な設定を行うことができます。
詳細な以下をご参照ください ↓
https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer.html
# NLBの作成
aws elbv2 create-load-balancer \
--name qiita-hands-on-NLB \
--type network \
--subnets <subnetIDを指定>
# リスナー登録
aws elbv2 create-listener \
--load-balancer-arn <NLBのARNを指定> \
--protocol TCP \
--port 80 \
--default-actions \
Type=forward,TargetGroupArn=<ターゲットグループARNを指定>
#9:まとめ
以上の手順で、NLBの作成は完了です。
作成したEIPへアクセスを行うと無事EC2へアクセスできるはずです。
アクセス後、[F5]連打すると方系に負荷分散することが確認できると思います。
マネジメントコンソールを使用すると画面の読み込みであったり、管理コンソールを行き来したりでやっぱり時間がかかってしまいますが、本記事のようにCLIを使用すれば、プロンプト1つでLoadbalancerの作成が可能になります。