diff --git a/consul.png b/consul.png new file mode 100644 index 0000000..2e6bacd Binary files /dev/null and b/consul.png differ diff --git a/pay-app-spring-microservices/app-config/src/main/resources/application.properties b/pay-app-spring-microservices/app-config/src/main/resources/application.properties index 7fd2213..e460880 100644 --- a/pay-app-spring-microservices/app-config/src/main/resources/application.properties +++ b/pay-app-spring-microservices/app-config/src/main/resources/application.properties @@ -3,7 +3,7 @@ spring.application.name=app-config server.port=8888 # Config -spring.cloud.config.server.git.uri=https://github.com/icesi-ops/training_microservices.git +spring.cloud.config.server.git.uri=https://github.com/duvanovik/training_microservices spring.cloud.config.server.default-label=master spring.cloud.config.server.git.search-paths=pay-app-spring-microservices/config spring.cloud.config.server.git.skip-ssl-validation=true @@ -12,4 +12,4 @@ spring.cloud.config.server.git.skip-ssl-validation=true spring.cloud.consul.host=consul spring.cloud.consul.port=8500 spring.cloud.consul.discovery.health-check-interval=5s -spring.cloud.consul.discovery.prefer-ip-address=true \ No newline at end of file +spring.cloud.consul.discovery.prefer-ip-address=true diff --git a/pay-app-spring-microservices/app-invoice/build.gradle b/pay-app-spring-microservices/app-invoice/build.gradle index 76d0556..5cba445 100644 --- a/pay-app-spring-microservices/app-invoice/build.gradle +++ b/pay-app-spring-microservices/app-invoice/build.gradle @@ -28,6 +28,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.kafka:spring-kafka' implementation 'org.springframework.cloud:spring-cloud-starter-config' + implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery' + implementation 'org.springframework.boot:spring-boot-starter-actuator' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.postgresql:postgresql' diff --git a/pay-app-spring-microservices/app-invoice/src/main/resources/application.properties b/pay-app-spring-microservices/app-invoice/src/main/resources/application.properties index 8b13789..61569e1 100644 --- a/pay-app-spring-microservices/app-invoice/src/main/resources/application.properties +++ b/pay-app-spring-microservices/app-invoice/src/main/resources/application.properties @@ -1 +1,8 @@ +# Consul +#spring.cloud.consul.host=consul +#spring.cloud.consul.port=8500 +#spring.cloud.consul.discovery.health-check-interval=5s +#spring.cloud.consul.discovery.prefer-ip-address=true +#management.endpoints.web.exposure.include=health + diff --git a/pay-app-spring-microservices/app-pay/build.gradle b/pay-app-spring-microservices/app-pay/build.gradle index fdaf2e0..8a5142d 100644 --- a/pay-app-spring-microservices/app-pay/build.gradle +++ b/pay-app-spring-microservices/app-pay/build.gradle @@ -28,6 +28,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.kafka:spring-kafka' implementation 'org.springframework.cloud:spring-cloud-starter-config' + implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery' + implementation 'org.springframework.boot:spring-boot-starter-actuator' compileOnly 'org.projectlombok:lombok' runtimeOnly 'mysql:mysql-connector-java' annotationProcessor 'org.projectlombok:lombok' diff --git a/pay-app-spring-microservices/app-transaction/build.gradle b/pay-app-spring-microservices/app-transaction/build.gradle index 1ca3403..4172b8d 100644 --- a/pay-app-spring-microservices/app-transaction/build.gradle +++ b/pay-app-spring-microservices/app-transaction/build.gradle @@ -27,6 +27,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.kafka:spring-kafka' implementation 'org.springframework.cloud:spring-cloud-starter-config' + implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery' + implementation 'org.springframework.boot:spring-boot-starter-actuator' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/pay-app-spring-microservices/appgw/gateway.config.yml b/pay-app-spring-microservices/appgw/gateway.config.yml index 1a7f68b..f90df79 100644 --- a/pay-app-spring-microservices/appgw/gateway.config.yml +++ b/pay-app-spring-microservices/appgw/gateway.config.yml @@ -7,9 +7,19 @@ apiEndpoints: appconfig: host: localhost paths: ['/config','/config/*'] + appinvoice: + host: localhost + paths: ['/invoice','/invoice/*'] + apptransaction: + host: localhost + paths: ['/transaction','/transaction/*'] serviceEndpoints: appconfig: - url: 'http://loadbalancer/config/' + url: 'http://loadbalancer/config/' + appinvoice: + url: 'http://loadbalancer/invoice/all/' + apptransaction: + url: 'http://loadbalancer/transaction/all/' policies: - basic-auth - cors @@ -20,16 +30,40 @@ policies: - proxy - rate-limit pipelines: - default: - apiEndpoints: - - appconfig - policies: - # Uncomment `key-auth:` when instructed to in the Getting Started guide. - - key-auth: - - proxy: - - action: - serviceEndpoint: appconfig - changeOrigin: true - prependPath: false - ignorePath: false - stripPath: false + pipeline1: + apiEndpoints: + - appconfig + policies: + # Uncomment `key-auth:` when instructed to in the Getting Started guide. + # - key-auth: + - proxy: + - action: + serviceEndpoint: appconfig + changeOrigin: true + prependPath: false + ignorePath: false + stripPath: false + pipeline2: + apiEndpoints: + - appinvoice + policies: + #- key-auth: + - proxy: + - action: + serviceEndpoint: appinvoice + changeOrigin: true + prependPath: false + ignorePath: false + stripPath: false + pipeline3: + apiEndpoints: + - apptransaction + policies: + #- key-auth: + - proxy: + - action: + serviceEndpoint: apptransaction + changeOrigin: true + prependPath: false + ignorePath: false + stripPath: false diff --git a/pay-app-spring-microservices/config/app-pay-dev.properties b/pay-app-spring-microservices/config/app-pay-dev.properties index b7959d8..fd89bf2 100644 --- a/pay-app-spring-microservices/config/app-pay-dev.properties +++ b/pay-app-spring-microservices/config/app-pay-dev.properties @@ -2,6 +2,12 @@ spring.application.name=app-pay server.port=8010 +# Consul +spring.cloud.consul.host=consul +spring.cloud.consul.port=8500 +spring.cloud.consul.discovery.health-check-interval=5s +spring.cloud.consul.discovery.prefer-ip-address=true + # Kafka spring.kafka.template.default-topic=transaction-events spring.kafka.producer.bootstrap-servers=servicekafka:9092 @@ -22,4 +28,4 @@ spring.datasource.url=jdbc:mysql://mysql:3306/db_operation?serverTimezone=Americ spring.datasource.username=root spring.datasource.password=mysql spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect \ No newline at end of file +spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect diff --git a/pay-app-spring-microservices/config/app-transaction-dev.properties b/pay-app-spring-microservices/config/app-transaction-dev.properties index 17d29f4..f3a7429 100644 --- a/pay-app-spring-microservices/config/app-transaction-dev.properties +++ b/pay-app-spring-microservices/config/app-transaction-dev.properties @@ -2,6 +2,12 @@ spring.application.name=app-transaction server.port=8082 +# Consul +spring.cloud.consul.host=consul +spring.cloud.consul.port=8500 +spring.cloud.consul.discovery.health-check-interval=5s +spring.cloud.consul.discovery.prefer-ip-address=true + # Kafka spring.kafka.consumer.bootstrap-servers=servicekafka:9092 #spring.kafka.consumer.bootstrap-servers=servicekafka:9092 @@ -13,4 +19,5 @@ spring.kafka.consumer.group-id=transaction-events-listener-group # MongoDB spring.data.mongodb.uri=mongodb://mongodb:27017/db_transaction -#spring.data.mongodb.uri=mongodb://mongodb:27017/db_transaction \ No newline at end of file +#spring.data.mongodb.uri=mongodb://mongodb:27017/db_transaction + diff --git a/pay-app-spring-microservices/haproxy/haproxy.cfg b/pay-app-spring-microservices/haproxy/haproxy.cfg index 3b54b0c..dc9d71c 100644 --- a/pay-app-spring-microservices/haproxy/haproxy.cfg +++ b/pay-app-spring-microservices/haproxy/haproxy.cfg @@ -14,7 +14,13 @@ frontend http_front bind *:80 mode http acl url_config path_beg /config + acl url_invoice path_beg /invoice + acl url_transaction path_beg /transaction + acl url_pay path_beg /pay use_backend config_back if url_config + use_backend invoice_back if url_invoice + use_backend transaction_back if url_transaction + use_backend pay_back if url_pay default_backend http_back @@ -23,6 +29,21 @@ backend config_back balance roundrobin http-request set-path "%[path,regsub(^/config/,/)]" server appconfig app-config.service.consul:8888 resolvers consul resolve-prefer ipv4 check +backend invoice_back + mode http + balance roundrobin + http-request set-path "%[path,regsub(^/invoice/,/)]" + server appinvoice app-invoice.service.consul:8006 resolvers consul resolve-prefer ipv4 check +backend transaction_back + mode http + balance roundrobin + http-request set-path "%[path,regsub(^/transaction/,/)]" + server apptransaction app-transaction.service.consul:8082 resolvers consul resolve-prefer ipv4 check +backend pay_back + mode http + balance roundrobin + http-request set-path "%[path,regsub(^/pay/,/)]" + server apppay app-pay.service.consul:8010 resolvers consul resolve-prefer ipv4 check backend http_back mode http balance roundrobin