From 0dc8c368679344607ae8f8a4ae428401c9b68d21 Mon Sep 17 00:00:00 2001 From: anderson Date: Mon, 8 May 2023 20:03:15 -0500 Subject: [PATCH 1/2] FEAT all integration --- .../app-invoice/build.gradle | 2 + .../src/main/resources/application.properties | 6 +- .../app-pay/build.gradle | 3 + .../src/main/resources/application.properties | 6 +- .../app-transaction/build.gradle | 3 + .../src/main/resources/application.properties | 6 +- .../appgw/gateway.config.yml | 42 +++++++++++++- .../docker/1-dbs-appconfig.yml | 55 +++++++++++++++++++ .../docker/2-services.yml | 40 ++++++++++++++ .../docker/3-loadbalancer-gateway.yml | 35 ++++++++++++ .../haproxy/haproxy.cfg | 24 +++++++- .../postgres/{postgres.sql => 1-postgres.sql} | 0 .../postgres/{data.sql => 2-data.sql} | 0 .../resources/postgres/Dockerfile | 4 +- pay-app-spring-microservices/scripts/clean.sh | 20 +++++++ .../scripts/config-dnsmasq.sh | 46 ++++++++++++++++ pay-app-spring-microservices/start.sh | 14 +++++ 17 files changed, 297 insertions(+), 9 deletions(-) create mode 100644 pay-app-spring-microservices/docker/1-dbs-appconfig.yml create mode 100644 pay-app-spring-microservices/docker/2-services.yml create mode 100644 pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml rename pay-app-spring-microservices/resources/postgres/{postgres.sql => 1-postgres.sql} (100%) rename pay-app-spring-microservices/resources/postgres/{data.sql => 2-data.sql} (100%) create mode 100755 pay-app-spring-microservices/scripts/clean.sh create mode 100755 pay-app-spring-microservices/scripts/config-dnsmasq.sh create mode 100755 pay-app-spring-microservices/start.sh 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..52aa948 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,5 @@ - +# 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 \ No newline at end of file diff --git a/pay-app-spring-microservices/app-pay/build.gradle b/pay-app-spring-microservices/app-pay/build.gradle index fdaf2e0..b37c92f 100644 --- a/pay-app-spring-microservices/app-pay/build.gradle +++ b/pay-app-spring-microservices/app-pay/build.gradle @@ -28,6 +28,9 @@ 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-pay/src/main/resources/application.properties b/pay-app-spring-microservices/app-pay/src/main/resources/application.properties index 8b13789..52aa948 100644 --- a/pay-app-spring-microservices/app-pay/src/main/resources/application.properties +++ b/pay-app-spring-microservices/app-pay/src/main/resources/application.properties @@ -1 +1,5 @@ - +# 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 \ No newline at end of file diff --git a/pay-app-spring-microservices/app-transaction/build.gradle b/pay-app-spring-microservices/app-transaction/build.gradle index 1ca3403..8a6416c 100644 --- a/pay-app-spring-microservices/app-transaction/build.gradle +++ b/pay-app-spring-microservices/app-transaction/build.gradle @@ -27,6 +27,9 @@ 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/app-transaction/src/main/resources/application.properties b/pay-app-spring-microservices/app-transaction/src/main/resources/application.properties index 8b13789..52aa948 100644 --- a/pay-app-spring-microservices/app-transaction/src/main/resources/application.properties +++ b/pay-app-spring-microservices/app-transaction/src/main/resources/application.properties @@ -1 +1,5 @@ - +# 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 \ No newline at end of file diff --git a/pay-app-spring-microservices/appgw/gateway.config.yml b/pay-app-spring-microservices/appgw/gateway.config.yml index 1a7f68b..8ad79c1 100644 --- a/pay-app-spring-microservices/appgw/gateway.config.yml +++ b/pay-app-spring-microservices/appgw/gateway.config.yml @@ -6,10 +6,25 @@ admin: apiEndpoints: appconfig: host: localhost - paths: ['/config','/config/*'] + paths: ['/config','/app-config/*'] + appinvoice: + host: localhost + paths: ['/invoice','/app-invoice/*'] + apppay: + host: localhost + paths: ['/pay','/app-pay/*'] + apptransaction: + host: localhost + paths: ['/transaction','/app-transaction/*'] serviceEndpoints: appconfig: url: 'http://loadbalancer/config/' + appinvoice: + url: 'http://loadbalancer/invoice/' + apppay: + url: 'http://loadbalancer/pay/' + apptransaction: + url: 'http://loadbalancer/transaction/' policies: - basic-auth - cors @@ -23,13 +38,36 @@ pipelines: default: apiEndpoints: - appconfig + - appinvoice + - apppay + - apptransaction policies: # Uncomment `key-auth:` when instructed to in the Getting Started guide. - key-auth: - proxy: - action: - serviceEndpoint: appconfig + serviceEndpoint: app-config + changeOrigin: true + prependPath: false + ignorePath: false + stripPath: false + - action: + serviceEndpoint: app-invoice + changeOrigin: true + prependPath: false + ignorePath: false + stripPath: false + - action: + serviceEndpoint: app-pay + changeOrigin: true + prependPath: false + ignorePath: false + stripPath: false + + - action: + serviceEndpoint: app-transaction changeOrigin: true prependPath: false ignorePath: false stripPath: false + diff --git a/pay-app-spring-microservices/docker/1-dbs-appconfig.yml b/pay-app-spring-microservices/docker/1-dbs-appconfig.yml new file mode 100644 index 0000000..c6a6687 --- /dev/null +++ b/pay-app-spring-microservices/docker/1-dbs-appconfig.yml @@ -0,0 +1,55 @@ +version: '3' + +networks: + distribuidos: + driver: bridge + +services: + postgres: + build: ../resources/postgres + image: icesiops/postgres:0.1.0 + container_name: postgres + ports: + - "5432:5432" + environment: + - POSTGRES_PASSWORD=postgres + - OSTGRES_DB=db_invoice + networks: + - distribuidos + mysql: + build: ../resources/mysql + image: icesiops/mysql:0.1.0 + container_name: mysql + ports: + - "3306:3306" + environment: + - MYSQL_ROOT_PASSWORD=mysql + - MYSQL_DATABASE=db_operation + networks: + - distribuidos + mongodb: + image: mongo:latest + container_name: mongodb + ports: + - "27017:27017" + networks: + - distribuidos + servicekafka: + image: johnnypark/kafka-zookeeper + container_name: servicekafka + ports: + - "2181:2181" + - "9092:9092" + environment: + - ADVERTISED_HOST=servicekafka + - NUM_PARTITIONS=3 + networks: + - distribuidos + app-config: + build: ../app-config + image: icesiops/appconfig:0.1.0 + container_name: app-config + ports: + - "8888:8888" + networks: + - distribuidos \ No newline at end of file diff --git a/pay-app-spring-microservices/docker/2-services.yml b/pay-app-spring-microservices/docker/2-services.yml new file mode 100644 index 0000000..721e28a --- /dev/null +++ b/pay-app-spring-microservices/docker/2-services.yml @@ -0,0 +1,40 @@ +version: '3' + +networks: + distribuidos: + driver: bridge + +services: + app-invoice: + build: ../app-invoice + image: icesiops/appinvoice:0.1.0 + container_name: app-invoice + ports: + - "8006:8006" + networks: + - distribuidos + app-pay: + build: ../app-pay + image: icesiops/apppay:0.1.0 + container_name: app-pay + ports: + - "8010:8010" + networks: + - distribuidos + app-transaction: + build: ../app-transaction + image: icesiops/apptransaction:0.1.0 + container_name: app-transaction + ports: + - "8082:8082" + networks: + - distribuidos + consul: + image: consul:latest + command: agent -server -bootstrap-expect 1 -ui -data-dir /tmp -client=0.0.0.0 + container_name: consul + ports: + - "8500:8500" + - "8600:8600/udp" + networks: + - distribuidos \ No newline at end of file diff --git a/pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml b/pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml new file mode 100644 index 0000000..f1f0437 --- /dev/null +++ b/pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml @@ -0,0 +1,35 @@ +version: '3' + +networks: + distribuidos: + driver: bridge + +services: + loadbalancer: + build: ../haproxy + image: icesiops/loadbalancer:0.1.0 + container_name: loadbalancer + ports: + - "80:80" + - "1936:1936" + networks: + - distribuidos + express-gateway-data-store: + image: redis:alpine + container_name: express-gateway-data-store + ports: + - "6379:6379" + networks: + - distribuidos + express-gateway: + image: express-gateway + container_name: express-gateway + ports: + - "8080:8080" + - "9876:9876" + volumes: + - type: bind + source: ../appgw + target: /var/lib/eg + networks: + - distribuidos \ No newline at end of file diff --git a/pay-app-spring-microservices/haproxy/haproxy.cfg b/pay-app-spring-microservices/haproxy/haproxy.cfg index 3b54b0c..e4104ca 100644 --- a/pay-app-spring-microservices/haproxy/haproxy.cfg +++ b/pay-app-spring-microservices/haproxy/haproxy.cfg @@ -15,7 +15,13 @@ frontend http_front mode http acl url_config path_beg /config use_backend config_back if url_config - + acl url_invoice path_beg /invoice + use_backend invoice_back if url_invoice + acl url_pay path_beg /pay + use_backend pay_back if url_pay + acl url_transaction path_beg /transaction + use_backend transaction_back if url_transaction + default_backend http_back backend config_back @@ -27,7 +33,21 @@ backend http_back mode http balance roundrobin server-template mywebapp 1-10 _web._tcp.service.consul 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 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 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 resolvers consul nameserver consul consul:8600 accepted_payload_size 8192 diff --git a/pay-app-spring-microservices/resources/postgres/postgres.sql b/pay-app-spring-microservices/resources/postgres/1-postgres.sql similarity index 100% rename from pay-app-spring-microservices/resources/postgres/postgres.sql rename to pay-app-spring-microservices/resources/postgres/1-postgres.sql diff --git a/pay-app-spring-microservices/resources/postgres/data.sql b/pay-app-spring-microservices/resources/postgres/2-data.sql similarity index 100% rename from pay-app-spring-microservices/resources/postgres/data.sql rename to pay-app-spring-microservices/resources/postgres/2-data.sql diff --git a/pay-app-spring-microservices/resources/postgres/Dockerfile b/pay-app-spring-microservices/resources/postgres/Dockerfile index 450d83f..05b5d57 100644 --- a/pay-app-spring-microservices/resources/postgres/Dockerfile +++ b/pay-app-spring-microservices/resources/postgres/Dockerfile @@ -2,5 +2,5 @@ FROM postgres:12-alpine env POSTGRES_PASSWORD=postgres env POSTGRES_DB=db_invoice -COPY ./postgres.sql /docker-entrypoint-initdb.d - +COPY ./1-postgres.sql /docker-entrypoint-initdb.d +COPY ./2-data.sql /docker-entrypoint-initdb.d diff --git a/pay-app-spring-microservices/scripts/clean.sh b/pay-app-spring-microservices/scripts/clean.sh new file mode 100755 index 0000000..f2626f3 --- /dev/null +++ b/pay-app-spring-microservices/scripts/clean.sh @@ -0,0 +1,20 @@ +#!/bin/bash +echo -e 'Borrando contenedores--------------------------------' +# Eliminar todos los contenedores que empiecen por icesiops/ +docker rm -f $(docker ps -a | grep "icesiops/" | awk '{print $1}') +docker rm -f $(docker ps -a | grep "consul" | awk '{print $1}') +docker rm -f $(docker ps -a | grep "kafka" | awk '{print $1}') +docker rm -f $(docker ps -a | grep "mongodb" | awk '{print $1}') +docker rm -f $(docker ps -a | grep "redis" | awk '{print $1}') +docker rm -f $(docker ps -a | grep "gateway" | awk '{print $1}') + + +echo -e '\n\nBorrando Imagenes--------------------------------' +# Eliminar todas las imágenes que empiecen por icesiops/ +docker rmi -f $(docker images | grep "icesiops/" | awk '{print $3}') + +# Mostrar estado actualizado +echo -e '\n\nDOCKER PS----------------------------------------' +docker ps -a | awk '{print $2}' +echo -e '\n\nDOCKER IMAGES------------------------------------' +docker images -a | awk '{print $1}' \ No newline at end of file diff --git a/pay-app-spring-microservices/scripts/config-dnsmasq.sh b/pay-app-spring-microservices/scripts/config-dnsmasq.sh new file mode 100755 index 0000000..06ef9c0 --- /dev/null +++ b/pay-app-spring-microservices/scripts/config-dnsmasq.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +# Update +echo "\n\nUpdating packages------------------------------" +sudo apt-get update + +# Instalar dnsmasq +echo "\n\nInstalando Dnsmasq------------------------------" +sudo apt-get install dnsmasq -y + +# Eliminar el archivo de configuracion de dnsmasq +echo "\n\nActualizando /etc/dnsmasq.d/10-consul-------------------------------" +sudo rm -f /etc/dnsmasq.d/10-consul + +# Crear archivo de configuración para consul +sudo echo "server=/consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul + +# Mostrar los archivos creados +cat /etc/dnsmasq.d/10-consul + +# Detener el servicio por defecto de dns +sudo systemctl stop systemd-resolved.service + +# Reiniciar servicio dnsmasq +sudo systemctl restart dnsmasq +echo "\n\nActualizando /etc/resolv.conf------------------------------" + +# Agregar nameserver a /etc/resolv.conf +# Eliminar el archivo /etc/resolv.conf +sudo rm -f /etc/resolv.conf +# Crear el archivo /etc/resolv.conf con la nueva información +echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolv.conf > /dev/null +echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf > /dev/null +echo "options edns0 trust-ad" | sudo tee -a /etc/resolv.conf > /dev/null +echo "search ." | sudo tee -a /etc/resolv.conf > /dev/null + +# Reiniciar servicio Network Manager +sudo systemctl restart NetworkManager +cat /etc/resolv.conf + +# Reiniciar servicio Network Manager +sudo systemctl restart NetworkManager +cat /etc/resolv.conf + +# Comprobar el estado del servicio +sudo systemctl status -q dnsmasq.service \ No newline at end of file diff --git a/pay-app-spring-microservices/start.sh b/pay-app-spring-microservices/start.sh new file mode 100755 index 0000000..bfd9f1a --- /dev/null +++ b/pay-app-spring-microservices/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash +sudo ./scripts/clean.sh +docker-compose -f ./docker/1-dbs-appconfig.yml up --build -d +echo 'Waiting for appconfig up... ... ... ... ...' +sleep 5 +docker-compose -f ./docker/2-services.yml up --build -d +sudo ./scripts/config-dnsmasq.sh +docker-compose -f ./docker/3-loadbalancer-gateway.yml up --build -d + +# Mostrar estado actualizado +echo -e '\n\nDOCKER PS----------------------------------------' +docker ps -a | awk '{print $2}' +echo -e '\n\nDOCKER IMAGES------------------------------------' +docker images -a | awk '{print $1}' \ No newline at end of file From f759fec961ff819333a803a1cb8c54f2fdd8096d Mon Sep 17 00:00:00 2001 From: anderson Date: Mon, 8 May 2023 20:21:32 -0500 Subject: [PATCH 2/2] FIX routes in the gateway to load balancer can find the end points --- .../appgw/gateway.config.yml | 57 +++++++++-------- pay-app-spring-microservices/commands.md | 3 + .../docker/1-dbs-appconfig.yml | 55 ---------------- .../docker/2-services.yml | 40 ------------ .../docker/3-loadbalancer-gateway.yml | 35 ---------- .../haproxy/haproxy.cfg | 64 +++++++++---------- pay-app-spring-microservices/scripts/clean.sh | 20 ------ .../scripts/config-dnsmasq.sh | 46 ------------- pay-app-spring-microservices/start.sh | 14 ---- 9 files changed, 63 insertions(+), 271 deletions(-) delete mode 100644 pay-app-spring-microservices/docker/1-dbs-appconfig.yml delete mode 100644 pay-app-spring-microservices/docker/2-services.yml delete mode 100644 pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml delete mode 100755 pay-app-spring-microservices/scripts/clean.sh delete mode 100755 pay-app-spring-microservices/scripts/config-dnsmasq.sh delete mode 100755 pay-app-spring-microservices/start.sh diff --git a/pay-app-spring-microservices/appgw/gateway.config.yml b/pay-app-spring-microservices/appgw/gateway.config.yml index 8ad79c1..0445795 100644 --- a/pay-app-spring-microservices/appgw/gateway.config.yml +++ b/pay-app-spring-microservices/appgw/gateway.config.yml @@ -4,27 +4,27 @@ admin: port: 9876 host: localhost apiEndpoints: - appconfig: + app-config: host: localhost - paths: ['/config','/app-config/*'] - appinvoice: + paths: ['/app-config','/app-config/*'] + app-invoice: host: localhost - paths: ['/invoice','/app-invoice/*'] - apppay: + paths: ['/app-invoice','/app-invoice/*'] + app-pay: host: localhost - paths: ['/pay','/app-pay/*'] - apptransaction: + paths: ['/app-pay','/app-pay/*'] + app-transaction: host: localhost - paths: ['/transaction','/app-transaction/*'] + paths: ['/app-transaction','/app-transaction/*'] serviceEndpoints: - appconfig: - url: 'http://loadbalancer/config/' - appinvoice: - url: 'http://loadbalancer/invoice/' - apppay: - url: 'http://loadbalancer/pay/' - apptransaction: - url: 'http://loadbalancer/transaction/' + app-config: + url: 'http://loadbalancer/app-config/' + app-invoice: + url: 'http://loadbalancer/app-invoice/' + app-pay: + url: 'http://loadbalancer/app-pay/' + app-transaction: + url: 'http://loadbalancer/app-transaction/' policies: - basic-auth - cors @@ -37,37 +37,38 @@ policies: pipelines: default: apiEndpoints: - - appconfig - - appinvoice - - apppay - - apptransaction + - app-config + - app-pay + - app-transaction policies: - # Uncomment `key-auth:` when instructed to in the Getting Started guide. - key-auth: - proxy: - action: - serviceEndpoint: app-config + serviceEndpoint: app-config changeOrigin: true prependPath: false ignorePath: false stripPath: false - action: - serviceEndpoint: app-invoice + serviceEndpoint: app-pay changeOrigin: true prependPath: false ignorePath: false stripPath: false - action: - serviceEndpoint: app-pay + serviceEndpoint: app-transaction changeOrigin: true prependPath: false ignorePath: false stripPath: false - + dmz: + apiEndpoints: + - app-invoice + policies: + - proxy: - action: - serviceEndpoint: app-transaction + serviceEndpoint: app-invoice changeOrigin: true prependPath: false ignorePath: false - stripPath: false - + stripPath: false \ No newline at end of file diff --git a/pay-app-spring-microservices/commands.md b/pay-app-spring-microservices/commands.md index 4c7fa26..c59fb19 100644 --- a/pay-app-spring-microservices/commands.md +++ b/pay-app-spring-microservices/commands.md @@ -96,3 +96,6 @@ eg credentials create -c sebas -t key-auth -q curl -H "Authorization: apiKey ${keyId}:${keySecret}" http://localhost:8080/config/app-pay/dev curl -H "Authorization: apiKey 3DvE2HCfZCyfgxAjF40tOk:2U4Cojm11JaPJF6WRUcFBL" http://localhost:8080/config/app-pay/dev +curl -H "Authorization: apiKey 7AzWybVM0FaB7mTRadNUGR:5N50F0YcQ7U45JcD5C7J32" http://localhost:8080/app-config/app-pay/dev + +7AzWybVM0FaB7mTRadNUGR:5N50F0YcQ7U45JcD5C7J32 \ No newline at end of file diff --git a/pay-app-spring-microservices/docker/1-dbs-appconfig.yml b/pay-app-spring-microservices/docker/1-dbs-appconfig.yml deleted file mode 100644 index c6a6687..0000000 --- a/pay-app-spring-microservices/docker/1-dbs-appconfig.yml +++ /dev/null @@ -1,55 +0,0 @@ -version: '3' - -networks: - distribuidos: - driver: bridge - -services: - postgres: - build: ../resources/postgres - image: icesiops/postgres:0.1.0 - container_name: postgres - ports: - - "5432:5432" - environment: - - POSTGRES_PASSWORD=postgres - - OSTGRES_DB=db_invoice - networks: - - distribuidos - mysql: - build: ../resources/mysql - image: icesiops/mysql:0.1.0 - container_name: mysql - ports: - - "3306:3306" - environment: - - MYSQL_ROOT_PASSWORD=mysql - - MYSQL_DATABASE=db_operation - networks: - - distribuidos - mongodb: - image: mongo:latest - container_name: mongodb - ports: - - "27017:27017" - networks: - - distribuidos - servicekafka: - image: johnnypark/kafka-zookeeper - container_name: servicekafka - ports: - - "2181:2181" - - "9092:9092" - environment: - - ADVERTISED_HOST=servicekafka - - NUM_PARTITIONS=3 - networks: - - distribuidos - app-config: - build: ../app-config - image: icesiops/appconfig:0.1.0 - container_name: app-config - ports: - - "8888:8888" - networks: - - distribuidos \ No newline at end of file diff --git a/pay-app-spring-microservices/docker/2-services.yml b/pay-app-spring-microservices/docker/2-services.yml deleted file mode 100644 index 721e28a..0000000 --- a/pay-app-spring-microservices/docker/2-services.yml +++ /dev/null @@ -1,40 +0,0 @@ -version: '3' - -networks: - distribuidos: - driver: bridge - -services: - app-invoice: - build: ../app-invoice - image: icesiops/appinvoice:0.1.0 - container_name: app-invoice - ports: - - "8006:8006" - networks: - - distribuidos - app-pay: - build: ../app-pay - image: icesiops/apppay:0.1.0 - container_name: app-pay - ports: - - "8010:8010" - networks: - - distribuidos - app-transaction: - build: ../app-transaction - image: icesiops/apptransaction:0.1.0 - container_name: app-transaction - ports: - - "8082:8082" - networks: - - distribuidos - consul: - image: consul:latest - command: agent -server -bootstrap-expect 1 -ui -data-dir /tmp -client=0.0.0.0 - container_name: consul - ports: - - "8500:8500" - - "8600:8600/udp" - networks: - - distribuidos \ No newline at end of file diff --git a/pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml b/pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml deleted file mode 100644 index f1f0437..0000000 --- a/pay-app-spring-microservices/docker/3-loadbalancer-gateway.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: '3' - -networks: - distribuidos: - driver: bridge - -services: - loadbalancer: - build: ../haproxy - image: icesiops/loadbalancer:0.1.0 - container_name: loadbalancer - ports: - - "80:80" - - "1936:1936" - networks: - - distribuidos - express-gateway-data-store: - image: redis:alpine - container_name: express-gateway-data-store - ports: - - "6379:6379" - networks: - - distribuidos - express-gateway: - image: express-gateway - container_name: express-gateway - ports: - - "8080:8080" - - "9876:9876" - volumes: - - type: bind - source: ../appgw - target: /var/lib/eg - networks: - - distribuidos \ No newline at end of file diff --git a/pay-app-spring-microservices/haproxy/haproxy.cfg b/pay-app-spring-microservices/haproxy/haproxy.cfg index e4104ca..5112ab9 100644 --- a/pay-app-spring-microservices/haproxy/haproxy.cfg +++ b/pay-app-spring-microservices/haproxy/haproxy.cfg @@ -13,42 +13,40 @@ frontend stats frontend http_front bind *:80 mode http - acl url_config path_beg /config - use_backend config_back if url_config - acl url_invoice path_beg /invoice - use_backend invoice_back if url_invoice - acl url_pay path_beg /pay - use_backend pay_back if url_pay - acl url_transaction path_beg /transaction - use_backend transaction_back if url_transaction - - default_backend http_back + acl url_app-config path_beg /app-config + use_backend app-config-backend if url_app-config + acl url_app-invoice path_beg /app-invoice + use_backend app-invoice-backend if url_app-invoice + acl url_app-pay path_beg /app-pay + use_backend app-pay-backend if url_app-pay + acl url_app-transaction path_beg /app-transaction + use_backend app-transaction-backend if url_app-transaction -backend config_back - mode http - balance roundrobin - http-request set-path "%[path,regsub(^/config/,/)]" - server appconfig app-config.service.consul:8888 resolvers consul resolve-prefer ipv4 check -backend http_back - mode http - balance roundrobin - server-template mywebapp 1-10 _web._tcp.service.consul resolvers consul resolve-prefer ipv4 check -backend invoice_back +backend app-config-backend 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 pay_back + http-request set-path "%[path,regsub(^/app-config/,/)]" + server app-config app-config.service.consul:8888 resolvers consul resolve-prefer ipv4 check + +backend app-invoice-backend + mode http + balance roundrobin + http-request set-path "%[path,regsub(^/app-invoice/,/)]" + server app-invoice app-invoice.service.consul:8006 resolvers consul resolve-prefer ipv4 check + +backend app-pay-backend 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 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 + http-request set-path "%[path,regsub(^/app-pay/,/)]" + server app-pay app-pay.service.consul:8010 resolvers consul resolve-prefer ipv4 check + +backend app-transaction-backend + mode http + balance roundrobin + http-request set-path "%[path,regsub(^/app-transaction/,/)]" + server app-transaction app-transaction.service.consul:8082 resolvers consul resolve-prefer ipv4 check + resolvers consul - nameserver consul consul:8600 - accepted_payload_size 8192 - hold valid 5s + nameserver consul consul:8600 + accepted_payload_size 8192 + hold valid 5s diff --git a/pay-app-spring-microservices/scripts/clean.sh b/pay-app-spring-microservices/scripts/clean.sh deleted file mode 100755 index f2626f3..0000000 --- a/pay-app-spring-microservices/scripts/clean.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -echo -e 'Borrando contenedores--------------------------------' -# Eliminar todos los contenedores que empiecen por icesiops/ -docker rm -f $(docker ps -a | grep "icesiops/" | awk '{print $1}') -docker rm -f $(docker ps -a | grep "consul" | awk '{print $1}') -docker rm -f $(docker ps -a | grep "kafka" | awk '{print $1}') -docker rm -f $(docker ps -a | grep "mongodb" | awk '{print $1}') -docker rm -f $(docker ps -a | grep "redis" | awk '{print $1}') -docker rm -f $(docker ps -a | grep "gateway" | awk '{print $1}') - - -echo -e '\n\nBorrando Imagenes--------------------------------' -# Eliminar todas las imágenes que empiecen por icesiops/ -docker rmi -f $(docker images | grep "icesiops/" | awk '{print $3}') - -# Mostrar estado actualizado -echo -e '\n\nDOCKER PS----------------------------------------' -docker ps -a | awk '{print $2}' -echo -e '\n\nDOCKER IMAGES------------------------------------' -docker images -a | awk '{print $1}' \ No newline at end of file diff --git a/pay-app-spring-microservices/scripts/config-dnsmasq.sh b/pay-app-spring-microservices/scripts/config-dnsmasq.sh deleted file mode 100755 index 06ef9c0..0000000 --- a/pay-app-spring-microservices/scripts/config-dnsmasq.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh - -# Update -echo "\n\nUpdating packages------------------------------" -sudo apt-get update - -# Instalar dnsmasq -echo "\n\nInstalando Dnsmasq------------------------------" -sudo apt-get install dnsmasq -y - -# Eliminar el archivo de configuracion de dnsmasq -echo "\n\nActualizando /etc/dnsmasq.d/10-consul-------------------------------" -sudo rm -f /etc/dnsmasq.d/10-consul - -# Crear archivo de configuración para consul -sudo echo "server=/consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul - -# Mostrar los archivos creados -cat /etc/dnsmasq.d/10-consul - -# Detener el servicio por defecto de dns -sudo systemctl stop systemd-resolved.service - -# Reiniciar servicio dnsmasq -sudo systemctl restart dnsmasq -echo "\n\nActualizando /etc/resolv.conf------------------------------" - -# Agregar nameserver a /etc/resolv.conf -# Eliminar el archivo /etc/resolv.conf -sudo rm -f /etc/resolv.conf -# Crear el archivo /etc/resolv.conf con la nueva información -echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolv.conf > /dev/null -echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf > /dev/null -echo "options edns0 trust-ad" | sudo tee -a /etc/resolv.conf > /dev/null -echo "search ." | sudo tee -a /etc/resolv.conf > /dev/null - -# Reiniciar servicio Network Manager -sudo systemctl restart NetworkManager -cat /etc/resolv.conf - -# Reiniciar servicio Network Manager -sudo systemctl restart NetworkManager -cat /etc/resolv.conf - -# Comprobar el estado del servicio -sudo systemctl status -q dnsmasq.service \ No newline at end of file diff --git a/pay-app-spring-microservices/start.sh b/pay-app-spring-microservices/start.sh deleted file mode 100755 index bfd9f1a..0000000 --- a/pay-app-spring-microservices/start.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -sudo ./scripts/clean.sh -docker-compose -f ./docker/1-dbs-appconfig.yml up --build -d -echo 'Waiting for appconfig up... ... ... ... ...' -sleep 5 -docker-compose -f ./docker/2-services.yml up --build -d -sudo ./scripts/config-dnsmasq.sh -docker-compose -f ./docker/3-loadbalancer-gateway.yml up --build -d - -# Mostrar estado actualizado -echo -e '\n\nDOCKER PS----------------------------------------' -docker ps -a | awk '{print $2}' -echo -e '\n\nDOCKER IMAGES------------------------------------' -docker images -a | awk '{print $1}' \ No newline at end of file