Eureka
๋ก์ปฌ์ ํ๊ฒฝ์์๋ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํด ์๋น์ค์ ๋ฐ๊ฒฌ
์ ์ํํด์๋๋ฐ ๋งคํ ๊ท์น์ ๋งค๋ฒ ์๋์ผ๋ก ์ง์ ํ๋ ๊ฒ์ Cloud Native architecture์ ๋ค์ด์์ ๋ถ์ ํฉํ๊ธฐ ๋๋ฌธ์ ์์ ์ ์๋น์ค๋ฅผ ๋์ ์ผ๋ก ๋ฑ๋กํ๊ณ ์ค์ค๋ก ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ ์ ์๋๋ก ๊ด๋ฆฌ ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ด ํ์ํด์ก๊ณ ์ด๋ฌํ ์์
์ ์ํด ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋งค์ปค๋์ฆ
๊ฐ ์๊ฒจ๋ฌ๋ค.
์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋งคํฐ๋์ฆ์ ๋ค์๊ณผ ๊ฐ์ ํน์ง๋ฅผ ๊ฐ๋๋ค.
์๋น์ค ๋์ ๋ฑ๋ก ๋ฐ ์ ๋ณด ๊ณต์
์๋น์ค๊ฐ ์์๋ ๋ ์์น, ํฌํธ๋ฑ ์ ๋ณด๋ฅผ ๋ ์ง์คํธ๋ฆฌ์ ๋์ผํ ์๋น์คid๋ก ๋ฑ๋ก ํ๋ค. ๋ฑ๋ก๋ ์๋น์ค๋ ํด๋ฌ์คํฐ์ ์๋ ๋ค๋ฅธ ๋ ธ๋๋ค์๊ฒ ์ ํํ๋ค.
์๋น์ค ๋์ ๋ฐ๊ฒฌ
์ ์ ์ผ๋ก ์๋น์ค๋ฅผ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๋๊ฒ์ด ์๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํตํด ๋ฐ๋ก ๋ฐ๋ก ์ฌ์ฉ๊ฐ๋ฅํ url์ ๋ฐ๊ฒฌํ๊ณ ๋งค๋ฒ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ ํ๋ค.
์ํ ๋ชจ๋ํฐ๋ง : ๊ฐ ์๋น์ค(์ธ์คํด์ค)๋ค์ ์์ ์ ์ํ๋ฅผ ๋ ์ง์คํธ๋ฆฌ์๊ฒ ์๋ฆฐ๋ค.
๊ตฌ์ฑ
Eureka Server : Eureka client์ ํด๋นํ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ค์ ์ํ์ ๋ณด๊ฐ ๋ฑ๋ก๋์ด ์๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ฐ๋๋ค.
Eureka Client : ์๋น์ค๊ฐ ์์๋ ๋ Server์ ์์ ์ ์ ๋ณด๋ฅผ ๋ฑ๋กํด์ 30์ด๋ง๋ค ๋ ์ง์คํธ๋ฆฌ์ ping์ ๋ณด๋ด ๊ฐ์ฉ์ํ๋ฅผ ์๋ฆฌ๊ณ ์ผ์ ์ด์ ๋ฐ์ง ๋ชปํ๋ฉด Server๋ ์๋น์ค๋ฅผ ๋ ์ง์คํธ๋ฆฌ์์ ์ ์ธ์ํจ๋ค.
๊ฐ์ฉ์ํ์ ์๋น์ค ๋ชฉ๋ก์ ํ์ธํ ๊ฒฝ์ฐ ์๋น์ค์ ์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ํ์ํ๋ฉฐ ๋ก๋๋ฐธ๋ฐ์ฑ์ ์ํด Ribbon์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
@EnableEurekaServer
ํด๋น ์๋น์ค๋ฅผ Eureka ์๋ฒ๋ก ์ง์ ํ๊ธฐ ์ํด์ ์๋น์ค ์ง์ ์ ์ด ๋๋ ํด๋์ค์ ํด๋น ์ด๋ ธํ ์ด์ ์ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค.
๊ธฐ๋ณธ ํ๊ฒฝ ์ค์ (application.yml)
eureka.client.register-with-eureka
eureka.client.fetch-registry
๊ธฐ๋ณธ๊ฐ์ true๋ก ์๊ธฐ์์ ์ ์ ๋ณด๋ฅผ client๋ก ๋ฑ๋กํ๊ณ ์ํ๋ฅผ ํจ์นญํ๋ ์ค์ ์ผ๋ก ๋ค๋ฅธ ์๋น์ค๋ค๊ณผ ํต์ ์ ํ๊ธฐ ์ํด์๋ true์ด์ด์ผ ํ๋ค.
eureka.client.service-url.defaultZone :
์ ๋ ์นด ์๋ฒ
์ ์์น๋ฅผ ๋ช ์ํด์ฃผ์ด์ผ ํ๋ค.eureka.instance.instance-id : instance id๋ฅผ ์ค์
ex)
${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
์ถ๊ฐ) IntelliJ์์ ํ๋์ ์๋น์ค๋ฅผ ์คํ์ํฌ๋ ํฌํธ์ต์
์ ๋ค๋ฅด๊ฒ ์ฃผ๋ ๋ฐฉ๋ฒ
IntelliJ์์ ์ค์
application.yml์์ server.port ์ง์
server.port๋ฅผ 0์ผ๋ก ์คํ์ํค๋ฉด random port๋ก port๊ฐ ์ถฉ๋๋์ง ์๋๋ก ์์์ ์ง์ ํด์ ์คํ๋๋ค.
ํ์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ์๋น์คid๊ฐ ๋์ผํ๊ฒ ๋๋ฉด ํ๋์ ์ธ์คํด์ค๊ฐ ๋ฑ๋ก๋๊ฒ์ผ๋ก ํ์ธ์ด ๋๊ธฐ ๋๋ฌธ์
eureka.instance.instance-id
๋ฅผ ํตํด ์ธ์คํด์ค ์ด๋ฆ์ ๋ฐ๊พธ์ด ์ฃผ์ด์ผ ํ๋ค.
run configuration์์ Environments -> JVM option์ผ๋ก -Dserver.port='9001' ์ง์ Terminal์์ ์ค์
java์คํ ์ต์ ์ผ๋ก ์ค์
mvn compile package
๋ฅผ ํตํดjar
ํจํค์ง ํjava -jar -Dserver.port=9001 ํ์ผ๊ฒฝ๋ก/jar์ด๋ฆ.jar
๋ก jarํ์ผ ์คํmvn run ๋ช ๋ น์ด์ ์ต์ ์ผ๋ก ์ค์ ํ ์คํ
mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'
depenecy ์ถ๊ฐ
Spring boot ๋ฒ์ ์ ์ค์ ํ๋ฉด ๊ทธ์ ๋ง๋ spring cloud๋ฒ์ ์ด ์์์ ์ค์ ๋๋ค.
Eureka Server
maven
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
gradle
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
}
Eureka Client
maven
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
gradle
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}
Last updated