miin29na

[spring cloud] eureka server(설정 + replication, 이중화) 본문

IT_Spring/spring cloud (Microservice)

[spring cloud] eureka server(설정 + replication, 이중화)

miin29na 2018. 11. 26. 19:15

MSA 를 구성하기 위해,  config-service 를 구성 후에 이번 포스팅에서는, discovery service를 구성한다. Config-service 는 이전글을 참조한다.


Spring Cloud Discovery Server (Eureka Server) 는 Micro service 들을 감시하고 관리하는 서비스이다. 

이전 글에서, "Config-service, discovery-service, proxy-service, A-service, B-service 5개의 서버가 물리적으로 다른 서버에서 수행된다. "

discovery-service : Eureka Server 

proxy-service, A-service, B-servie : Eureka Client


-Micro service 들의 목록을 관리

-service 가 새롭게 투입되면 감지하여 목록에 자동으로 추가, 종료시에 자동으로 목록에서 삭제한다.

-API 호출 하는 Side 에서 주소들을 모르고 서비스 이름만으로 호출 가능하게 한다.

-service instance 추가/제거 시 별도의 설정 작업 없이 가능하게 한다. 

-Eureka clientr가 Eureka SErver 에게 주기적으로 통신(default 30s)

-Eureka cleint 는 Eureka Server 로부터 Registry 정보를 읽어와 로컬에 캐시한다.


이번엔 Eureka server, client 설정과 함께 Eureka server 이중화까지 적용한다.

Eureka Server 는 자동으로 replication 을 지원한다.


기본 설정


1. Eureka Server 설정

1.1 pom.xml 설정

1
2
3
4
5
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

cs


1.2 SpringBootApplication 설정

@EnableEurekaServer annotaion 추가

1
2
3
4
5
6
7
8
9
10
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryApplication {
 
    public static void main(String[] args) {
        new SpringApplicationBuilder(DiscoveryApplication.class).run(args);
    }
 
}
 
cs


1.3 bootstap.yml 설정

discovery-service 1 (IP : 1.1.1.1)

1
2
3
4
5
6
7
8
9
10
11
1
13
14
server:
  port: 8061
 
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
   
 
cs


2. Eureka Client 설정

2.1 pom.xml 설정

1
2
3
4
5
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

cs



2.2 SpringBootApplication 설정

@EnableDiscoveryClient annotaion 추가

1
2
3
4
5
6
7
8
9
10
@SpringBootApplication
@EnableDiscoveryClient
public class DiscoveryApplication {
 
    public static void main(String[] args) {
        new SpringApplicationBuilder(DiscoveryApplication.class).run(args);
    }
 
}
 
cs


2.3 bootstrap.yml 설정 추가


1
2
3
4
5
6
7
8
server:
  port: 8060
 
eureka:
  client:
    serviceUrl:
      defaultZone: http://1.1.1.1:8061/eureka/
 
cs


Eureka Server 이중화 

- discovery service 가 다운되는 경우를 고려해 replication 하는 server 를 1대 추가 한다. (Fail over)

- 기본 설정 후에 적용 한다.

discovery-service1, discovery-service2 : Eureka Server 

proxy-service, A-service, B-servie : Eureka Client



1. Eureka Server 설정

1.1 bootstap.yml 설정 추가

Peer 가 되는 IP 와 Port 정보를 defaultZone 을 수정

discovery-service 1 (IP : 1.1.1.1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server:
  port: 8061
 
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
       defaultZone: http://2.2.2.2:${server.port}/eureka/
 
cs

discovery-service 2 (IP : 2.2.2.2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server:
  port: 8061
 
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
       defaultZone: http://1.1.1.1:${server.port}/eureka/
 
cs


2. Eureka Client 설정 

proxy-service, A-service, B-servie 모두 추가 한다.

2.1 bootstrap.yml 설정 추가

1
2
3
4
5
6
7
8
server:
  port: 8060
 
eureka:
  client:
    serviceUrl:
      defaultZone: http://1.1.1.1:8061/eureka/, http://2.2.2.2:8061/eureka/
 
cs


Eureka Server 는 eureka dashboard 를 제공한다.

web 에서 http://1.1.1.1:8061/ 과 http://2.2.2.:8061 로 접속하면, Eureka client 들을 replication 해서 동일하게 가지고 있는것을 확인할 수 있다.

Comments