웹 서버에서 WAS로 트래픽을 라우팅 할 수 있도록 NLB를 생성하려고 한다.
NLB는 3000 포트로 트래픽을 수신받아 WAS의 3000 포트로 라우팅 하도록 하려고 한다.
생성 방법
1. EC2 서비스의 왼쪽 메뉴바에서 로드 밸런서를 클릭한다.
2. 로드 밸런서 생성 버튼을 클릭한다.
3. Network Load Balancer를 선택한다.
4. NLB 생성을 위한 구성 정보를 설정한다
4-1) 기본 구성
VPC 내부에서 동작하기 때문에 내부 체계를 선택한다.
4-2) 네트워크
NLB가 위치할 VPC, AZ, 서브넷을 선택한다.
4-3) 리스너 및 라우팅
TCP 3000포트로 수신받은 트래픽을 대상 그룹으로 전달하도록 한다.
필요시 대상 그룹을 생성한다.
ALB 대상 그룹과 동일하게 인스턴스 유형을 선택한다. 프로토콜과 포트는 TCP와 3000으로 지정한다.
대상 그룹에 WAS Server를 등록한다. 3000 포트로 전달하도록 한다.
리스너까지 설정이 되었다면, 구성을 검토하고 로드 밸런서를 생성한다.
5. 보안그룹 규칙 추가
NLB를 통해 EC2 인스턴스가 통신할 때에는 Client가 Server를 대상으로 아웃바운드 트래픽을 허용해야 하며, Server가 Client를 대상으로 인바운드 트래픽을 허용해야 한다.
따라서 Web Server의 SG에 아웃바운드 규칙을 추가한다. 규칙은 WAS의 SG를 대상으로 지정하고, 3000 포트를 지정한다. WAS의 SG에는 인바운드 규칙을 추가한다. 규칙은 Web Server의 SG를 대상으로 지정하고, 3000 포트를 지정한다.
6. Web Server Nginx 설정 변경
Nginx가 기본 페이지를 사용하는 것 대신 생성한 NLB로 트래픽 라우팅 할 수 있도록 설정해야 한다.
기본 페이지 사용 설정 삭제
rm /etc/nginx/sites-enabled/default
프록시 설정
cat /etc/nginx/conf.d/nlb.conf
server {
listen 80;
location / {
proxy_pass http://inlb-redmine-internal-68f8ebe5c097e083.elb.ap-northeast-2.amazonaws.com:3000; # 트래픽 전달할 nlb 엔드포인트:포트 번호
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
}
}
여기까지 진행했을 때, 딱히 이상이 없다면 redmine 서비스가 동작하는 것을 웹 상에서 확인할 수 있다.