안녕하세요 서후아빠입니다. ^_^
이번 세션은 Endpoint를 이용하여 vpcA에 위치하는 nlbA를 vpcB에 위치하는 nlbB와 연결하고, 결국은 nlbB에 연결되어 있는 ec2에 전달되는 구성입니다. 현실적으로 쓸지는 모르지만, 개인적으로 VPC간 ELB 연결을 어떻게 가능할까 궁금하여 고민을 하다가 만들어봤습니다.
구성도
vpcA의 nlbA로 서비스 요청이 오면 nlbB의 Endpoint를 거쳐 ec2로 전달되는 구성입니다. 보시는 것처럼 여러번의 NAT가 발생하여 소스IP 추적은 어려울 것으로 판단됩니다. 소스 IP를 확인하고자 한다면 nlbA에서 발생하는 로그를 S3에 저장하여 확인하시면 됩니다.(https://sh-t.tistory.com/50 참조) |
사전 작업
인프라 생성 : vpc, subnet, igw, routing table, ec2 등은 설명 생략합니다.
2022.07.02 - [Networking] - [실습] Amazon VPC 구성요소 생성하기
※ priB-ec2-a, priB-ec2-c는 wordpress 설치하여 HTTP 준비
# WordPress로 인스턴스를 생성하거나 아래처럼 직접 WordPress(or 웹서비스)를 설치
sudo yum install httpd -y
cat /var/www/html/index.html
<html><body>hello World1</body></html> // priB-ec2-a
<html><body>hello World2</body></html> // priB-ec2-c
sudo systemctl start httpd.service
# HTTP 서비스 Listen 상태 확인
netstat -tupan | grep 80
1단계 : 대상 그룹 생성
EC2 > Target groups > Create a target group
구분 | Specify group details | Target registration | ||
NLB 경우 | Choose the target type : instance target group name : nlbB-tg Protocol(Version):Port : TCP:80 VPC : vpcB health check protocol : TCP |
available instances : priB-ec2-a, priB-ec2-c Ports for selected instances : 80 (Include as pending below) ※ 포트 상태 정상 확인 |
2단계 : 로드 밸런서 생성
EC2 > Load balancer > Create a load balancer
구분 | basic configuration | network mapping | security group | listeners and routing |
NLB 경우 | load balancer name : nlbB system : internal |
VPC : vpcB Subnet : priB-sn-a, priB-sn-c |
- | Protocol:Port : TCP:80 Forward to : nlbB-tg |
3단계 : 상태 체크 결과 확인
EC2 > Target groups > nlbB-tg > Targets (tab) > Health status “healthy”
4단계 : Endpoint 서비스 및 Enpoint 생성
VPC > Endpoint services > Create endpoint service
구분 | Name | Load balancer type | Available load balancers |
내용 | nlbB-ep-svc | gateway | nlbB |
Acceptance required : 엔드포인트 생성시 엔드포인트와 연결되는 엔드포인트 서비스에서 수락을 해주어야 엔드포인트가 활성화되게 하는 기능으로 귀찮으면 체크 해제하면 자동 수락됩니다. Endpoint 서비스는 ALB로는 생성되지 않기 때문에 NLB로 진행합니다. |
VPC > Endpoint services > nlbB-ep-svc > Endpoint connections > Endpoint service 선택 > Actions > Accept endpoint connection request > Accept
VPC > Endpoint services > nlbB-ep-svc > Details (tab) > Service name 확인 (ex : com.amazonaws.vpce.ap-northeast-2.vpce-svc-06e2134183abddfbc)
VPC > Endpoints > Create endpoint
구분 | Endpoint settings | Service settings | VPC |
1 | Name : nlbB-ep-a1 Service category : Other endpoint services |
com.amazonaws.vpce.ap-northeast-2.vpce-svc-06e2134183abddfbc > Verify service > Service name verified | VPC : vpcA Subnet : pubA-sn-a |
2 | Name : nlbB-ep-c1 Service category : Other endpoint services |
com.amazonaws.vpce.ap-northeast-2.vpce-svc-06e2134183abddfbc > Verify service > Service name verified | VPC : vpcA Subnet : pubA-sn-c |
5단계 : 대상 그룹 생성
EC2 > Target groups > Create a target group
구분 | Specify group details | Target registration | ||
NLB 경우 | Choose the target type : IP addresses target group name : nlbA-tg Protocol(Version):Port : TCP:80 VPC : vpcA health check protocol : TCP |
available instances : nlbB-ep-a1의 IP, nlbB-ep-c1의 IP Ports for selected instances : 80 (Include as pending below) ※ 포트 상태 정상 확인 |
6단계 : 로드 밸런서 생성
EC2 > Load balancer > Create a load balancer
구분 | basic configuration | network mapping | security group | listeners and routing |
NLB 경우 | load balancer name : nlbA system : internet-facing |
VPC : vpcA Subnet : pubA-sn-a, pubA-sn-c |
- | Protocol:Port : TCP:80 Forward to : nlbA-tg |
7단계 : 상태 체크 결과 및 접속 도메인 확인
EC2 > Target groups > nlbA-tg > Targets (tab) > Health status “healthy”
EC2 > Load balancer > nlbA > Description (tab) : DNS name 확인
8단계 : 부하분산 테스트
브라우져에서 7단계에서 확인한 nlbA 도메인으로 HTTP 접속