18
아꿈사 박 기 덕 5.7 웹 서버 로그관리

로그 수집, 집약

  • Upload
    kidoki

  • View
    908

  • Download
    6

Embed Size (px)

Citation preview

Page 1: 로그 수집, 집약

아꿈사 박 기 덕

5.7 웹 서버 로그관리

Page 2: 로그 수집, 집약

웹 서버 로그

• 하나의 서비스는 여러대의 웹 서버로 제공

• 분산해서 출력되는 로그의 집약, 수집 필요

• 집약 : 출력하는 로그를 한곳으로 전송해 모으는 것

• 수집 : 각 서버상에 출력된 로그를 정기적으로 모아서 저장하는 것

• 로그를 수집하는 목적은 주로 집계와 분석, 보존

• 집약과 수집 모두 로그를 모으는 것이지만, 정밀도의 차이

Page 3: 로그 수집, 집약

로그 집약 (SYSLOG)

• mod_log_spread, logger를 이용해 아파치 로그를 syslog로 출력

• Syslog에는 기능성과 우선순위 설정

Page 4: 로그 수집, 집약

로그 집약 (SYSLOG-NG)

• 다양한 옵션을 수행해주는 syslog-ng

• 출력할 로그의 필터링, 회전, 디렉토리 자동생성 등의 기능 제공

• 로그에 관한 메타정보를 동적으로 나타내는 매크로 기능 제공

Page 5: 로그 수집, 집약

로그 수집

• 대부분 부하가 적은 새벽에 하루전 로그를 수집

• Hatena 환경에서는 로그의 수집과 동시에 오래된 로그 정리

• 오래된 로그의 경우 삭제 또는 압축하여 관리

• cron을 사용해 로그파일을 리네임하고 아파치를 재시작하여 로그 회전

• rotatelogs를 사용해 로그를 넘겨받으며 회전

• cron, rotatelogs 두개 모두 정확한 회전은 불가능

Page 6: 로그 수집, 집약

로그 서버

• 로그 수집, 집계, 분석 등의 작업을 위한 로그 서버 구축 필요

• 서비스를 제공하는 서버가 동시에 로그서버 역할을 하는 것은 지양

• Hatena의 경우 프라이머리용, 백업용 2대의 로그서버 유지

• 백업용 로그서버가 없을 경우에도 로그파일은 별도 보관 필요

Page 7: 로그 수집, 집약

아꿈사 박 기 덕

6.1 HATENA의 내부

Page 8: 로그 수집, 집약

HATENA 인프라

• Hatena 다이어리, 북마크, 인력검색 의 웹서비스 제공

• 2008.02 시점 월간 약 970만 트래픽 발생(unique user)

• 자전주의

(독자적으로 모든 일을 수행하는 기업 경영 원칙)

• 오픈소스주의

Page 9: 로그 수집, 집약

확장성과 안전성 (리버스 프록시)

• 부하분산을 위해 LVS(IPVS) + keepalived 이용

• LVS 서버의 스토리지로 하드디스크 대신 컴팩트플래스 이용

• 리버스 프록시에 mod_proxy 사용, 부하분산에 LVS 사용

• 리버스 프록시와 AP서버 사이에 Squid를 이용, 최대한 캐시해 부하 감소

• 저자가 개발한 Dos 공격 차단 프로그램 mod_dosdetector 사용

• 아파치 전면에 lighttpd 아키텍쳐 적용으로 효율 향상

Page 10: 로그 수집, 집약

확장성과 안전성 (DB)

• DB는 MySQL 4.0 계열과 MySQL 5.0계열 공존(타임스탬프 동작으로 인한)

• MySQL 리플리케이션에 의해 마스터/슬레이브 구성 사용

• MySQL 5.0 계열에서는 멀티마스터 구성으로 다중화 실현

Page 11: 로그 수집, 집약

확장성과 안전성 (DB)

• 멀티마스터 구성시 auto increment 경합 문제 발생

• auto_increment_offset을 통해 값을 지정해 해결 (P. 341)

• 각각의 마스터 서버에 keepalived를 실행하고 VRRP에 의한 Active/Standby 구성

• 컬럼 추가, 변경등의 유지보수 작업 시 서비스에 영향을 주지 않음

• 컬럼을 삭제하는 작업의 경우 에러 발생 가능 (리플리케이션이 정지되는 경우 서비스의 정지를 동반하는 작업 필요)

Page 12: 로그 수집, 집약

확장성과 안전성 (DB)

• 멀티마스터의 슬레이브 추가시 장애처리

• A의 마스터가 장애시 A의 슬레이브에 갱신정보 미전달

• 장애 미발생한 B의 마스터가 A의 슬레이브에도 갱신정보 전달 시 Best

• 단, 리플리케이션 구조상 현재는 불가능 (추후 해결해야할 과제)

• 현재는 장애발생시 장애가 발생한 슬레이브 DB 중지

Page 13: 로그 수집, 집약

확장성과 안전성 (파일 서버)

• DRBD + keepalived 로 다중화 구성

• lighttpd에 의한 API, Squid 캐시 도입으로 다중성과 빠른 속도 유지

• DRBD로 다중화한 블록 디바이스를 OCFS2 클러스터 파일시스템으로 포맷

• Active 측에서 서비스를 제공, Backup측에서 백업을 수행해, 일일백업에 의

한 I/O 부하가 서비스에 영향을 받지 않도록 설계

Page 14: 로그 수집, 집약

운용효율 향상

• 새로운 서버를 인프라에 추가할 시 대부분 자동화를 통해 시간단축

• 서버조립이 완료되고 BIOS 설정이 끝나면 킥스타트로 OS 설치

• 무엇이든 rpm 패키지화 & yum 설치로 자동화 구현

• puppet을 이용 설정 자동화

• 빈번한 수정이 필요한 http.conf나 my.cnf등은 관리자가 직접 수정

Page 15: 로그 수집, 집약

운용효울 향상

• 서버의 정보 관리를 목록을 통해 관리 시 정보불일치 다수 발생

• Hatena 독자적인 서버관리 툴 구축

• 서버의 대수, 통계 데이터 등 관리 가능

• 인프라 규모, 구성장비의 변화 파악 가능

• Capistrano을 이용해 Deploy 진행

Page 16: 로그 수집, 집약

전원 효율

• 직접 조립을 통해 각각의 부품 소비전력을 측정하여 선정

• 기존 서버의 경우 일부 부품 교체로 성능 향상이나 소비전력 감소가 가능할시 적극적으로 교체 진행

• Core2 Duo CPU -> Core2 Quad로 업그레이드 진행

• 가상화 기술 Xen을 도입해 서버 리소스 효율화

• Xen을 사용해 1대의 물리적인 서버에 논리적인 여러 개의 서버 구성 가능

Page 17: 로그 수집, 집약

전원 효율

• AP서버와 DB서버를 분리하여 가상화 구성하여 장애 대응

• DB서버에 남아있는 CPU성능은 AP서버로 구성하여 CPU I/O한계까지 사용

Page 18: 로그 수집, 집약

전원 효율

• 메로리를 저가에 최대한 설치하지 않고, 하드디스크 RAID 구성하지 않음

• 처음부터 하드디스크를 없앤 Diskless 서버 연구 중

• Diskless 장점으로 소비전력 저하, 하드웨어 고장화율 저하, 역할 설정 용이

• Diskless 단점으로 자력으로 부팅 불가, 로그파일 로컬 저장 불가