웹서버 부하분산
태그 :
- 개념
- SLB(Server Load Balancing)의 정의 - 인터넷 트래픽을 동일한 서비스를 제공하는 여러 개의 서버들(서버풀)을 효율적으로 배분하여 서버의 부하를 분산시켜 서버자원의 가용성을 확보하고자 하는 개념.
I. 웹서비스 가용성 확보를 위한 웹서버 부하분산, SLB의 개요
가. SLB(Server Load Balancing)의 정의
- 인터넷 트래픽을 동일한 서비스를 제공하는 여러 개의 서버들(서버풀)을 효율적으로 배분하여 서버의 부하를 분산시켜 서버자원의 가용성을 확보하고자 하는 개념.
나. SLB의 장점
- 하나의 서버에 트래픽이 집중되는 것을 막아주고 서버의 트래픽지연으로 인해 발생할 수 있는 대역폭의 낭비도 줄일 수 있음
- 하나의 서버에 문제가 발생하더라도 나머지 서버들에 의해 애플리케이션과 데이터로 접속가능.
- 사용자가 늘어나고 서버들의 처리용량이 부족하게 되는 경우, 기존서비스에 영향을 주지않고 새로운 서버를 서버풀에 추가가능
II. 웹서버 부하에 따른 문제점과 캐시
- 웹서비스의 보편화, NW인프라의 향상, 멀티미디어 콘텐츠의 확산으로 웹서버의 부하가 지속적 증가
웹서버 부하에 따른 문제점 |
웹서버 부하 대응을 위해 활용 가능한 캐시 |
- 웹서버 부하에 대응하기 위한 효율적인 방법으로 캐시서버가 중요한 역할을 차지하고 있음
III. 캐시서버를 이용한 웹서버 부하 대응 메커니즘 및 캐시서버 구성방안
가. 캐시서버를 이용한 웹서버 부하 대응 메커니즘
- 중복된(정적) 컨텐츠에 대한 요청을 캐시 서버가 대신 처리하여 원본(웹)서버의 부하를 방지
* 동작원리
- 해당 오브젝트의 헤더정보를 참조해 캐싱유무판단
- 기본적으로 암화화되거나 인증이 필요한 오브젝트에 대해서는 캐싱을 하지 않음
- 최초 캐싱된 오브젝트는 재차 방문시 웹 서버쪽으로 요청하지 않고 바로 웹캐시서버 이용해 사용자에게 전달됨.
-재차 방문시부터 여러가지 캐싱 유무 판단 항목들로 ‘fresh/stale’에 대한 검증 후 원본 서버 참조 유무를 결정
-해당 오브젝트가 유효기간이 만료된 경우 다시 원본 웹서버 요청해 오브젝트를 갱신
나. 캐시서버 구성방안
구성방안 |
구성도 및 설명 |
Forward 캐시 |
사용자 구간에 설치 • 사내 인터넷 구간설치용 • 특징 : 구성 간편, 인터넷구간 회선비용 절감, 사용자의 설정 변경 필요, Hit Ratio 50%미만 |
Reverse 캐시 |
• 서버 앞 구간에 설치 • 웹서비스 운용자 설치용 • 특징 : Hit Ratio 90%이상, 웹서버 부하경감효과 높음, 캐시서버 장애 시 전체 서비스장애 발생, 사용자 설정 변경 없음 |
Trans- parent 캐시 |
• 라우터 통해 트래픽 우회 • Reverse캐시의 장애문제 대응 통해 가용성 향상 • 보편적 구성 방식 - Hit Ratio 90%이상 |
- Transparent한 구성 방식이 현실적인 대안으로 사용하기에 적합함
IV. 효율적 부하분산을 위한 캐시버서 구성 방안
가. 캐시서버의 효율적 구성을 위한 측정기준
측정기준 |
세부 내용 |
Hit |
• Hit ratio : 점점 증가하다 일정 수준을 유지 (캐시의 효과를 보여주는 척도) |
Miss |
|
Freshness & Validation |
• Freshness : 정의된 시간동안 캐시서버에서 직접 응답 ex)max-age=24hr • Validation : 정의된 시간초과 후 원본서버에 요청된 컨텐츠의 변경여부 확인 Ex) 304 not-modified 인경우 캐시서버에서 직접 응답 |
- 캐시서버 구성 전/후/주기적으로 측정값을 비교하고 튜닝하는 활동이 필요
나. 효율적 구성방안
구성방안 |
구 성 도 |
설 명 |
측정지표 |
• 주기적 튜닝 및 초기화 (Freshness, validation) => Hit Ratio 최대화 목표 |
• Freshness : 24hr |
컨텐츠 분리 |
• Cacheable : 정적컨텐츠, Get 등 캐시구성시 효과 높음 • non-cacheable : 동적컨텐츠,SSL,no-cache,set- cookie등 캐시구성시 효과 없음 |
• 정적 : gif, jpg, html 등 • 동적 : jsp,php,asp |
서비스 구성 |
• 서비스도메인 분리 : 정적/동적컨텐츠를 분리하여 서비스 |
• 정적 : xxx/image/~ • 동적 : xxx/web/~ |
유지관리 |
• 캐시서버와 원본서버간의 주기적인 contents 동기화 |
• 서비스 적은시간 : 6am |
H/W |
• 캐시서버 : SSD구성/ (G)SLB통한 부하 분산 • 원본서버 : NAS/SAN 통한 지연시간 최소화 |
• CDN서비스 연계 공간 지역성 활용 |
V. 캐시서버의 활용 고도화
VI. 웹개싱 효율을 높이기 위한 고려사항
- 캐싱정책 : 기본적인 웹캐싱 동작원리가 새로운 오브젝트를 저장하고 그 오브젝트에 대한 갱신주기를 판단해 적절한 오브젝트를 전송하는 것이기 때문에 적절한 갱신주기 측정과 환경설정은 효율적 캐싱을 위한 요소임.
- 성능관련 옵션조정 : 웹서비스에 캐싱 서버를 적용함에 있어서 효율을 높이기 위해 서비스별, 컨텐츠별 속성에 따라 갱신주기를 달리하고 기본적인 캐싱옵션들을 설정한후 서버의 성능요소 조정.(ex) connetion time-out, Keep-alive time-out등
- 웹서버(원본서버)성능개선 : 원본과 캐싱서버에서는 단일 서비스형태가 아닌 다양한 형태의 서비스를 동시에 관리하고 있음.