개요
AWS CLI를 사용해 이미 사용 중인 Classic LB에 target instance를 등록하거나 해제하려고 한다.
사용한 명령어를 정리해둔다.
💡 Application LB, Network LB은 이 글에서 다루지 않는다.
CLB 정보 확인
describe-load-balancers 명령으로 classic LB의 현재 정보를 확인할 수 있다. 로드밸런서 이름을 지정하지 않으면 모든 로드밸런서 정보를 확인한다.
특정 로드밸런서 정보를 확인하고 싶을 때는 --load-balancer-name 옵션으로 확인할 로드밸런서의 이름을 전달한다.
aws elb describe-load-balancers
# --load-balancer-names : 로드밸런서 이름
# 예시
aws elb describe-load-balancers \
--load-balancer-names <LB_NAME>
실행 결과
{
"LoadBalancerDescriptions": [
{
"Subnets": [
"subnet-15aaab61"
],
"CanonicalHostedZoneNameID": "Z3DZXE0EXAMPLE",
"CanonicalHostedZoneName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com",
"ListenerDescriptions": [
{
"Listener": {
"InstancePort": 80,
"LoadBalancerPort": 80,
"Protocol": "HTTP",
"InstanceProtocol": "HTTP"
},
"PolicyNames": []
},
{
"Listener": {
"InstancePort": 443,
"SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert",
"LoadBalancerPort": 443,
"Protocol": "HTTPS",
"InstanceProtocol": "HTTPS"
},
"PolicyNames": [
"ELBSecurityPolicy-2015-03"
]
}
],
"HealthCheck": {
"HealthyThreshold": 2,
"Interval": 30,
"Target": "HTTP:80/png",
"Timeout": 3,
"UnhealthyThreshold": 2
},
"VPCId": "vpc-a01106c2",
"BackendServerDescriptions": [
{
"InstancePort": 80,
"PolicyNames": [
"my-ProxyProtocol-policy"
]
}
],
"Instances": [
{
"InstanceId": "i-207d9717"
},
{
"InstanceId": "i-afefb49b"
}
],
"DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com",
"SecurityGroups": [
"sg-a61988c3"
],
"Policies": {
"LBCookieStickinessPolicies": [
{
"PolicyName": "my-duration-cookie-policy",
"CookieExpirationPeriod": 60
}
],
"AppCookieStickinessPolicies": [],
"OtherPolicies": [
"my-PublicKey-policy",
"my-authentication-policy",
"my-SSLNegotiation-policy",
"my-ProxyProtocol-policy",
"ELBSecurityPolicy-2015-03"
]
},
"LoadBalancerName": "my-load-balancer",
"CreatedTime": "2015-03-19T03:24:02.650Z",
"AvailabilityZones": [
"us-west-2a"
],
"Scheme": "internet-facing",
"SourceSecurityGroup": {
"OwnerAlias": "123456789012",
"GroupName": "my-elb-sg"
}
}
]
}
--query 옵션을 지원하기 때문에 특정 컬럼만 조회할 수도 있다. 예로 들어, LoadBalancerName, InstanceId 컬럼 필터링은 아래와 같은 명령어로 할 수 있다.
aws elb describe-load-balancers \
--load-balancer-names <LB_NAME> \
--query LoadBalancerDescriptions[].[LoadBalancerName,Instances[].InstanceId]
# 실행 결과
[
[
"ielb-an2",
[
"i-0fd7598415a000000",
"i-00d529bed50000000"
]
]
]
target intance 등록
특정 CLB에 target instance를 연결할 때는 register-instances-with-load-balancer 명령을 사용한다. 옵션으로 로드밸런서의 이름과 연결할 EC2 인스턴스의 ID를 전달해야 한다.
aws elb register-instances-with-load-balancer \
--load-balancer-name my-load-balancer \
--instances i-d6f6fae3
# 실행 결과
{
"Instances": [
{
"InstanceId": "i-d6f6fae3"
},
{
"InstanceId": "i-207d9717"
},
{
"InstanceId": "i-afefb49b"
}
]
}
인스턴스 ID는 공백으로 구분하여 여러 개를 전달할 수 있다.
aws elb register-instances-with-load-balancer \
--load-balancer-name my-load-balancer \
--instances InstanceId1 InstanceId2 InstanceId3
target instance 등록 해제
특정 CLB에 연결된 target instance를 해제할 때는 deregister-instances-from-load-balancer 명령을 사용한다. 옵션으로 로드밸런서의 이름과 연결을 해제할 EC2 인스턴스의 ID를 전달해야 한다.
aws elb deregister-instances-from-load-balancer \
--load-balancer-name my-load-balancer \
--instances i-d6f6fae3
# 실행 결과
{
"Instances": [
{
"InstanceId": "i-207d9717"
},
{
"InstanceId": "i-afefb49b"
}
]
}
register와 마찬가지로 인스턴스 ID는 공백으로 구분하여 여러 개를 전달할 수 있다.
참고 문서
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/index.html
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elb/describe-load-balancers.html