diff --git a/docker-compose-prod/docker-compose.gateway.yml b/docker-compose-prod/docker-compose.gateway.yml index b6f72fcd..25703fad 100644 --- a/docker-compose-prod/docker-compose.gateway.yml +++ b/docker-compose-prod/docker-compose.gateway.yml @@ -8,18 +8,18 @@ services: image: gateway:1.0.0 environment: INTERNAL_SECRET: super-secret-key-123 - MS_MEETING_URI: http://ms-meeting:8080 - MS_VOTING_URI: http://ms-voting:8080 + MS_MEETING_URI: lb://ms-meeting + MS_VOTING_URI: lb://ms-voting MS_HOUSING_URI: http://ms-housing:8080 - MS_INVITATION_URI: http://ms-invitation:8080 - MS_REPORT_URI: http://ms-report:8080 - MS_NOTIFICATION_URI: http://ms-notification:8080 + MS_INVITATION_URI: lb://ms-invitation + MS_REPORT_URI: lb://ms-report + MS_NOTIFICATION_URI: lb://ms-notification JWT_SECRET: ThisIssfnsdkjfksjfksdjfksdjfsdbjfadfjsjdfhgsjashkfjhsjfhjsdhvfdjvksdfhsjkd CONSUL_HOST: consul CONSUL_PORT: 8500 - SPRING_PROFILES_ACTIVE: dev + SPRING_PROFILES_ACTIVE: prod ports: - "9000:8080" depends_on: diff --git a/docker-compose-prod/docker-compose.housing.yml b/docker-compose-prod/docker-compose.housing.yml index ecdcbca7..7b11e810 100644 --- a/docker-compose-prod/docker-compose.housing.yml +++ b/docker-compose-prod/docker-compose.housing.yml @@ -1,6 +1,6 @@ services: ms-housing: - container_name: ms-housing-prod + #container_name: ms-housing-prod restart: always build: dockerfile: Dockerfile @@ -28,6 +28,7 @@ services: depends_on: - db-housing - rabbitmq + - consul expose: - "8080" @@ -39,6 +40,4 @@ services: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: housing MYSQL_USER: test - MYSQL_PASSWORD: test - ports: - - "3308:3306" \ No newline at end of file + MYSQL_PASSWORD: test \ No newline at end of file diff --git a/docker-compose-prod/docker-compose.invitation.yml b/docker-compose-prod/docker-compose.invitation.yml index 79469539..b463e7f3 100644 --- a/docker-compose-prod/docker-compose.invitation.yml +++ b/docker-compose-prod/docker-compose.invitation.yml @@ -27,8 +27,8 @@ services: GATEWAY_URL: http://gateway:8080 SPRING_PROFILES_ACTIVE: prod - ports: - - "8083:8080" + expose: + - "8080" depends_on: - db-invitation - rabbitmq diff --git a/docker-compose-prod/docker-compose.meeting.yml b/docker-compose-prod/docker-compose.meeting.yml index ce49fe36..1badc6f8 100644 --- a/docker-compose-prod/docker-compose.meeting.yml +++ b/docker-compose-prod/docker-compose.meeting.yml @@ -30,8 +30,8 @@ services: - consul - rabbitmq - db-meeting - ports: - - "8087:8080" + expose: + - "8080" db-meeting: container_name: db-meeting-prod image: mysql:8.0 @@ -40,6 +40,4 @@ services: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: meeting MYSQL_USER: test - MYSQL_PASSWORD: test - ports: - - "3311:3306" + MYSQL_PASSWORD: test \ No newline at end of file diff --git a/docker-compose-prod/docker-compose.notification.yml b/docker-compose-prod/docker-compose.notification.yml index cd55b469..05170f14 100644 --- a/docker-compose-prod/docker-compose.notification.yml +++ b/docker-compose-prod/docker-compose.notification.yml @@ -25,8 +25,8 @@ services: CONSUL_PORT: 8500 SPRING_PROFILES_ACTIVE: prod - ports: - - "8095:8080" + expose: + - "8080" depends_on: - db-notification - rabbitmq @@ -40,5 +40,3 @@ services: MYSQL_DATABASE: notification MYSQL_USER: test MYSQL_PASSWORD: test - ports: - - "3307:3306" diff --git a/docker-compose-prod/docker-compose.report.yml b/docker-compose-prod/docker-compose.report.yml index 5b58fdb8..338d42f2 100644 --- a/docker-compose-prod/docker-compose.report.yml +++ b/docker-compose-prod/docker-compose.report.yml @@ -30,8 +30,8 @@ services: depends_on: - rabbitmq - db-report - ports: - - "8084:8080" + expose: + - "8080" db-report: container_name: db-report-prod image: mysql:8.0 @@ -41,5 +41,3 @@ services: MYSQL_DATABASE: report MYSQL_USER: test MYSQL_PASSWORD: test - ports: - - "3310:3306" diff --git a/docker-compose-prod/docker-compose.voting.yml b/docker-compose-prod/docker-compose.voting.yml index 3680fe6b..20af1f74 100644 --- a/docker-compose-prod/docker-compose.voting.yml +++ b/docker-compose-prod/docker-compose.voting.yml @@ -1,6 +1,6 @@ services: ms-voting: - container_name: ms-voting-prod + #container_name: ms-voting-prod restart: always build: dockerfile: Dockerfile @@ -33,8 +33,10 @@ services: - rabbitmq - consul - db-voting - ports: - - "8080:8080" + deploy: + replicas: 2 + expose: + - "8080" db-voting: container_name: db-voting-prod image: mysql:8.0 @@ -44,5 +46,3 @@ services: MYSQL_DATABASE: voting MYSQL_USER: test MYSQL_PASSWORD: test - ports: - - "3306:3306" diff --git a/gateway/pom.xml b/gateway/pom.xml index 7b5c5f66..d84b47d6 100644 --- a/gateway/pom.xml +++ b/gateway/pom.xml @@ -80,6 +80,10 @@ org.springframework.boot spring-boot-starter-actuator + + org.springframework.cloud + spring-cloud-starter-loadbalancer + org.springframework.cloud spring-cloud-starter-gateway-server-webflux diff --git a/gateway/src/main/java/com/micro/gateway/clientHousing/WebClientConfig.java b/gateway/src/main/java/com/micro/gateway/clientHousing/WebClientConfig.java new file mode 100644 index 00000000..1c995270 --- /dev/null +++ b/gateway/src/main/java/com/micro/gateway/clientHousing/WebClientConfig.java @@ -0,0 +1,15 @@ +package com.micro.gateway.clientHousing; + +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; + +@Configuration +public class WebClientConfig { + @Bean + @LoadBalanced + public WebClient.Builder loadBalancedWebClientBuilder() { + return WebClient.builder(); + } +} diff --git a/gateway/src/main/resources/application-prod.yml b/gateway/src/main/resources/application-prod.yml index 8c962a74..1730ef29 100644 --- a/gateway/src/main/resources/application-prod.yml +++ b/gateway/src/main/resources/application-prod.yml @@ -8,6 +8,16 @@ spring: consul: host: ${CONSUL_HOST} port: ${CONSUL_PORT} + discovery: + enabled: true + register: true + service-name: ${spring.application.name} + health-check-interval: 10s + instance-id: ${spring.application.name}:${random.value} + prefer-agent-address: false + prefer-ip-address: false + query-passing: true + gateway: server: @@ -53,6 +63,11 @@ spring: - "PUT" - "OPTIONS" allowCredentials: true + discovery: + locator: + lower-case-service-id: true + enabled: true + management: endpoint: health: diff --git a/housing_association/src/main/resources/application-prod.yml b/housing_association/src/main/resources/application-prod.yml index 39bf8c7c..b1c62b69 100644 --- a/housing_association/src/main/resources/application-prod.yml +++ b/housing_association/src/main/resources/application-prod.yml @@ -26,6 +26,15 @@ spring: consul: host: ${CONSUL_HOST} port: ${CONSUL_PORT} + discovery: + enabled: true + register: true + service-name: ${spring.application.name} + instance-id: ${spring.application.name}-${random.value} + health-check-path: /actuator/health + health-check-interval: 10s + hostname: ${HOSTNAME:localhost} + prefer-ip-address: true amqp: exchanges: diff --git a/voting/src/main/resources/application-prod.yml b/voting/src/main/resources/application-prod.yml index 0f376f12..fad2eaf3 100644 --- a/voting/src/main/resources/application-prod.yml +++ b/voting/src/main/resources/application-prod.yml @@ -25,6 +25,15 @@ spring: consul: host: ${CONSUL_HOST} port: ${CONSUL_PORT} + discovery: + enabled: true + register: true + service-name: ${spring.application.name} + instance-id: ${spring.application.name}-${random.value} + health-check-path: /actuator/health + health-check-interval: 10s + hostname: ${HOSTNAME:localhost} + prefer-ip-address: true amqp: queues: @@ -54,3 +63,4 @@ management: endpoint: health: show-components: always + show-details: always