개요
2022.12.19 - [aws cli] Classic LB - 인스턴스 등록/해제에서 aws cli로 CLB에 인스턴스를 등록하고 삭제해 봤는데, 이번 글에서는 NLB를 대상으로 인스턴스를 등록하고 해제하는 명령어를 적어둔다. 참고로 aws cli로 NLB나 ALB를 다룰 때는 elbv2 명령어를 사용한다.
LB 정보 확인
참고 : 2021.11.20 - [aws cli] 로드밸런서 정보 확인
describe-load-balancers 명령으로 LB의 현재 정보를 확인할 수 있다. 확인할 로드밸런서 ARN이나 이름을 지정하지 않으면 모든 로드밸런서 정보를 확인한다.
aws elbv2 describe-load-balancers
# --names : 로드밸런서 이름
# 예시
aws elbv2 describe-load-balancers \
--names <value>
실행 결과
{
"LoadBalancers": [
{
"Type": "application",
"Scheme": "internet-facing",
"IpAddressType": "ipv4",
"VpcId": "vpc-3ac0fb5f",
"AvailabilityZones": [
{
"ZoneName": "us-west-2a",
"SubnetId": "subnet-8360a9e7"
},
{
"ZoneName": "us-west-2b",
"SubnetId": "subnet-b7d581c0"
}
],
"CreatedTime": "2016-03-25T21:26:12.920Z",
"CanonicalHostedZoneId": "Z2P70J7EXAMPLE",
"DNSName": "my-load-balancer-424835706.us-west-2.elb.amazonaws.com",
"SecurityGroups": [
"sg-5943793c"
],
"LoadBalancerName": "my-load-balancer",
"State": {
"Code": "active"
},
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188"
}
]
}
LB 타겟 그룹 정보 확인
NLB나 ALB는 특정 포트로 요청받은 트래픽을 리스너 규칙에 의해 타겟 그룹으로 라우팅 한다. 따라서 LB에 타겟 인스턴스를 추가하거나 삭제하려면 해당 LB의 타겟 그룹 규칙을 찾아야 한다.
aws elbv2 describe-target-groups \
--load-balancer-arn <LB_ARN>
실행 결과
{
"TargetGroups": [
{
"TargetGroupName": "my-targets",
"Protocol": "HTTP",
"Port": 80,
"VpcId": "vpc-3ac0fb5f",
"TargetType": "instance",
"HealthCheckEnabled": true,
"UnhealthyThresholdCount": 2,
"HealthyThresholdCount": 5,
"HealthCheckPath": "/",
"Matcher": {
"HttpCode": "200"
},
"HealthCheckProtocol": "HTTP",
"HealthCheckPort": "traffic-port",
"HealthCheckIntervalSeconds": 30,
"HealthCheckTimeoutSeconds": 5,
"TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067",
"LoadBalancerArns": [
"arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188"
]
}
]
}
describe-target-groups 명령어 결과에는 그룹에 등록된 인스턴스 등의 정보는 안 보이는데, 이 부분은 health check 정보를 확인해야 할 것 같다.
aws elbv2 describe-target-health \
--target-group-arn <TG_ARN>
{
"TargetHealthDescriptions": [
{
"HealthCheckPort": "80",
"Target": {
"Id": "i-ceddcd4d",
"Port": 80
},
"TargetHealth": {
"State": "healthy"
}
},
{
"HealthCheckPort": "80",
"Target": {
"Id": "i-0f76fade",
"Port": 80
},
"TargetHealth": {
"State": "healthy"
}
}
]
}
LB 타겟 그룹에 인스턴스 등록
LB 타겟 그룹에 인스턴스를 등록할 때는 register-targets 명령어에 타겟 그룹과 등록할 인스턴스의 Id를 지정한다. 등록할 인스턴스가 여럿이라면 공백으로 구분하여 나열한다.
aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 \
--targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
LB 타겟 그룹에서 인스턴스 등록 해제
LB 타겟 그룹에서 등록되어 있는 인스턴스를 제거할 때는 deregister-targets 명령어에 타겟 그룹과 제거할 인스턴스의 Id를 지정한다. register-targets와 마찬가지로 제거할 인스턴스가 여럿이면 공백으로 구분하여 나열한다.
aws elbv2 deregister-targets \
--target-group-arn arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 \
--targets Id=i-1234567890abcdef0
참고 문서
https://docs.aws.amazon.com/cli/latest/reference/elbv2/