ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들

4,898 views
4,562 views

Published on

AWS 한국 사용자모임 세미나

VCNC 이정행

Published in: Technology
0 Comments
39 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,898
On SlideShare
0
From Embeds
0
Number of Embeds
153
Actions
Shares
0
Downloads
87
Comments
0
Likes
39
Embeds 0
No embeds

No notes for slide

ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들

  1. 1. ELB와 EBS의 아키텍처로 생각해보는 사용상 주의할 점들 ! VCNC 개발팀 이정행 AWS 한국 유저 그룹 (#awskrug) 2014.03.08
  2. 2. 발표자 소개 • 이정행 (@eincs) • VCNC에서 비트윈을 개발하고 있는 개발자 • 서버팀과 안드로이드팀에서 파견직으로 일하고 있음 • http://eincs.net
  3. 3. 비트윈 • 커플들을 위한 모바일 서비스 • 아이폰, 안드로이드 어플리케이션 제공 • 채팅, 기념일, 사진, 메모, 캘린더 기능 제공 • 전 세계에서 600만+ 다운로드 (as of 2012.02) • http://between.us • http://engineering.vcnc.co.kr
  4. 4. 비트윈 서버 구조 • Java로 작성되어 있음 • 데이터 저장소로 HBase를 사용함 • Haeinsa를 통해 HBase에 접근시 ACID 트랜잭션 이용 • Thrift 서비스를 Netty위에 올려서 서비스함 • 채팅의 경우, Thrift를 이용해 클라이언트와 통신함 • AWS Tokyo리전에서 운영되고 있음
  5. 5. EC2 Master Master Backup SQS SES EC2 EC2 EC2 SNS API서버 EC2 EC2 EC2 S3 CloudFront EC2 채팅서버 EC2 EC2 CloudWatch IAM
  6. 6. Elastic Load Balancer
  7. 7. ELB는 좋다.
  8. 8. EC2 EC2 ELB에 EC2 여러 인스턴스를 붙여 놓으면 트래픽을 분배해준다
  9. 9. EC2 EC2 트래픽이 늘어 EC2를 더 붙이면 알아서 분배해준다. EC2
  10. 10. EC2 EC2 트래픽이 늘어 EC2를 더 붙이면 알아서 분배해준다. Auto Scale 설정을 해두면 좋다. EC2
  11. 11. EC2 EC2 EC2
  12. 12. EC2 EC2 EC2 EC2에 문제가 생겨 장애가 나면 더 이상 트래픽을 분배하지 않는다.
  13. 13. EC2 ELB는 아주 좋습니다. EC2 EC2 EC2에 문제가 생겨 장애가 나면 더 이상 트래픽을 분배하지 않는다.
  14. 14. ELB는 내부적으로 Scale-Out을 한다.
  15. 15. EC2 EC2 EC2 트래픽이 매우 증가한 경우에는?
  16. 16. EC2 EC2 EC2는 늘리면 되지만 ELB는 버틸 수 있을까? EC2 EC2
  17. 17. EC2 ELB Machine EC2 EC2 ELB도 내부적으로는 컴퓨터 위에서 돌아가는 어플리케이션일 뿐이다! 한대의 ELB 머신이 처리할 수 있는 트래픽에는 한계가 있다. EC2
  18. 18. EC2 ELB Machine ELB Machine ELB는 Scale-Out하여 큰 트래픽도 문제 없이 처리한다. 밖에서 보기엔 하나의 ELB이지만, 내 부적으로는 여러 머신에서 동작하게 된다. EC2 EC2 EC2
  19. 19. EC2 x.x.x.x y.y.y.y ELB Machine ELB Machine 한 ELB는 여러 IP를 가질 수 있다! EC2 EC2 EC2
  20. 20. EC2 ELB Machine ELB가 IP를 할당받지 못하고 도메인이 할당되는 이유! ELB Machine EC2 EC2 xxx.elb.amazonaws.com EC2
  21. 21. EC2 ELB Machine ELB Machine DNS Round Robin 으로 각 ELB Machine에 트래픽이 분배 된다. EC2 EC2 EC2
  22. 22. EC2 ELB Machine EC2 ELB도 내부적으로는 Scale-Out을 한다. ELB Machine DNS Round Robin 으로 각 ELB Machine에 트래픽이 분배 된다. EC2 EC2
  23. 23. ELB도 Scale-Out하려면 시간이 필요하다.
  24. 24. EC2 ELB Machine EC2 EC2 EC2
  25. 25. EC2 ELB Machine 아무 트래픽도 없다가 하나의 ELB머 신이 감당하기 힘든 엄청난 트래픽을 갑자기 가한다면? EC2 EC2 EC2
  26. 26. EC2 ELB Machine 어쨋든 처음에는 트래픽을 각 EC2에 분배하기는 하는데… EC2 EC2 EC2
  27. 27. EC2 ELB Machine ELB Machine이 버티지 못하고 트래픽을 처리하지 못한다. EC2 EC2 EC2
  28. 28. EC2 ELB Machine 시간이 지나면 Scale-out에 성공하여 정상 동작하게 된다. ELB Machine EC2 EC2 EC2
  29. 29. EC2 ELB Machine 시간이 지나면 Scale-out에 성공하여 정상 동작하게 된다. 갑자기 많은 트래픽을 처리해야할 떄에는 미리 Warm-up을 하자! ELB Machine EC2 EC2 EC2
  30. 30. EC2 ELB Machine EC2 ELB가 차갑게 식었다면 따뜻하게 데워서 이용해주세요. 시간이 지나면 Scale-out에 성공하여 정상 동작하게 된다. 갑자기 많은 트래픽을 처리해야할 떄에는 미리 Warm-up을 하자! ELB Machine EC2 EC2
  31. 31. Multi-AZ 구성일 때 ELB의 동작에 주의하자!
  32. 32. Availability Zone 1 ELB Machine EC2
  33. 33. Availability Zone 1 ELB Machine EC2 서비스에서 EC2 인스턴스를 한대만 운영하면 SPOF!
  34. 34. Availability Zone 1 ELB Machine EC2 서비스에서 EC2 인스턴스를 한대만 운영하면 SPOF! 하나의 Availability Zone만 이용하는 것도 권장되지 않는다. (Availability Zone = Data Center)
  35. 35. Availability Zone 1 ELB Machine EC2 Availability Zone 2 EC2 Multi-AZ 구성을 위해 EC2를 다른 AZ에 띄워보았다.
  36. 36. Availability Zone 1 ELB Machine EC2 Availability Zone 한 ELB Machine도 일종의 컴퓨터이므 2 로 특정 데이터센터 안에 속해있다. EC2
  37. 37. Availability Zone 1 ELB Machine EC2 Availability Zone 2 Multi-AZ 구성을하면 트래픽이 매우 작아도 ELB Machine이 각 AZ마다 하나씩 뜨게 된다! ELB Machine EC2
  38. 38. Availability Zone 1 ELB Machine EC2 Availability Zone 2 DNS RR로 분배하므로 각 AZ에 동일한 트래픽이 분배된다. ELB Machine EC2
  39. 39. Availability Zone 1 ELB Machine EC2 ELB도 컴퓨터 이므로 Multi-AZ 구성이면 여러개 뜹니다. Availability Zone 2 DNS RR로 분배하므로 각 AZ에 동일한 트래픽이 분배된다. ELB Machine EC2
  40. 40. 각 AZ별 EC2 숫자는 같아야 한다.
  41. 41. Availability Zone 1 ELB Machine Auto-scale 설정을 해놓지 않았는데 갑자기 엄청난 트 래픽이 몰린다면? EC2 Availability Zone 2 ELB Machine EC2
  42. 42. Availability Zone 1 ELB Machine EC2 Availability Zone 2 ELB Machine 너무 급한 나머지 한쪽 AZ에만 인스턴스 2개를 추가! EC2 EC2 EC2
  43. 43. Availability Zone 1 ELB Machine EC2 Availability Zone 2 ELB Machine 너무 급한 나머지 한쪽 AZ에만 인스턴스 2개를 추가! EC2 EC2 이제 4대나 있으니 걱정 없음!? EC2
  44. 44. Availability Zone 1 ELB Machine EC2 Availability Zone 2 ELB Machine 그러나 AZ1의 인스턴스가 큰 CPU 사용량을 보이며 죽었다 살았다 한다. 왜 그럴까? EC2 EC2 EC2
  45. 45. Availability Zone 1 ELB Machine DNS Round Robin 으로 분배하므로 각 AZ에 동일한 트래픽이 분배된다. EC2 Availability Zone 2 ELB Machine EC2 EC2 EC2
  46. 46. Availability Zone 1 ELB Machine Availability Zone 2 ELB Machine EC2 한 쪽 AZ에 인스턴스 갯 수가 적으면 트래픽이 불 균형하게 분배 된다. EC2 EC2 EC2
  47. 47. Availability Zone 1 ELB Machine Availability Zone 2 ELB Machine EC2 한 쪽 AZ에 인스턴스 갯 수가 적으면 트래픽이 불 균형하게 분배 된다. EC2 각 AZ에 같은 수의 EC2 를 붙여놓는 것이 좋다. EC2 EC2
  48. 48. Availability Zone 1 ELB Machine EC2 Multi-AZ 구성을 할때에는2인스턴스 갯수를 잘 맞춰야한다. 갯 Availability Zone 한 쪽 AZ에 인스턴스 ELB Machine 수가 적으면 트래픽이 불 균형하게 분배 된다. EC2 각 AZ에 같은 수의 EC2 를 붙여놓는 것이 좋다. EC2 EC2
  49. 49. ELB도 나무에서 떨어질 때가 있다.
  50. 50. EC2 Master Master Backup SQS SES EC2 EC2 EC2 SNS API서버 EC2 EC2 EC2 S3 CloudFront EC2 채팅서버 EC2 EC2 CloudWatch IAM
  51. 51. EC2 Master Master Backup SQS SES EC2 EC2 EC2 SNS API서버 EC2 EC2 채팅서버 EC2 EC2 채팅 서버는 하나의 ELB와 연결 되어 있고, 연결 갯수가 많고, timeout이 길게 설정되어 있다. EC2 EC2 S3 CloudFront CloudWatch IAM
  52. 52. ELB Machine 전체 시스템을 VPC로 옮긴 후 가끔씩 채팅 서버 중 한 대의 사용 자들이 연결을 맺지 못하는 발생함 EC2
  53. 53. ELB Machine 전체 시스템을 VPC로 옮긴 후 가끔씩 채팅 서버 중 한 대의 사용 자들이 연결을 맺지 못하는 발생함 아무리 문제를 찾아봐도 원인이 나오지 않아 AWS Support에 도움을 청함 EC2
  54. 54. ELB Machine “From the analysis it appears that once the ELB tries to establish more than 19k connections the backend instances are not able to handle additional connections and this cause a health-check failure.” EC2
  55. 55. ELB Machine “From the analysis it appears that once the ELB tries to establish more than 19k connections the backend instances are not able to handle additional connections and this cause a health-check failure.” EC2 하지만 테스트 해보니 우리 서버는 19K 이상은 충분히 버틸 수 있음… 그렇다면 ELB문제 아닐까?
  56. 56. ELB Machine EC2 Route53 ELB Machine ELB를 두 개 띄우고, Route53으로 DNS-RR 설정하여 일단 해결
  57. 57. ELB Machine EC2 Route53 ELB Machine “I see some activity on the ELB from our side that may have some influence on the issue you are experiencing.”
  58. 58. ELB Machine EC2 Route53 ELB Machine “I see some activity on the ELB from our side that may have some influence on the issue you are experiencing.” “We made some adjustments to our ELB in order to better handle requests directed to your backend instances.”
  59. 59. ELB Machine EC2 ELB Machine 이후에 확인해보니 ELB Machine 이 두개 떠있게 됨 (IP가 두개 관측됨)
  60. 60. ELB Machine EC2 문제가 생기면 AWS Support가 많은 도움이 된다. ELB Machine 이후에 확인해보니 ELB Machine 이 두개 떠있게 됨 (IP가 두개 관측됨)
  61. 61. 정리하기 • ELB는 좋다. • ELB는 내부적으로 Scale-Out을 한다. • ELB도 Scale-Out하려면 시간이 필요하다. • Multi-AZ 구성일 때 ELB의 동작에 주의하자! • 각 AZ별 EC2의 숫자는 같아야 한다. • ELB도 나무에서 떨어질 때가 있다.
  62. 62. Elastic Block Storage
  63. 63. EBS는 좋다.
  64. 64. EC2 EBS EC2 EBS EC2 EBS 언제든지 EC2에 EBS를 붙일 수 있음
  65. 65. EC2 EBS EC2 EBS 사용하던 EBS를 새로운 인스턴 스에 가져다 붙일 수 있음 EC2 EBS
  66. 66. EC2 EBS EC2 EBS EC2 EBS 언제든지 Snapshot을 만들어 둘 수 있음
  67. 67. EC2 EBS EBS는 정말 좋습니다. EC2 EBS EC2 EBS 언제든지 Snapshot을 만들어 둘 수 있음
  68. 68. EC2는 EBS에 공유 네트워크를 통해 접근한다.
  69. 69. EC2 EC2에 EBS를 부착하면 디스크를 EBS 설치하는 느낌이지만… 가져다 EC2 EBS EC2 EBS
  70. 70. EC2에 부착한 EBS는 네트워크를 통 해 데이터를 주고 받는다. EC2 EC2 EC2 EBS EBS EBS
  71. 71. EC2와 인터넷과 통신할때에도 같은 이더넷카드를 사용한다. 사용자 EC2 인터넷 EC2 EC2 EBS EBS EBS
  72. 72. EBS의 성능은 외부와의 통신 트래픽에 영향을 받을 수 있다.
  73. 73. 사용자 EC2 인터넷 EC2 EC2 EBS EBS EBS
  74. 74. 사용자 EC2 EC2에 이더넷 카드가 하나라면, 외부 와 통신 트래픽이 많으면 EBS와 통신 이 방해 받을 수 있다. 인터넷 EC2 EC2 EBS EBS EBS
  75. 75. 사용자 EC2 EBS-Optimized 인스턴스는 EBS 와의 통신에만 사용하는 이더넷 카드 가 하나 더 꼽혀 있다! 인터넷 EC2 EC2 EBS EBS EBS
  76. 76. 사용자 EBS-Optimized 인스턴스는 EBS 와의 통신에만 사용하는 이더넷 카드 가 하나 더 꼽혀 있다! 인터넷 성능이 중요할때에는 EBS-Optimized 옵션을 이용하자. EC2 EC2 EC2 EBS EBS EBS http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html
  77. 77. EBS의 성능을 확보하기 위한 방법들이 많다.
  78. 78. PIOPS 옵션을 이용하면 EBS의 IO성능을 보장해준다. EC2 EC2 EC2 EBS EBS EBS http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.html http://www.quora.com/Amazon-EBS/How-did-Amazon-implement-EBS-Provisioned-IOPS-volumes
  79. 79. EC2 한 EC2 인스턴스에 여러 EBS를 달아 두고 Striping 구성을 통해 처리량(RAID0)이나 안정성(RAID1)을 더 확보할 수 있다. EBS EC2 EBS EC2 EBS http://www.slideshare.net/AmazonWebServices/ebs-webinarfinal http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/raid-config.html
  80. 80. EBS가 처음 만들어지면 성능이 다소 떨어질 수 있다. Pre-wram을 하여 성능을 균일하게 확보 가능. EC2 EC2 EC2 EBS EBS EBS http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-prewarm.html
  81. 81. EBS가 처음 만들어지면 성능이 다소 떨어질 수 있다. Pre-wram을 하여 성능을 균일하게 확보 가능. 다양한 방법을 통해 EBS의 성능을 확보할 수 있다. EC2 EC2 EC2 EBS EBS EBS http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-prewarm.html
  82. 82. EC2가 멀쩡하더라도 EBS는 문제가 생길 수 있다.
  83. 83. EC2에 부착한 EBS는 네트워크를 통 해 데이터를 주고 받는다. EC2 EC2 EC2 EBS EBS EBS
  84. 84. EBS도 일종의 컴퓨터 위에서 돌아가는 어 플리케이션이므로 장애가 날 수 있다. EC2 EC2 EC2 EBS EBS EBS
  85. 85. HBase(HDFS)마스터는 HA구성을 해놓았음 Master Master Backup EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  86. 86. 매우(x100)중용한 데이터를 저장하므로 EBS에 물려놓음 Master Master Backup EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  87. 87. EBS에 장애가 났는데… Master Master Backup EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  88. 88. EBS에 장애가 났는데… Master Master Backup 자신이 죽은지도 모르고 계속 살아 있는 척을 함 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  89. 89. 결국 시스템 전체 장애 Master Master Backup EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  90. 90. 결국 시스템 전체 장애 EC2 EC2 Master Master Backup EC2 EC2 실시간 검색 1위! EC2 EC2 EC2 EC2
  91. 91. 결국 시스템 전체 장애 EC2 EC2 Master Master Backup EC2 EC2 오픈소스는 AWS환경이 고려 되어 있지 않을 수 있다. EC2 EC2 EC2 EC2
  92. 92. EBS를 최대한 사용하지 않는 것도 방법이다.
  93. 93. HBase(HDFS)에서는 데이터를 세번 복제하여 여러 노드에 저장한다. EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  94. 94. 처음에는 모든 노드에 EBS를 달았지만 여러가지 문제가 있었다. EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  95. 95. 그렇다고 모두 instance store를 사용하기에는 불안하다. EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 http://techblog.netflix.com/2011/04/lessons-netflix-learned-from-aws-outage.html
  96. 96. HDFS multiple-rack 설정을 통해 데이터 복제 정책을 정할 수 있다. EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  97. 97. Ephemeral을 사용하는 rack에 2벌을 저장하고 EBS를 사용하는 rack에 1벌을 저장하도록 설정 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  98. 98. 어떤 데이터든 EBS에는 최소한 한 벌이 저장되게 된다. EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2
  99. 99. 어떤 데이터든 EBS에는 최소한 한 벌이 저장되게 된다. EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EC2 EBS를 굳이 사용하지 않아도 되는 환경이면 쓰지 말자.
  100. 100. 정리하기 • EBS는 좋다. • EC2는 공유 네트워크를 통해 EBS에 접근한다. • EBS의 성능은 외부와 통신 트래픽에 영향을 받을 수 있다. • EBS의 성능을 확보하기 위한 방법들은 많다. • EC2가 멀쩡하더라도 EBS는 문제가 있을 수 있다. • EBS를 최대한 사용하지 않는 것도 방법이다.
  101. 101. ‘With great power comes great responsibility.’ –Ben Parker
  102. 102. ELB와 EBS는 정말 강력합니다. ‘With great power comes great responsibility.’ –Ben Parker
  103. 103. ELB와 EBS는 정말 강력합니다. ‘With great power comes great responsibility.’ 그 만큼 잘못쓰면 안됩니다. –Ben Parker
  104. 104. Thank You

×