인프런 커뮤니티 질문&답변
로드밸런싱 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:8080과localhost: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를 반환하도록 코드 수정이 필요할 수 있습니다.
질문에 대한 이해를 돕기 위해 관련 정보를 좀 더 찾아보시길 권장드립니다.
- Nginx 로드밸런싱 설정 방법: 다양한 로드밸런싱 방법과 설정 팁을 확인해보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




