Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
서버 장애 예방 및 대응 방법 공유
!
2014.4.30 프라이머 개발자 모임
!
애드투페이퍼
이경찬
!
http://add2paper.github.io/
http://leekchan.com
1) 애드투페이퍼 서비스 간단 소개
!
!
애드투페이퍼는?
!
전국 73개 대학교
985대 제휴 PC
대학생 회원 30만명
누적 무료프린팅 2000만장
애드투페이퍼는?
!
전국 73개 대학교
985개 제휴 PC
대학생 회원 30만명
누적 무료프린팅 2000만장
2013년 1월 모바일앱 출시
!
매일 아침 8:30분 전체 회원에게 2장 충전 알림 푸시 발송
2014년 4월 29일 기준 23,094,992 장 충전 발생
Stack Overview…
!
1. 로드밸런서
2. 어플리케이션 서버 3대
(4vCore 4GB | Ubuntu 11.04 | Gunicorn, Django, Supervisor)
3. DB 2대
(4vCore 4GB...
AP
LB
AP AP
MySQL - Master MySQL - Slave
Cache + Worker
2) 모니터링 방법 소개
!
!
!
서버 상태 모니터링 - Newrelic
!
- 서비스 초반에는 Datadog를 사용했지만, 현재는 Newrelic으로 지속적으로 교체중.
!
!
!
어플리케이션 모니터링 - Newrelic
!
- 웹서비스 응답 속도 모니터링 및 Transaction 단위 퍼포먼스 측정 가능
!
!
Newrelic 서비스 사용 시연
!
!
!
Celery, Cron 등 Log 모니터링 및 자동 Alert - Logentries
!
- Celery, Cron 등에서 생상되는 Log를 실시간으로 Archiving 하다가 특정 패턴의 문자열

이 발견되면 이메...
Logentries 서비스 사용 시연
!
!
!
웹서비스 상태 모니터링 및 자동 Alert - Pingdom
!
- 지정한 IP, Domain, DNS Record 등을 실시간으로 모니터링 해준다.
- IP, Domain, DNS 를 모두 모니터링 하면 장애 상황...
Pingdom 서비스 사용 시연
!
!
3) 장애 유형 및 대응 방법 공유
!
!
!
상황 1. MySQL Master 장애
!
- 예방법이 있을까?
- 예방이 안된 상태에서 장애가 났다면

어떻게 대응하는게 좋을까?
!
AP
LB
AP AP
MySQL - Master MySQL - Slave
Cac...
!
예방법 - MySQL Master 이중화
!
# 예시 : Galera Cluster for Mysql
!
!
!
!
!
!
!
!
!
- 모든 MySQL Node에 write - read 가능.
- MySQL nod...
!
MySQL Master 이중화를 하지 못했는데, 장애가 난다면…
!
“MySQL Slave를 Master로 승격시키고 Slave를 새로 붙이는 것이 가장 쉽고 빠르다.”
!
# 절차
1. MySQL Slave 서버 ...
!
상황 2. 갑자기 외부 서비스 연동이 제대로 동작하지 않는다.
(Facebook API, 문자 서비스 API 등)
!
- 해당 서비스에 장애가 생긴 것일까?
-> 해당 서비스 장애가 빈번하다면 백업 API를 사용하여...
!
상황 3. 갑자기 MySQL 서버가 응답하지 않는다.
!
- 로그 서버 등 대량의 데이터를 저장하는 서버에서 binlog 저장 주기가 길 경우 하드디스크가

binlog로 꽉 차서 MySQL이 정상동작 하지 않는 상...
!
상황 4. 서비스가 갑자기 접속이 되지 않는다.
!
- 앞서 공유한 pingdom 등의 웹서비스 모니터링 서비스를 이용하여 모니터링 할 경우,

웹서버, DNS 서버 등 여러 장애 포인트 중 어떤 부분이 문제인지 빠...
!
상황 5. MySQL Slave 서버의 Replication이 멈췄을때.
!
# 절차
1. Slave 서버에서 “SHOW SLAVE STATUS;” 쿼리를 실행하여 Last_Error를 확인한다.
!
2-1. 만약 무시해도 되는 오류라면 “STOP SLAVE;” 쿼리 실행 후 “SET GLOBAL
SQL_SLAVE_SKIP_COUNTER = 1;” 쿼리를 통해 skip할 쿼리 개수를 지정후
“START SLAVE...
!
상황 6. 반드시 데이터 분석용 쿼리는 Slave 서버에만 보내도록 한다.
!
- 실수로 작성한 쿼리가 Master에서 실행될 경우 심각한 장애를 초래할 수 있다.
!
- 직접 MySQL 접속 권한을 주는 대신 “내...
감사합니다.
!
!
Prochain SlideShare
Chargement dans…5
×

