Skip to content

Commit 70db02c

Browse files
authored
#68 Add Spring Cloud Load Balancing (#72)
Signed-off-by: vityaman <vityaman.dev@yandex.ru>
1 parent 0a61395 commit 70db02c

File tree

14 files changed

+72
-42
lines changed

14 files changed

+72
-42
lines changed

backend/authik/src/main/resources/application.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ spring:
44
application:
55
name: authik
66
datasource:
7-
url: jdbc:postgresql://authik-database:5432/${POSTGRES_DB}
7+
url: jdbc:postgresql://authik-database-primary.dating.se.ifmo.ru:5432/${POSTGRES_DB}
88
username: ${POSTGRES_USER}
99
password: ${POSTGRES_PASSWORD}
1010
r2dbc:
11-
url: r2dbc:postgresql://authik-database:5432/${POSTGRES_DB}
11+
url: r2dbc:postgresql://authik-database-primary.dating.se.ifmo.ru:5432/${POSTGRES_DB}
1212
username: ${POSTGRES_USER}
1313
password: ${POSTGRES_PASSWORD}
1414
security:

backend/buildSrc/build.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ kotlin {
1414

1515
dependencies {
1616
val kotlinVersion = "2.0.10"
17-
val jooqVersion = "3.19.15"
17+
val jooqVersion = "3.19.17"
1818

1919
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
2020
implementation("org.jetbrains.kotlin:kotlin-allopen:$kotlinVersion")
2121

2222
implementation("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.7")
2323

24-
implementation("org.openapitools:openapi-generator-gradle-plugin:7.9.0")
24+
implementation("org.openapitools:openapi-generator-gradle-plugin:7.10.0")
2525

2626
implementation("org.jooq:jooq-codegen:$jooqVersion")
2727
implementation("org.jooq:jooq-codegen-gradle:$jooqVersion")

backend/config/crypto/ca.cnf

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ST = Saint-Petersburg
1111
L = Saint-Petersburg
1212
O = ITMO Dating
1313
OU = IT
14-
CN = ITMO Dating Root CA
14+
CN = *.dating.se.ifmo.ru
1515

1616
[v3_ca]
1717
subjectKeyIdentifier = hash

backend/config/crypto/csr.cnf

+11-5
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,20 @@ ST = Saint-Petersburg
1111
L = Saint-Petersburg
1212
O = ITMO Dating
1313
OU = IT
14-
CN = dating.se.ifmo.ru
14+
CN = *.dating.se.ifmo.ru
1515

1616
[req_ext]
1717
subjectAltName = @alt_names
1818

1919
[alt_names]
2020
DNS.1 = localhost
21-
DNS.2 = authik
22-
DNS.3 = matchmaker
23-
DNS.4 = people
24-
DNS.5 = server.dc1.consul
21+
DNS.2 = authik-0.dating.se.ifmo.ru
22+
DNS.3 = authik-1.dating.se.ifmo.ru
23+
DNS.4 = authik-2.dating.se.ifmo.ru
24+
DNS.5 = matchmaker-0.dating.se.ifmo.ru
25+
DNS.6 = matchmaker-1.dating.se.ifmo.ru
26+
DNS.7 = matchmaker-2.dating.se.ifmo.ru
27+
DNS.8 = people-0.dating.se.ifmo.ru
28+
DNS.9 = people-1.dating.se.ifmo.ru
29+
DNS.10 = people-2.dating.se.ifmo.ru
30+
DNS.11 = server.dc1.consul

backend/foundation/src/main/kotlin/ru/ifmo/se/dating/spring/api/WebClientBuilderConfig.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ru.ifmo.se.dating.spring.api
22

33
import io.netty.handler.ssl.SslContext
4+
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
45
import org.springframework.context.annotation.Bean
56
import org.springframework.context.annotation.Configuration
67
import org.springframework.http.client.reactive.ReactorClientHttpConnector
@@ -12,6 +13,7 @@ class WebClientBuilderConfig(
1213
private val ssl: SslContext,
1314
) {
1415
@Bean
16+
@LoadBalanced
1517
fun webClientBuilder() = WebClient.builder()
1618
.clientConnector(
1719
ReactorClientHttpConnector(

backend/foundation/src/main/resources/application-foundation.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,4 @@ security:
2626
public: ${TOKEN_SIGN_KEY_PUBLIC}
2727
logging:
2828
level:
29-
web: DEBUG
30-
org.springframework.cloud.consul: DEBUG
29+
web: INFO

backend/gateway/src/main/resources/application.yml

+13-13
Original file line numberDiff line numberDiff line change
@@ -8,85 +8,85 @@ spring:
88
routes:
99

1010
- id: get-authik-openapi-api-yml
11-
uri: https://authik:8080
11+
uri: lb://authik
1212
predicates:
1313
- Method=GET
1414
- Path=/openapi/authik/api.yml
1515
filters:
1616
- RewritePath=/openapi/authik/api.yml, /openapi/api.yml
1717

1818
- id: get-matchmaker-openapi-api-yml
19-
uri: https://matchmaker:8080
19+
uri: lb://matchmaker
2020
predicates:
2121
- Method=GET
2222
- Path=/openapi/matchmaker/api.yml
2323
filters:
2424
- RewritePath=/openapi/matchmaker/api.yml, /openapi/api.yml
2525

2626
- id: get-people-openapi-api-yml
27-
uri: https://people:8080
27+
uri: lb://people
2828
predicates:
2929
- Method=GET
3030
- Path=/openapi/people/api.yml
3131
filters:
3232
- RewritePath=/openapi/people/api.yml, /openapi/api.yml
3333

3434
- id: put-authik-auth-telegram-web-app
35-
uri: https://authik:8080
35+
uri: lb://authik
3636
predicates:
3737
- Method=PUT
3838
- Path=/api/auth/telegram/web-app
3939

4040
- id: get-matchmaker-suggestions
41-
uri: https://matchmaker:8080
41+
uri: lb://matchmaker
4242
predicates:
4343
- Method=GET
4444
- Path=/api/suggestions
4545

4646
- id: post-matchmaker-people-attitudes-incoming
47-
uri: https://matchmaker:8080
47+
uri: lb://matchmaker
4848
predicates:
4949
- Method=POST
5050
- Path=/api/people/*/attitudes/incoming/*
5151

5252
- id: delete-matchmaker-attitudes
53-
uri: https://matchmaker:8080
53+
uri: lb://matchmaker
5454
predicates:
5555
- Method=DELETE
5656
- Path=/api/attitudes
5757

5858
- id: get-matchmaker-people-matches
59-
uri: https://matchmaker:8080
59+
uri: lb://matchmaker
6060
predicates:
6161
- Method=GET
6262
- Path=/api/people/{person_id}/matches
6363

6464
- id: get-people-person-id
65-
uri: https://people:8080
65+
uri: lb://people
6666
predicates:
6767
- Method=GET
6868
- Path=/api/people/*
6969

7070
- id: delete-people-person-id
71-
uri: https://people:8080
71+
uri: lb://people
7272
predicates:
7373
- Method=DELETE
7474
- Path=/api/people/*
7575

7676
- id: patch-people-person-id
77-
uri: https://people:8080
77+
uri: lb://people
7878
predicates:
7979
- Method=PATCH
8080
- Path=/api/people/*
8181

8282
- id: get-people-faculties
83-
uri: https://people:8080
83+
uri: lb://people
8484
predicates:
8585
- Method=GET
8686
- Path=/api/faculties
8787

8888
- id: get-people-locations
89-
uri: https://people:8080
89+
uri: lb://people
9090
predicates:
9191
- Method=GET
9292
- Path=/api/locations

backend/gradle/libs.versions.toml

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ org-springframework-boot-spring-boot = "3.4.1"
33
org-springframework-spring = "6.2.1"
44
org-springframework-cloud = "4.2.0"
55

6-
io-swagger-core-v3-swagger = "2.2.25"
6+
io-swagger-core-v3-swagger = "2.2.27"
77
org-openapitools-jackson-databind-nullable = "0.2.6"
8-
org-springdoc-springdoc-openapi-starter = "2.6.0"
8+
org-springdoc-springdoc-openapi-starter = "2.8.2"
99

1010
io-jsonwebtoken = "0.12.6"
1111

@@ -14,7 +14,7 @@ org-liquibase-liquibase-core = "4.29.2"
1414
org-postgresql-postgresql = "42.7.4"
1515
org-postgresql-r2dbc-postgresql = "1.0.7.RELEASE"
1616

17-
com-fasterxml-jackson = "2.18.1"
17+
com-fasterxml-jackson = "2.18.2"
1818

1919
jakarta-validation-jakarta-validation-api = "3.1.0"
2020
commons-codec-commons-codec = "1.17.1"
@@ -39,6 +39,7 @@ org-springframework-spring-web = { module = "org.springframework:spring-web", ve
3939

4040
org-springframework-cloud-spring-cloud-starter-gateway = { module = "org.springframework.cloud:spring-cloud-starter-gateway", version.ref = "org-springframework-cloud" }
4141
org-springframework-cloud-spring-cloud-starter-consul-discovery = { module = "org.springframework.cloud:spring-cloud-starter-consul-discovery", version.ref = "org-springframework-cloud" }
42+
org-springframework-cloud-spring-cloud-starter-loadbalancer = { module = "org.springframework.cloud:spring-cloud-starter-loadbalancer", version.ref = "org-springframework-cloud" }
4243

4344
org-springdoc-springdoc-openapi-starter-webflux-ui = { module = "org.springdoc:springdoc-openapi-starter-webflux-ui", version.ref = "org-springdoc-springdoc-openapi-starter" }
4445

backend/matchmaker/src/main/resources/application.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ spring:
44
application:
55
name: matchmaker
66
datasource:
7-
url: jdbc:postgresql://matchmaker-database:5432/${POSTGRES_DB}
7+
url: jdbc:postgresql://matchmaker-database-primary.dating.se.ifmo.ru:5432/${POSTGRES_DB}
88
username: ${POSTGRES_USER}
99
password: ${POSTGRES_PASSWORD}
1010
r2dbc:
11-
url: r2dbc:postgresql://matchmaker-database:5432/${POSTGRES_DB}
11+
url: r2dbc:postgresql://matchmaker-database-primary.dating.se.ifmo.ru:5432/${POSTGRES_DB}
1212
username: ${POSTGRES_USER}
1313
password: ${POSTGRES_PASSWORD}

backend/people/src/main/resources/application.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ spring:
44
application:
55
name: people
66
datasource:
7-
url: jdbc:postgresql://people-database:5432/${POSTGRES_DB}
7+
url: jdbc:postgresql://people-database-primary.dating.se.ifmo.ru:5432/${POSTGRES_DB}
88
username: ${POSTGRES_USER}
99
password: ${POSTGRES_PASSWORD}
1010
r2dbc:
11-
url: r2dbc:postgresql://people-database:5432/${POSTGRES_DB}
11+
url: r2dbc:postgresql://people-database-primary.dating.se.ifmo.ru:5432/${POSTGRES_DB}
1212
username: ${POSTGRES_USER}
1313
password: ${POSTGRES_PASSWORD}
1414
service:
1515
matchmaker:
16-
url: https://matchmaker:8080/api
16+
url: https://matchmaker/api

backend/people/src/main/resources/static/openapi/api.yml

-4
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ paths:
127127
schema:
128128
type: string
129129
format: date
130-
maxLength: 32
131130
example: 1990-01-01
132131
- name: birthday_max
133132
in: query
@@ -136,7 +135,6 @@ paths:
136135
schema:
137136
type: string
138137
format: date
139-
maxLength: 32
140138
example: 2000-12-31
141139
- name: zodiac
142140
in: query
@@ -406,7 +404,6 @@ components:
406404
type: string
407405
description: A date when person was born
408406
format: date
409-
maxLength: 32
410407
facultyId:
411408
$ref: "#/components/schemas/FacultyId"
412409
locationId:
@@ -631,7 +628,6 @@ components:
631628
type: string
632629
format: date-time
633630
description: A moment when this object was updated, autogenerated
634-
maxLength: 32
635631
example: 2024-04-14T13:32:42Z
636632
RegexPattern:
637633
type: string

backend/starter-service-discovery/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ plugins {
66
dependencies {
77
api(libs.org.springframework.boot.spring.boot.starter.actuator)
88
api(libs.org.springframework.cloud.spring.cloud.starter.consul.discovery)
9+
api(libs.org.springframework.cloud.spring.cloud.starter.loadbalancer)
910
}

backend/starter-service-discovery/src/main/resources/application-service-discovery.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ spring:
1313
discovery:
1414
enabled: true
1515
scheme: https
16-
instance-id: ${spring.application.name}:${HOSTNAME}
16+
instance-id: instance-${HOSTNAME}
1717
heartbeat:
1818
enabled: true
1919
management:

0 commit comments

Comments
 (0)