内部CLBをBashから作成する方法を備忘録として残します。
1、事前準備
以下のサイトを参照してAWSCLIをBashで利用できるように設定します。
AWS CLI バージョン 2 のインストール、更新、アンインストール
また、AWS環境の操作が必要な認証情報を設定してください。
アタッチ対象のEC2は作成済みの想定です。
2、AWSCLIを使用したCLBの作成
以下の手順を実行して内部向けCLBを作成します。
■作成に必要なパラメータの設定
LOAD_BALANCER_NAME=""
TAGS_VALUE=""
SUBNETS_ID="subnet- subnet-"
INSTANCES_ID="i-"
SG_NAME=""
VPC_ID="vpc-"
■CLBにアタッチするためのSG作成
SG_ID=`aws ec2 create-security-group \
--description ${SG_NAME} \
--group-name ${SG_NAME} \
--vpc-id ${VPC_ID} \
| jq -r '.GroupId'`
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-security-group.html
■SGへNameタグの設定
aws ec2 create-tags --resources ${SG_ID} --tags "Key=Name,Value=${SG_NAME}"
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-tags.html
■CLB用SGルール設定
aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --ip-permissions IpProtocol=tcp,FromPort=80,ToPort=80,UserIdGroupPairs=[{"GroupId=sg-,Description=''"}]
aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --ip-permissions IpProtocol=tcp,FromPort=80,ToPort=80,IpRanges='[{CidrIp=123.123.123.0/24,Description="NY office"}]'
■CLB用SGルール設定確認
aws ec2 describe-security-groups --group-ids ${SG_ID}
■CLBをアタッチするEC2のインバウンドへ追加
aws ec2 authorize-security-group-ingress --group-id sg-<対象EC2のSGID> --ip-permissions IpProtocol=tcp,FromPort=80,ToPort=80,UserIdGroupPairs=[{"GroupId=$SG_ID,Description=''"}]
■内部向けCLB作成
aws elb create-load-balancer \
--load-balancer-name ${LOAD_BALANCER_NAME} \
--listeners Protocol=HTTP,LoadBalancerPort=80,InstanceProtocol=HTTP,InstancePort=80 \
--subnets ${SUBNETS_ID} \
--scheme internal \
--security-groups ${SG_ID} \
--tags "Key=Name,Value=${TAGS_VALUE}"
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/create-load-balancer.html
■クロスゾーン負荷分散有効化
aws elb modify-load-balancer-attributes \
--load-balancer-name ${LOAD_BALANCER_NAME} \
--load-balancer-attributes "{\"CrossZoneLoadBalancing\":{\"Enabled\":true}}"
■ヘルスチェック設定
aws elb configure-health-check \
--load-balancer-name ${LOAD_BALANCER_NAME} \
--health-check Target=HTTP:80/healthcheck.php,Interval=30,UnhealthyThreshold=2,HealthyThreshold=5,Timeout=5
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/configure-health-check.html
■EC2インスタンス設定
aws elb register-instances-with-load-balancer \
--load-balancer-name ${LOAD_BALANCER_NAME} \
--instances ${INSTANCES_ID}
■CLB作成確認
aws elb describe-load-balancers \
--load-balancer-name ${LOAD_BALANCER_NAME}