일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- datasource
- 아이오닉
- spring boot
- 도커
- 아이오닉 설치
- yml 여러개
- docker
- mariadb
- 16.04
- github
- CORS
- Spring
- git
- MSA
- 도커 설치
- Service Registry
- eureka
- Service Discovery
- spring boot rest api
- multiple yml
- 다중 yml
- ionic
- yml constant
- ionic install
- Spring cloud
- docker isntall
- Rest
- gitlab
- spring constant
- api 서버
- Today
- Total
개발 메모장
[Spring Cloud] Eureka Server / Client 구성하기 본문
Eureka(유레카) 란
Eureka는 넷플릭스에서 공개한 OSS Service Registry이다.
마이크로 서비스를 하다보면 내부 서비스들끼리 통신을 할 경우가 발생한다.
A서버에서 B서버로 요청할 때 만약 IP주소로 요청을 하게 된다면 B의 IP가 변경되었을 때 A에 있는 B의 IP 정보도 수정해야 한다.
그래서 Service Registry를 사용할 경우
A서버와 B서버가 올라오면서 Service Registry에 서버 정보를 등록하고 각각의 서버는 Service Registry 에 등록되어 있는 서비스 이름으로 호출할 수 있게 된다.
Eureka는 이렇게 기본적으로 Service Registry / Service Discovery 역할을 한다.
그럼 이제 이 Eureka 서버를 생성하는법을 알아보자
For Server
1. 프로젝트 생성
프로젝트는 IDE 나 https://start.spring.io/를 통해 생성할 수 있다. 이번에는 IntelliJ 로 프로젝트를 생성했다.
사실 Dependency는 매우 단순하다.
Spring Cloud에 Eureka Server 만 있어도 된다. 하지만 누구나 접근해서 등록되어 있는 서버 정보를 확인하는 것을 막기 위하여 위하여 spring security도 포함하였다.
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
implementation 'org.springframework.boot:spring-boot-starter-security'
2. Eureka Server 시작
먼저 Application에 @EnableEurekaServer를 추가한다.
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
보안을 위한 Config파일을 추가한다.
@EnableWebSecurity
class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
}
spring security를 추가하면 기본적으로 csrf가 동작한다. 그래서 접근을 하려면 토큰이나 별다른 인증방식이 필요한데 이부분을 해제하고 대신 모든 요청에 대헤서 인증을 하도록 추가한다.
그리고 application.yml 에 기본정보를 설정을 해준다.
spring:
security:
user:
name: admin
password: admin
eureka:
client:
register-with-eureka: false
fetch-registry: false
server:
port: 8761
register-with-eureka : eureka에 등록여부를 정한다. 이 서버는 본인 자신이기에 등록하지 않는다.
fetch-registry : registry의 항목을 로컬로 캐시할것인지 정한다. 이것도 필요 없으므로 하지 않는다.
그리고 접속을 위한 user 정보를 입력한다. 그리고 실행!
http://localhost:8761 접속
그리고 위에 설정한 정보로 로그인한다.
그럼 이렇게 eureka서버가 올라온 것을 확인할 수 있다. 이러면 서버는 끝났다.
For Client
1. Dependency 추가
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
서비스를 eureka에 등록하기 위하여 위 디펜던시를 추가한다.
2. 설정 추가
@SpringBootApplication
@EnableEurekaClient
public class EurekaclientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaclientApplication.class, args);
}
}
@EnableEurekaClient를 추가해서 Client로 등록한다.
그리고 application.yml에 추가한다.
server:
port: 8888
spring:
application:
name: eureka-client
eureka:
client:
fetch-registry: true
register-with-eureka: true
service-url:
defaultZone : http://admin:admin@localhost:8761/eureka/
instance:
hostname: localhost
eureka.client.service-url.defaultZone 에 유레카 서버의 인증정보와 함께 유레카 서버를 등록한다. 그리고 실행!!!
다시 http://localhost:8761/ 접속
그럼 YML에서 등록한 이름으로 유레카 서버에 등록이 된걸 볼 수 있다.
'Server' 카테고리의 다른 글
[Spring] MySQL(Maria) DataSource 프로퍼티 (0) | 2021.05.01 |
---|---|
[Spring] Multiple YML(Constants) 파일 관리 (0) | 2020.08.09 |
[Spring Boot] Rest API Server(2) - 서버 기본동작(get,post,put,delete) (0) | 2020.08.08 |
[Spring Boot] Rest API Server(1) - IntelliJ 프로젝트 생성 (0) | 2020.08.08 |