프로그래밍 공부하기

배포했는데 웹소켓이 안 됨 본문

ErrorLog

배포했는데 웹소켓이 안 됨

ihl 2021. 4. 27. 00:11

ELB

  최근 실시간 웹소켓 통신을 활용한 프로젝트를 진행하였다. 그런데 AWS EC2와 S3에 배포하니 웹소켓부분에서 오류가 발생했다! 왜 이런일이 발생했는지 찾아보았더니 다음과 같은 자료를 얻었다.

 

기능 Application Load Balancer Network Load Balancer Gateway Loac Balancer Classic Load Balancer
로드 밸런서 유형 계층 7 계층 4 계층 3 게이트웨이 + 계층 4 로드 밸런싱 계층 4/7
대상 유형 IP, 인스턴스, Lambda IP, 인스턴스 IP, 인스턴스  
WebSocket  
지원 네트워크/플랫폼 VPC VPC VPC EC2-Classic, VPC

 

 

  표를 보면 CLB는 WebSocket을 지원하지 않는다는 사실을 발견할 수 있다! 원인을 발견했으니 해결해보자. 방법은 2가지다.

  1. CLB에서 http, https 프로토콜을 TCP(80, 443)로 바꾼다
  2. WebSocket을 지원하는 ELB로 교체한다.(ALB, NLB)

1. CLB에서 해결

 

수정된 리스너

  로드밸런서의 리스너 항목에서 원래 HTTP, HTTPS로 되어있던 부분을 위와 같이 TCP, TCP(with SSL)로 변경하면 CLB를 쓰는 환경에서도 웹소켓을 사용할 수 있다.(물론 HTTP에서 지원하던 스티키세션 옵션 등은 사용할 수 없게된다.)

 

 

2. 다른 ELB로 교체

ELB 종류

  ALB와 NLB 등 이미 웹소켓을 지원하는 ELB 인스턴스로 교체하는 방식이다. 나는 이번에 ELB를 처음 써봐서 어떤 블로그 글을 따라했는데 글에서 CLB를 쓰길래 큰 고민없이 일단 CLB를 썼다. 하지만 더 알아보니 CLB를 쓰지 않고 ALB를 써서 웹서버 배포를 진행하는 글도 많았다. 사실 AWS에서 위 그림처럼 CLB는 이전세대라면서 비활성화된 것처럼 회색으로 표시하길래 '요즘에는 안쓰나?'라는 생각도 들었긴 했다... 배포가 급해서 마음의 여유가 없어 충분한 조사를 하지 못했던 것 같다. 이젠 마음이 급해도 여러 개의 글을 보고 확실하게 기술에 대해 안 다음에 적용해야겠다.

 

  이번에는 이미 CLB로 배포해서 CLB옵션을 변경해서 문제를 해결했지만, 다음 기회가 있다면 ALB나 NLB를 사용하여 배포해봐야겠다. 또한 ALB, NLB, GLB에 대해서도 공부해봐야겠다.

 

  +서버를 재배포했는데 CLB가 제대로 작동하지 않는 오류가 생겨 이 기회에 ALB로 새로 작성했더니 바로 성공했다!

 


aws.amazon.com/ko/elasticloadbalancing/features/

 

'ErrorLog' 카테고리의 다른 글

[PowerShell] UnauthorizedAccess  (0) 2021.05.14
ELB 502 Error  (3) 2021.04.30
ELB 503 Error  (0) 2021.04.27
[VMware] Ubuntu 네트워크 아이콘이 사라졌을 때  (0) 2021.04.20
Command 'go' not found, but can be installed with:  (0) 2021.03.13
Comments