본문 바로가기

MicroService/Eureka

Eureka Server란

Eureka Server란?

Eureka는 Middle-tier server( 비즈니스 로직이 위치한 애플리케이션 서버단)의 로드밸런스와 Failover를 위해 서비스를 배치해주는 REST 기반 서비스이다. 이 서비스는 주로 AWS Cloud에서 사용되고, 이를 Eureka Server라 부른다. 

Eureka Client

 Java 기반 클라이언트 요소도 있는데, 서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다. 클라이언트도 Round-Robin 방식을 기본으로 사용하는 로드밸런스를 내장하고 있다. 

Netflix에서는, Eureka에서 기본 로드 밸런스 외에도 트래픽, 리소스 사용량, 에러 상황 요소에 따라 로드밸런스를 할 수 있도록 제공해주고 있다.


Eureka Server의 필요성

AWS Cloud에서는 특성상 서버가 자주 꺼졌다 켜젔다 한다. IP 주소와 hostname을 이용하는 기존 로드밸런스와 다르게, AWS에서는 로드밸런스는 좀 더 정교한 능력을 요구한다. IP 주소는 수시로 변하기 때문에 로드밸런스가 서버를 등록하고 해지하는 작업을 유동적으로 할 수 있게 해야한다. 

 AWS에서는 아직 middle tier 로드밸런스를 제공하지 않기 때문에, Eureka에서는 이를 제공해준다.


Eureka vs AWS ELB

 

 Eureka

AWS ELB 

Session 

 확장성을 고려하여 stateless ( non-sticky )  

 stateful ( sticky )

Load Balancer가 죽는다면? 

 사용가능한 서버 정보가 Client에 Cache 되어 있음. 약간의 메모리가 필요하지만, 서버가 죽도라도 클라이언트는 아무 문제가 없게 된다.  

 



Eureka vs Route 53

Route 53이 네이밍 서비스란 점과 Eureka의 mid-tier 서버를 위해 네이밍 서비스를 제공해주는 점은 같다. 

Route 53은 non-AWS data center를 위해서 DNS 레코드를 호스트할 수 있는 서비스이다. 그리고, AWS region과 상관이 없다.
Eureka는 DNS 서버와 아무 상관이 없다. 그리고 Eureka는 다른 AWS region에 있는 서버에 대해서는 알 수 없다. 원래 목적이 region내 로드밸런싱 하기 위한 정보를 가지는 것이다.

Eureka대신 Route 53 이용해서 로드밸런싱하면 되자나?

DNS 기반 로드밸런싱을 사용하면 서버의 상태가 healthy이든 unhealthy이든 상관없이 보내기 때문에 문제가 생긴다.


Eureka Server를 언제사용해야 하는가?

AWS Cloud를 사용하고, 외부로 노출 시키고 싶지 않은 mid-tier 서비스가 있을 것이다. 

1. 간단한 Round-Robin 로드밸런싱이 아니라,  로드밸런싱 방법을 정의하고 싶은 경우
2. Session을 사용하지 않는 경우
3. Client 로드 밸런스 사용에 적합한 아키텍처인 경우


Eureka를 사용한 아키텍처


위의 그림은 Netflix에서 Eureka를 어떻게 사용하고 있는지에 대한 것이다. Region마다 자기 region의 인스턴스에 대해 알고 있는 Eureka 서버가 하나씩 있다. zone에서 문제가 발생할 경우를 대비하여 zone마다 하나씩 Eureka 서버를 구축해놓았다. 


Eureka에 등록된 서비스들은 30초마다 상태를 보낸다. 클라이언트가 등록을 일정 시간 못하게 되면, 서버 레지스트리에서 90초 내에 제거된다. 등록 정보와 갱신된 정보는 모든 Eureka에 복제된다. 모든 Zone에 있는 클라이언트들은 자신의 서비스를 등록하거나 다른 서비스를 호출하기 위해 레지스트리 정보를 (30초마다) 가져온다.


회복력 ( Resilience ) 

AWS Cloud에서 우리가 빌드하는 모든 것을 죽지 않고 잘 회복되는 것에 대해 고려하는 것은 어렵습니다. Eureka는 서버와 클라이언트 내에 회복력을 고려한 기능이 있습니다.


Eureka Client Resilience

Eureka Server가 죽는 경우에 Eureka Client에서 스스로 처리할 수 있습니다. 서버에 있는 정보를 Cache로 가지고 있기 때문에, 서버가 죽더라도 잘 동작합니다.

Eureka Server Resilience

클라이언트와 서버가 네트워크 분할이 되어 있더라도, 서버에는 대규모 중단을 방지하는 기본 제공 복원 기능이 있습니다. ( 뭘 얘기하는거지... )

Eureka를 여러 개의 Region에 배포하기

Eureka 서버를 여러 AWS region으로 배포하는 것은 상당히 간단합니다. 다른 Region의 Eureka와는 서로 통신하지 않습니다. 

Eureka 모니터링

클라이언트와 서버의 성능, 모니터링, 변경 감지를 위해 Servo를 이용하여 많은 정보를 추적한다. 데이터는 일반적으로 JMX registry에서 사용할 수 있고, Amazon Cloud Watch르 내보낼 수 있다.


'MicroService > Eureka' 카테고리의 다른 글

Eureka self preservation mode란  (0) 2018.08.22
Eureka에 대해 알아보자.  (0) 2018.08.20