๋ฌธ์
ํ๋ก์ ํธ ๋ฒ์
- Spring Cloud Config Server: Spring Boot 2.7.4
- ๊ฐ๊ฐ์ ์๋น์ค ์๋ฒ๋ค: Spring Boot 2.7.4
- Spring Discovery Server: Spring Boot 2.7.4
- Spring GateWay Server: Spring Boot 2.7.4
ํ์ฌ ์ํฉ์ ์์ ์ด๋ฏธ์ง์ฒ๋ผ Spring Cloud Conifg ์๋ฒ๋ฅผ ๋์ด ํ ๊ฐ๊ฐ์ Spring Boot Application์์ ํด๋น Config ์๋ฒ๋ก๋ถํฐ ์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์์ต๋๋ค.
์ด๋ Config Server์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋์์ ๋ ์์ ๋ ๋ด์ฉ์ ๊ฐ๊ฐ์ Spring Boot Application์ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋ฒ ์ฌ๊ธฐ๋
- Actuator Refresh
- Spring Cloud Bus
์ ๋ ์ด ์ค์์ 2๋ฒ ๋ฐฉ๋ฒ์ ํ ๋๋ก ํ์ต์ ํ๊ณ ์๋๋ฐ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋จผ์ ๊ฐ๊ฐ์ ์ด๋ฏธ์ง๋ Config Server์ ๋ฑ๋ก๋ Config ๊ฐ, Config Server์ ์ธํ , User Service Server์ ์ธํ ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๋ฐ๋ผ๋ณด๋ user-service ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋น ๊ฐ๋ค์ ์ ๋ถ๋ฌ์ค๋์ง ํ ์คํธํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ controller๋ฅผ ํ๋ ๋ง๋ค์์ต๋๋ค.
@GetMapping("/health_check")
public String status() {
return String.format("It's Working is User Service "
+ ", port(local.server.port) = " + env.getProperty("local.server.port")
+ ", port(server.port) = " + env.getProperty("server.port")
+ ", token secret = " + env.getProperty("token.secret")
+ ", token expiration time = " + env.getProperty("token.expiration_time")
+ ", gateway ip = " + env.getProperty("gateway.ip")
);
}
๋ณด์ด๋ ๋ฐ์ ๊ฐ์ด user-service server์ health_check apiํธ์ถ์ ํตํด config-server์ ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ user-service์์ ๊ฐ์ ธ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ token.expiration_time์ ๊ฐ์ ๋ณ๊ฒฝ์์ผ์ ๋ฐ์์ด ๋๋์ง ํ์ธํ ๊ฒ์ ๋๋ค.
config server token.expiration_time: 100000 -> 86400000๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
spring cloud config server์์ git์ผ๋ก ํด๋น ๊ฐ์ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์, ๋ณ๊ฒฝ๋ ๋ด์ฉ๋ git์ผ๋ก ๋ฐ์์์ผ์ฃผ์์ต๋๋ค.
actuator/refresh ํธ์ถ ์์ํ ๊ฐ์ 200์ผ๋ก ์ฑ๊ณตํ๋ค๊ณ ๋์ต๋๋ค. ํ์ง๋ง ์๋๋ผ๋ฉด ๋ณ๊ฒฝ๋ ๊ฐ์ธ token.expiration_time์ด body์ ์ฐํ์ ๋์์ผ ํ์ง๋ง ๋์ค์ง ์์ต๋๋ค.
๋๊ตฐ๋ค๋ Config Server์์๋ Could not merge remote for main remote: null์ ๋ด๋ฑ์ต๋๋ค.
์์ธ ๋ฐ ํด๊ฒฐ
์์ธ์ ๋ฐ๋ก Config Server๋ฅผ ๋ฐ๋ผ๋ณด๋ ๊ฐ๊ฐ์ ์๋น์ค ์ค ํ๋์ธ user service server์ ์ธํ ๊ฐ์ด ์์ธ์ด์์ต๋๋ค.
์ ๋ ์์ ๊ฐ์ด User Service Server์ application.yml์์ ์ง์ ์ ์ผ๋ก config server๋ฅผ ์ฐ๋ํ์ต๋๋ค.
ํ์ง๋ง ์์ ๊ฐ์ด application.yml์ ์ง์ ๋ช ์ํ๋ ๊ฒ์ด ์๋๋ผ bootstrap.yml์ ๊ฐ์ ์์ฑ ํ ๋ค application.yml์์ ์ด bootstrap.yml์ ๋ฐ๋ผ๋ณด๋๋ก ์ค์ ํ๋ฉด ํด๊ฒฐ์ด ๋์์ต๋๋ค.
์ฌ์๋
๋ค์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ ๋ค actuator/refresh๋ฅผ ํธ์ถํ์ต๋๋ค.
์ด์ ์ ์์ ์ผ๋ก ๋ณ๊ฒฝ์ฌํญ์ด ์๋ token.expiration_time์ด body๊ฐ์ผ๋ก ๋์ด์ต๋๋ค.
refresh ํ /health_check๋ฅผ ํธ์ถํ์ ๋ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฌด์ฌํ ๋ฐ์๋์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ ๋ฆฌ
"Spring Boot 2.4 ๋ฒ์ ์ดํ๋ถํฐ๋ bootstrap.yml ํ์ผ ๋์ spring.config.import ์ค์ ์ ์ฌ์ฉํ์ฌ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ก ํ๊ณ ์๋ค."๋ผ๋ ๋ฌธ์ฅ์ ์ด๋์ ๋ณด๊ฒ ๋์ด ์ง์ application.yml์ cloud config๋ฅผ import ํด์ฃผ์์ง๋ง ์คํ๋ ค ํด๋น ๋ฐฉ๋ฒ์ด ๋ ์ด ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ํํ ์์ธ์ ์์งํ ์ ๋ชจ๋ฅด๊ฒ ์ผ๋ bootstrap.yml์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ๋์์ต๋๋ค. ํน์๋ ์์๋ ๋ถ ๊ณ์๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๐ฅน
'BackEnd๐ฑ > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋์ญ์ (Transaction)์ ์์ธ(Exception)์ ๋ฐ๋ฅธ ๋กค๋ฐฑ ์ฒ๋ฆฌ (1) | 2023.02.05 |
---|---|
DB ์ปค๋ฅ์ ํ(Connection Pool)๊ณผ Hikari CP (3) | 2023.01.18 |
Spring JDBC๋ฅผ ์ฌ์ฉํ์ฌ Batch Insert ์ํํ๊ธฐ (2) | 2023.01.09 |
Actuator dependency and Swagger Stater 3.0.0 ์ถฉ๋ ์๋ฌ (0) | 2022.11.11 |
JUnit5 ์์ธํ ์์๋ณด๊ธฐ (3) | 2022.10.02 |
[Spring] StringUtils ์ ์ฉํ ๋ฉ์๋ ์ ๋ฆฌ (0) | 2022.08.31 |
๋๊ธ