강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

sin님의 프로필 이미지
sin

작성한 질문수

비전공자도 이해할 수 있는 Nginx 입문/실전

[실습] 하나의 EC2에서 백엔드 서버 2개를 로드 밸런싱 시키기

로드밸런싱 Server ID 출력에 관한 질문

작성

·

4

0

로드 밸런싱 대상 서버들을 upstream이라는 그룹으로 묶는 코드에 질문이 있습니다.

upstream backend {

server localhost:8080;

server localhost:8081;

}

 

위 코드에서는 사실 서버는 1대이고, 포트번호만 8080과 8081로 로드밸런싱한 것 아닌가요?

 

실제로 서버 2대로 로드밸런싱을 하려면 localhost:8080과 localhost:8081 자리에 서버 도메인 주소가 들어가면 되는 건가요?

또한, 제가 말한 것이 맞다면 /health에 요청할 때마다 나타나는 Server ID는 같아야 하는 것인데, 왜 다르게 나오는 건가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. sin님.

Nginx에서 로드밸런싱 설정 관련한 질문을 주셨네요. 질의에 대한 답변을 드리겠습니다.

1. 포트를 이용한 로드밸런싱 vs. 실제 서버

  • 단일 서버, 다른 포트: 현재 설정하신 부분처럼 localhost:8080localhost:8081을 사용하는 경우, 동일한 물리 서버 안에서 다른 포트를 통해 로드밸런싱을 수행하는 것입니다. 이는 서버 하나에서 여러 포트를 통해 처리하는 방식이며, 실제로는 하나의 서버를 활용한 것이 맞습니다.

  • 다수의 실제 서버: 여러 대의 실제 서버에 로드밸런싱을 적용하려면, localhost:8080 대신 각 서버의 도메인 이름이나 IP 주소를 사용해야 합니다.

    upstream backend {
      server server1.example.com:8080;
      server server2.example.com:8080;
    }
    

    위와 같이 설정하면 여러 대의 서버에 대해 로드밸런싱을 할 수 있습니다.

2. /health 요청 시 Server ID 다르게 나타나는 이유

  • 같은 물리 서버 내의 다른 포트라도 Nginx는 각 요청을 독립적으로 처리하며, 설정된 순서에 따라 디폴트 로드밸런싱 방법(예: round-robin)을 사용하여 트래픽을 분산합니다. 이로 인해 /health 요청을 보낼 때마다 Server ID가 달라질 수 있습니다. 로드밸런싱은 균등하게 요청을 분산하기 위함이기 때문입니다.

추가 정보

  • 만약 실제 서버 각각에 대한 Health Check를 구현하고 싶으시다면, 서버 측에서 별도의 ID를 반환하도록 코드 수정이 필요할 수 있습니다.

질문에 대한 이해를 돕기 위해 관련 정보를 좀 더 찾아보시길 권장드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

sin님의 프로필 이미지
sin

작성한 질문수

질문하기