diff --git a/Caddyfile b/Caddyfile index fad2883e8d3b566b85e8395af5a4410672c2a752..02b8af1e04cf8adafe3634eb99c6686756b93476 100644 --- a/Caddyfile +++ b/Caddyfile @@ -2,8 +2,10 @@ root * /usr/share/caddy file_server - reverse_proxy /user* { - to backend_1:9876 backend_2:9877 - lb_policy round_robin + reverse_proxy /user* backend1:9876 backend2:9877 { + lb_policy first + health_uri /health + health_interval 10s + health_timeout 1s } } \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 042d4a31da51d7cc2d4ac73d843c1d3b1ff841b3..eb1e011ccd1a07dcbfae8ccae7a66a4ab155635c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,8 +24,8 @@ services: networks: - todo-network - # backend stuff - backend_1: + # backend1 + backend1: # builds backend from root build: . # the internal network our backend will be using @@ -46,8 +46,8 @@ services: depends_on: - mongodb - # backend stuff - backend_2: + # backend2 + backend2: # builds backend from root build: . # the internal network our backend will be using @@ -79,6 +79,7 @@ services: networks: - todo-network + # caddy for load balancing and reverse proxying caddy: image: caddy/caddy:alpine @@ -90,6 +91,8 @@ services: - "80:80" # default http port networks: - todo-network + depends_on: + - frontend # were gonna use this network for both our backend and frontend networks: diff --git a/src/main/java/com/cloudcomputing/todo/controller/HealthController.java b/src/main/java/com/cloudcomputing/todo/controller/HealthController.java new file mode 100644 index 0000000000000000000000000000000000000000..b519ecac788a26b508563cb1f77de23945cb1e6a --- /dev/null +++ b/src/main/java/com/cloudcomputing/todo/controller/HealthController.java @@ -0,0 +1,14 @@ +package com.cloudcomputing.todo.controller; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HealthController { + + @GetMapping("/health") + public ResponseEntity<Boolean> health() { + return ResponseEntity.ok(true); + } +}