2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유

4 378 vues

Publié le

2014.4.30 프라이머 개발자 모임

서버 장애 예방 및 대응 방법 공유

Publié dans : Ingénierie
  • Dating for everyone is here: ❶❶❶ http://bit.ly/369VOVb ❶❶❶
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Dating direct: ❤❤❤ http://bit.ly/369VOVb ❤❤❤
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유

  1. 1. 서버 장애 예방 및 대응 방법 공유 ! 2014.4.30 프라이머 개발자 모임 ! 애드투페이퍼 이경찬 ! http://add2paper.github.io/ http://leekchan.com
  2. 2. 1) 애드투페이퍼 서비스 간단 소개 ! !
  3. 3. 애드투페이퍼는? ! 전국 73개 대학교 985대 제휴 PC 대학생 회원 30만명 누적 무료프린팅 2000만장
  4. 4. 애드투페이퍼는? ! 전국 73개 대학교 985개 제휴 PC 대학생 회원 30만명 누적 무료프린팅 2000만장
  5. 5. 2013년 1월 모바일앱 출시 ! 매일 아침 8:30분 전체 회원에게 2장 충전 알림 푸시 발송 2014년 4월 29일 기준 23,094,992 장 충전 발생
  6. 6. Stack Overview… ! 1. 로드밸런서 2. 어플리케이션 서버 3대 (4vCore 4GB | Ubuntu 11.04 | Gunicorn, Django, Supervisor) 3. DB 2대 (4vCore 4GB | CentOS 5.4 | MySQL Master-Slave Replication 구성) 4. 캐시 + 워커 서버 1대 (4vCore 8GB | Ubuntu 11.04 | Memcached, Celery, Redis, Supervisor) ! ! “매일 아침 8:30에 전체 회원 대상 푸시를 발송하기 때문에 해당 시간에 동시에 다수의 사용자가 접속 —> AP 3대 사용”
  7. 7. AP LB AP AP MySQL - Master MySQL - Slave Cache + Worker
  8. 8. 2) 모니터링 방법 소개 ! !
  9. 9. ! 서버 상태 모니터링 - Newrelic ! - 서비스 초반에는 Datadog를 사용했지만, 현재는 Newrelic으로 지속적으로 교체중. ! !
  10. 10. ! 어플리케이션 모니터링 - Newrelic ! - 웹서비스 응답 속도 모니터링 및 Transaction 단위 퍼포먼스 측정 가능 ! !
  11. 11. Newrelic 서비스 사용 시연 ! !
  12. 12. ! Celery, Cron 등 Log 모니터링 및 자동 Alert - Logentries ! - Celery, Cron 등에서 생상되는 Log를 실시간으로 Archiving 하다가 특정 패턴의 문자열
 이 발견되면 이메일로 Alert을 준다. - Celery, Cron 이상시 즉시 원인 분석 및 대응 가능. ! !
  13. 13. Logentries 서비스 사용 시연 ! !
  14. 14. ! 웹서비스 상태 모니터링 및 자동 Alert - Pingdom ! - 지정한 IP, Domain, DNS Record 등을 실시간으로 모니터링 해준다. - IP, Domain, DNS 를 모두 모니터링 하면 장애 상황에서 즉시 원인 파악이 가능하다. ! !
  15. 15. Pingdom 서비스 사용 시연 ! !
  16. 16. 3) 장애 유형 및 대응 방법 공유 ! !
  17. 17. ! 상황 1. MySQL Master 장애 ! - 예방법이 있을까? - 예방이 안된 상태에서 장애가 났다면
 어떻게 대응하는게 좋을까? ! AP LB AP AP MySQL - Master MySQL - Slave Cache + Worker
  18. 18. ! 예방법 - MySQL Master 이중화 ! # 예시 : Galera Cluster for Mysql ! ! ! ! ! ! ! ! ! - 모든 MySQL Node에 write - read 가능. - MySQL node들 앞단에 LB를 놓으면 어플리케이션에서는 LB만 바라보면 된다. !
  19. 19. ! MySQL Master 이중화를 하지 못했는데, 장애가 난다면… ! “MySQL Slave를 Master로 승격시키고 Slave를 새로 붙이는 것이 가장 쉽고 빠르다.” ! # 절차 1. MySQL Slave 서버 접속 후 STOP SLAVE; 쿼리 실행 후 Master로 사용. 
 (바로 서비스 재개 가능) 2. 서비스 중에 MySQL Slave를 Online으로 붙일 수 있다. (Percona XtraBackup 사용) http://www.percona.com/doc/percona-xtrabackup/2.1/howtos/ setting_up_replication.html ! ! !
  20. 20. ! 상황 2. 갑자기 외부 서비스 연동이 제대로 동작하지 않는다. (Facebook API, 문자 서비스 API 등) ! - 해당 서비스에 장애가 생긴 것일까? -> 해당 서비스 장애가 빈번하다면 백업 API를 사용하여 대비한다. (문자 발송 API 등) -> 애드투페이퍼 서비스에서는 문자 발송 업체를 2곳 사용중이다. 첫번째 발송 업체의 API
 를 먼저 호출하고 (Timeout 1초), Timeout이 나거나 실패 응답이 왔을시에는 백업 발송
 업체의 API를 호출. -> 기존에는 회원가입 인증 문자 관련 전화 CS가 종종 있었지만 이중
 화후 발생하지 않음. ! - 해당 서비스에 이상이 없는데 갑자기 코드가 동작하지 않는다면?
 -> DNS 서버를 체크하자!
 -> DNS 서버를 따로 지정해놓지 않은 경우 갑자기 Host를 찾지 못하는 경우가 생긴다.
  21. 21. ! 상황 3. 갑자기 MySQL 서버가 응답하지 않는다. ! - 로그 서버 등 대량의 데이터를 저장하는 서버에서 binlog 저장 주기가 길 경우 하드디스크가
 binlog로 꽉 차서 MySQL이 정상동작 하지 않는 상황이 생길 수 있다.
 
 - Newrelic 등 모니터링 서비스를 이용하여 상시 모니터링 하고 자동으로 Alert을 받을 수
 있도록 설정하는 것이 좋다. 
 - 모니터링 서비스가 없는 상태에서 장애가 발생한 서버에 접속했을 때는 “df -h” 명령을 먼저
 사용하여 디스크 용량 상태를 먼저 확인하는 것이 유용하다.
  22. 22. ! 상황 4. 서비스가 갑자기 접속이 되지 않는다. ! - 앞서 공유한 pingdom 등의 웹서비스 모니터링 서비스를 이용하여 모니터링 할 경우,
 웹서버, DNS 서버 등 여러 장애 포인트 중 어떤 부분이 문제인지 빠르게 확인할 수 있다. ! - 국내 유명 DNS 서비스들도 가끔 DDoS 로 인해 응답 불능 상태에 빠지는 경우가 있다.
 -> 되도록이면 AWS Route 53 등 안정적인 DNS 서비스를 사용하는 것을 권장. ! - 국내 DNS 서비스의 경우에는 DDoS 방어 등을 목적으로 해외 트래픽을 차단하는 경우가
 있어 해외 대상 서비스를 하는 경우 국내 DNS를 사용하면 해외에서 접속이 되지 않는 경우
 가 생길 수 있다.
  23. 23. ! 상황 5. MySQL Slave 서버의 Replication이 멈췄을때. ! # 절차 1. Slave 서버에서 “SHOW SLAVE STATUS;” 쿼리를 실행하여 Last_Error를 확인한다.
  24. 24. ! 2-1. 만약 무시해도 되는 오류라면 “STOP SLAVE;” 쿼리 실행 후 “SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;” 쿼리를 통해 skip할 쿼리 개수를 지정후 “START SLAVE;” 쿼리를 통해 replication을 재시작 한다. ! 2-2. 무시할 수 없는 오류라면 앞서 언급한 XtraBackup을 통해 Slave를 다시 생성한다.
 ! !
  25. 25. ! 상황 6. 반드시 데이터 분석용 쿼리는 Slave 서버에만 보내도록 한다. ! - 실수로 작성한 쿼리가 Master에서 실행될 경우 심각한 장애를 초래할 수 있다. ! - 직접 MySQL 접속 권한을 주는 대신 “내부 관리자용 웹 어플리케이션”에서 쿼리를 실행
 하도록 하면 코드 상에서 사전 검증이 가능하다. - 모든 쿼리는 Transaction 상에서 동작하도록 하고, 실행 완료 후 반드시 Rollback 한다. - 쿼리 안에 DDL이 포함되어 있으면 실행을 거부한다. - 유저 정보 table 등 개인 정보 유출 우려가 있는 table명이 쿼리 상에 포함되어 있으면
 실행을 거부한다. - 반드시 Timeout을 지정하여 실수로 실행한 쿼리가 무한정 실행되는 것을 방지한다. !
  26. 26. 감사합니다. ! !

×