program tip

VPC의 Amazon ELB

radiobox 2020. 10. 31. 09:33
반응형

VPC의 Amazon ELB


Amazon EC2를 사용하고 있으며 프라이빗 서브넷의 2 개 인스턴스에 ELB (로드 밸런서)를 배치하려고합니다. ELB에 프라이빗 서브넷을 추가하기 만하면 연결이 이루어지지 않고 두 서브넷을 모두 ELB에 연결하면 인스턴스에 액세스 할 수 있지만 종종 시간 초과가 발생합니다. VPC의 프라이빗 서브넷 내에서 ELB를 성공적으로 구현 한 사람이 있습니까? 그렇다면 절차에 대해 설명해 주시겠습니까?

감사


팀원과 저는 서로 다른 가용 영역에 2 개의 프라이빗 서브넷이있는 VPC에 ELB를 구현했습니다. 시간 초과가 발생하는 이유는로드 밸런서에 추가하는 각 서브넷에 대해 하나의 외부 IP 주소를 가져 오기 때문입니다. ( 'dig elb-dns-name-here'를 시도하면 여러 IP 주소가 표시됩니다). 이러한 IP 주소 중 하나가 프라이빗 서브넷을 매핑하면 시간 초과됩니다. 퍼블릭 서브넷에 매핑되는 IP가 작동합니다. DNS는 IP 주소 중 하나를 제공 할 수 있기 때문에 때로는 작동하고 때로는 시간 초과됩니다.

Amazon과 몇 번의 왕복 끝에 ELB는 인터넷 게이트웨이로가는 경로가있는 서브넷 인 '퍼블릭'서브넷에만 배치되어야한다는 것을 발견했습니다. 우리는 웹 서버를 프라이빗 서브넷에 유지하면서 ELB가 그들과 통신 할 수 있도록하고 싶었습니다. 이를 해결하기 위해 프라이빗 서브넷이있는 각 가용 영역에 해당하는 퍼블릭 서브넷이 있는지 확인해야했습니다. 그런 다음 각 가용성 영역의 퍼블릭 서브넷 인 ELB에 추가했습니다.

처음에는 작동하지 않는 것 같았지만 모든 것을 시도한 후에 ELB를 다시 만들고 모든 것이 정상적으로 작동했습니다. 나는 이것이 버그라고 생각하거나 ELB는 너무 많은 변화로 인해 이상한 상태에 있었다.

다음은 우리가 한 것입니다.

  1. WebServer-1은 web-server라는 보안 그룹과 함께 가용성 영역 us-east-1b의 PrivateSubnet-1에서 실행됩니다.
  2. WebServer-2는 가용 영역 us-east-1c의 PrivateSubnet-2에서 web-server라는 보안 그룹과 함께 실행됩니다.
  3. us-east-1b 영역에 퍼블릭 서브넷을 생성했으며이를 PublicSubnet-1이라고합니다. 인터넷 게이트웨이 (ig-xxxxx)에 대한 경로를 포함하는 라우팅 테이블을이 새 서브넷과 연결했는지 확인했습니다. (마법사를 사용하여 퍼블릭 / 프라이빗 VPC를 생성 한 경우이 경로가 이미 존재합니다.)
  4. us-east-1c 영역에 퍼블릭 서브넷을 생성했으며이를 PublicSubnet-2라고합니다. 인터넷 게이트웨이 (ig-xxxxx)에 대한 경로를 포함하는 라우팅 테이블을이 새 서브넷과 연결했는지 확인했습니다. (마법사를 사용하여 퍼블릭 / 프라이빗 VPC를 생성 한 경우이 경로가 이미 존재합니다.)
  5. 새 ELB를 만들어 PublicSubnet-1 및 PublicSubnet-2 (PrivateSubnet-X 아님)를 추가했습니다. 또한 ELB에서 실행할 인스턴스 (이 경우 WebServer-1 및 WebServer-2)를 선택했습니다. 들어오는 포트 80 및 443을 허용하는 보안 그룹을 할당했는지 확인했습니다.이 그룹을 elb-group이라고 부르겠습니다.
  6. 웹 서버 그룹에서 elb-group의 포트 80 및 443에서 트래픽을 허용합니다.

도움이 되었기를 바랍니다.


여기서 핵심은 ELB에 "서브넷 / 가용성 영역을 추가"하는 것이 아니라 ELB 인스턴스를 넣을 서브넷을 지정하는 것임을 이해하는 것입니다.

예, ELB는 소프트웨어로드 밸런서이며 ELB 객체를 생성하면 사용자 지정로드 밸런싱 EC2 인스턴스가 지정한 모든 서브넷에 배치됩니다. 따라서 ELB (해당 인스턴스)에 액세스 할 수 있으려면 IGW를 통해 구성된 기본 경로가있는 서브넷에 배치해야합니다 (대부분 이러한 서브넷을 공용으로 분류 했음).

따라서 위에서 이미 답변했듯이 ELB에 대해 "퍼블릭"네트워크를 지정해야하며 이러한 네트워크는 EC2 인스턴스가 실행중인 AZ에서 가져와야합니다. 이 경우 ELB 인스턴스는 EC2 인스턴스에 도달 할 수 있습니다 (보안 그룹이 올바르게 구성된 경우).


모든 ELB가 퍼블릭이어야한다는 진술이 완전히 사실이 아니기 때문에 프라이빗 서브넷에 ELB를 구현했습니다. NAT가 필요합니다. 프라이빗 ELB의 프라이빗 서브넷을 만들고 VPC DNS를 켠 다음 프라이빗 라우팅 테이블이 NAT를 통과하도록 구성되어 있는지 확인합니다. 서브넷 보안 그룹은 ELB와 앱 간의 트래픽과 앱 대 DB 서브넷 간의 트래픽을 허용하도록 설정해야합니다.

Beanstalk 상태 확인은로드 밸런서에 도달 할 수 없기 때문에 작동하지 않지만, 공개 범위 외부에 있어야하는 서비스의 경우 이는 좋은 절충안입니다.

VPC 아키텍처를 시작하기위한 권장 자료 : http://blog.controlgroup.com/2013/10/14/guided-creation-of-cloudformation-templates-for-vpc/ .


다음 설정을 추가해야합니다.

  1. 퍼블릭 서브넷 영역 b = 서버 NAT
  2. 프라이빗 서브넷 영역 c = 서버 웹
  3. 퍼블릭 서브넷 영역 c = ELB

트릭은 라우팅입니다.

  1. NAT에 대한 라우터는 게이트웨이 A에 연결됩니다.
  2. 서버 웹에 대한 라우터는 NAT에 연결됩니다.
  3. 퍼블릭 서브넷에 대한 라우터는 게이트웨이 A와 연결됩니다.

ELB 세부 정보 :

1. 영역 : 공용 서브넷 영역 c 2. 인스턴스 : 서버 웹 3. 보안 그룹 : 포트 활성화

http://docs.amazonaws.cn/en_us/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html

참고 URL : https://stackoverflow.com/questions/9257514/amazon-elb-in-vpc

반응형