LabHub

Tomcat & nginx 운영 · 업스트림 부하분산과 장애 격리 · 퀴즈

퀴즈: 업스트림 부하분산

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. nginx 오픈소스판의 `max_fails=3 fail_timeout=30s` 설정이 의미하는 것은?

    1. 30초마다 헬스체크 URL 을 호출해 3번 실패하면 제외한다
    2. 실제 요청 처리 중 30초 안에 3번 실패하면 그 서버를 30초 동안 제외한다
    3. 3초 안에 응답하지 않으면 30번 재시도한다
    4. 서버당 최대 3개의 커넥션만 허용한다
  2. 업스트림 Keep-Alive 를 켤 때 반드시 함께 설정해야 하는 세 가지는?

    1. keepalive, proxy_read_timeout, gzip
    2. keepalive, proxy_http_version 1.1, proxy_set_header Connection ""
    3. keepalive, ip_hash, least_conn
    4. keepalive, client_max_body_size, proxy_buffering
  3. 업스트림 Keep-Alive 를 설정하지 않아 매 요청마다 커넥션이 생성될 때 장기적으로 나타나는 증상은?

    1. 커넥션 객체가 회수되지 않고 쌓여 프록시 메모리가 계속 늘어난다
    2. 매번 새 연결로 압축 협상을 다시 해 gzip 압축률이 떨어진다
    3. 연결 수립·종료가 매번 기록되어 액세스 로그가 빠르게 커진다
    4. TIME_WAIT 소켓이 쌓여 로컬 포트가 고갈되고 간헐적으로 연결이 실패한다
  4. `ip_hash` 를 쓰는 시스템에서 백엔드 서버를 한 대 추가했을 때 주의할 점은?

    1. 서버 수가 바뀌면 ip_hash 지시자가 문법 오류로 처리되어 reload 가 실패한다
    2. 새 서버에는 가중치가 없어 기존 서버들의 weight 설정이 초기화된다
    3. 업스트림 구성이 바뀌면서 SSL 세션 캐시가 비워져 재협상이 몰린다
    4. 해시 대상이 바뀌어 일부 클라이언트가 다른 서버로 가고, 메모리 세션이면 로그아웃된다
  5. 요청 처리 시간 편차가 큰 서비스(빠른 조회와 느린 리포트가 섞임)에서 라운드로빈보다 `least_conn` 이 나은 이유는?

    1. 요청 건수를 서버마다 정확히 균등하게 나눠 주기 때문에
    2. 처리 중인 연결이 적은 쪽으로 보내므로, 느린 요청이 몰린 서버를 피하기 때문에
    3. 각 서버의 CPU 사용률을 재서 여유 있는 쪽으로 보내기 때문에
    4. 서버별 평균 응답 시간을 캐시해 두고 빠른 쪽을 고르기 때문에
  6. 부하분산 환경에서 액세스 로그에 `$upstream_addr` 를 반드시 남겨야 하는 이유는?

    1. 로그 크기를 줄이기 위해
    2. gzip 압축률을 계산하기 위해
    3. SSL 인증서를 검증하기 위해
    4. 특정 백엔드에서만 발생하는 오류를 식별하기 위해