trouble shooting - Genie-Uss/genieus GitHub Wiki


๋ฐœ์ƒ ๋ฌธ์ œ

API Gateway๊ฐ€ Eureka ์„œ๋ฒ„์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ์œผ๋‚˜ ์„œ๋น„์Šค ํ˜ธ์ถœ ์‹œ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•จ.

io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: null: /172.18.0.8:10000
Caused by: java.net.NoRouteToHostException: null

์›์ธ ๋ถ„์„

flowchart TB
    %% ์‚ฌ์šฉ์ž
    User(["์‚ฌ์šฉ์ž"]) 
    
    %% ํผ๋ธ”๋ฆญ VPC
    subgraph PublicVPC["ํผ๋ธ”๋ฆญ VPC"]
        API_Gateway["[ํผ๋ธ”๋ฆญ EC2] API Gateway"]
    end
    
    %% ํ”„๋ผ์ด๋น— VPC
    subgraph PrivateVPC["ํ”„๋ผ์ด๋น— VPC"]
        subgraph DockerNetwork["Docker ๋„คํŠธ์›Œํฌ"]
            Eureka["Eureka Server(์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ)"]
            AuthService["AUTH-SERVICE [172.18.0.8:10000]"]
            OtherService1["USER-SERVICE"]
            OtherService2["PRODUCT-SERVICE"]
            OtherService3["๊ธฐํƒ€ ์„œ๋น„์Šค"]
            
            %% ๋‚ด๋ถ€ Docker ๋„คํŠธ์›Œํฌ์—์„œ์˜ ์—ฐ๊ฒฐ
            Eureka --- AuthService
            Eureka --- OtherService1
            Eureka --- OtherService2
            Eureka --- OtherService3
        end
    end
    
    %% ์—ฐ๊ฒฐ ๊ด€๊ณ„
    User -->|"HTTP ์š”์ฒญ"| API_Gateway
    API_Gateway -->|"์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„ฑ๊ณต"| Eureka
    API_Gateway -.->|"์„œ๋น„์Šค ํ˜ธ์ถœ ์‹คํŒจ (NoRouteToHostException)"| AuthService

    %% ์Šคํƒ€์ผ ์„ค์ •
    classDef publicService fill:#ffcc99,stroke:#ff9933,stroke-width:2px
    classDef privateService fill:#99ccff,stroke:#3366cc,stroke-width:2px

    class API_Gateway publicService
    class Eureka,AuthService,OtherService1,OtherService2,OtherService3 privateService

    linkStyle 5 stroke:#009900,stroke-width:2px,color:#009900
    linkStyle 6 stroke:#ff0000,stroke-width:2px,stroke-dasharray:5 5,color:#ff0000

Loading
  • API Gateway๋Š” Eureka์—์„œ AUTH-SERVICE๋ฅผ ์ฐพ์•˜์œผ๋‚˜(172.18.0.8:10000) ์‹ค์ œ ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ ์—†์Œ
  • API Gateway: ํผ๋ธ”๋ฆญ ์ธ์Šคํ„ด์Šค(EC2)์— ๋ฐฐํฌ๋จ
  • ์œ ๋ ˆ์นด ์„œ๋ฒ„ + ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋“ค: ํ”„๋ผ์ด๋น— ์ธ์Šคํ„ด์Šค(EC2) ๋‚ด๋ถ€์˜ Docker ๋„คํŠธ์›Œํฌ์— ๋ฐฐํฌ๋จ
  • Gateway๊ฐ€ ์„œ๋น„์Šค ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉํ•˜๋Š” IP(172.18.0.8)๋Š” ํ”„๋ผ์ด๋น— Docker ๋„คํŠธ์›Œํฌ ๋‚ด๋ถ€ ์ฃผ์†Œ๋ผ ํผ๋ธ”๋ฆญ ์ธ์Šคํ„ด์Šค์—์„œ ์ง์ ‘ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•จ



ํ•ด๊ฒฐ ๋ฐฉ์•ˆ ๊ฒ€ํ† 

  1. AWS Transit Gateway/VPC Peering ์‚ฌ์šฉ:
    • ํผ๋ธ”๋ฆญ VPC์™€ ํ”„๋ผ์ด๋น— VPC ๊ฐ„ ํ”ผ์–ด๋ง์œผ๋กœ ์ง์ ‘ ํ†ต์‹  ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
    • ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ์„ค์ • ํ•„์š”ํ•จ
  1. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์‚ฌ์šฉ:
    • ํ”„๋ผ์ด๋น— ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค๋“ค ์•ž์— ๋‚ด๋ถ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋ฐฐ์น˜
    • API Gateway๊ฐ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ํ†ตํ•ด ์„œ๋น„์Šค ์ ‘๊ทผํ•˜๋„๋ก ํ•จ
    • ์ถ”๊ฐ€ ๋น„์šฉ ๋ฐœ์ƒํ•จ
  1. ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •:
    • ํ”„๋ผ์ด๋น— ์ธ์Šคํ„ด์Šค์— NGINX ๊ฐ™์€ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์น˜
    • ํผ๋ธ”๋ฆญ API Gateway๊ฐ€ ํ”„๋ก์‹œ ํ†ตํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ ‘๊ทผํ•˜๋„๋ก ํ•จ
    • ๊ตฌ์„ฑ์ด ๋น„๊ต์  ๊ฐ„๋‹จํ•จ
  1. ์„œ๋น„์Šค ๋ฉ”์‹œ ๋„์ž…:
    • Istio ๊ฐ™์€ ์„œ๋น„์Šค ๋ฉ”์‹œ๋กœ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ด€๋ฆฌ
    • ๋Ÿฌ๋‹ ์ปค๋ธŒ์™€ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒํ•จ



์ตœ์ข… ํ•ด๊ฒฐ์ฑ…

API Gateway๋„ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์— ๋‘๊ณ  NGINX๋งŒ ํ”„๋ก์‹œ๋กœ ํผ๋ธ”๋ฆญ ์ธ์Šคํ„ด์Šค์— ๋ฐฐ์น˜ํ•จ.

[์™ธ๋ถ€ ์š”์ฒญ] โ†’ [NGINX ํ”„๋ก์‹œ(ํผ๋ธ”๋ฆญ)] โ†’ [API Gateway(ํ”„๋ผ์ด๋น—)] โ†’ [๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค(ํ”„๋ผ์ด๋น—)]
flowchart TB
    %% ์‚ฌ์šฉ์ž
    User(["์‚ฌ์šฉ์ž"]) 
    
    %% ํผ๋ธ”๋ฆญ VPC
    subgraph PublicVPC["ํผ๋ธ”๋ฆญ VPC"]
        NGINX["[ํผ๋ธ”๋ฆญ EC2] Nginx ํ”„๋ก์‹œ"]
    end
    
    %% ํ”„๋ผ์ด๋น— VPC
    subgraph PrivateVPC["ํ”„๋ผ์ด๋น— VPC"]
        subgraph DockerNetwork["Docker ๋„คํŠธ์›Œํฌ"]
            API_Gateway["API Gateway"]
            Eureka["Eureka Server\n(์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ)"]
            AuthService["AUTH-SERVICE"]
            UserService["USER-SERVICE"]
            ProductService["PRODUCT-SERVICE"]
        end

        %% ๋‚ด๋ถ€ ์„œ๋น„์Šค ๊ฐ„ ์—ฐ๊ฒฐ
        Eureka --- AuthService
        Eureka --- UserService
        Eureka --- ProductService
    end
    
    %% ์™ธ๋ถ€ ์š”์ฒญ ํ๋ฆ„
    User -->|"HTTP ์š”์ฒญ"| NGINX
    NGINX -->|"์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ"| API_Gateway
    API_Gateway -->|"์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ"| Eureka
    API_Gateway -->|"์„œ๋น„์Šค ํ˜ธ์ถœ"| AuthService

    %% ์Šคํƒ€์ผ ์ •์˜
    classDef publicService fill:#ffcc99,stroke:#ff9933,stroke-width:2px
    classDef privateService fill:#99ccff,stroke:#3366cc,stroke-width:2px
    classDef edgeStyle stroke-width:2px

    class NGINX publicService
    class API_Gateway,Eureka,AuthService,UserService,ProductService privateService

Loading

ํ•ด๊ฒฐ์ฑ… ์„ ํƒ ์ด์œ 

  1. ์•„ํ‚คํ…์ฒ˜ ๋‹จ์ˆœํ™”: ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ API Gateway๊ฐ€ ๊ฐ™์€ Docker ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ์ง์ ‘ ํ†ต์‹  ๊ฐ€๋Šฅํ•จ
  2. ๋ณด์•ˆ ํ–ฅ์ƒ: API Gateway๊ฐ€ ๋‚ด๋ถ€์— ์žˆ์–ด ์™ธ๋ถ€ ๊ณต๊ฒฉ์— ์ง์ ‘ ๋…ธ์ถœ๋˜์ง€ ์•Š์Œ
  3. ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ๊ฐ์†Œ: ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๋‚ด ํ†ต์‹ ์œผ๋กœ ์ง€์—ฐ ๊ฐ์†Œํ•จ
  4. Eureka ์„œ๋น„์Šค ๋ฐœ๊ฒฌ ๊ฐ„์†Œํ™”: Docker ๋‚ด๋ถ€ IP๋ฅผ ๋ณ€ํ™˜ ์—†์ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ
  5. ์„ค์ • ๋‹จ์ˆœํ™”: ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ์„ค์ •์ด๋‚˜ VPC ํ”ผ์–ด๋ง ๋ถˆํ•„์š”ํ•จ

NGINX ๊ตฌ์„ฑ

server {
    listen 80;
    server_name domain.com;

    location / {
        proxy_pass http://api-gateway:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        ...
    }
}



์ถ”๊ฐ€ ๊ฐœ์„ ์‚ฌํ•ญ

flowchart TB
    %% ์‚ฌ์šฉ์ž
    User(["์‚ฌ์šฉ์ž"]) 
    
    %% ํผ๋ธ”๋ฆญ VPC
    subgraph PublicVPC["ํผ๋ธ”๋ฆญ VPC"]
        NGINX["[ํผ๋ธ”๋ฆญ EC2] NGINX ํ”„๋ก์‹œ"]
    end

    %% ํ”„๋ผ์ด๋น— VPC
    subgraph PrivateVPC["ํ”„๋ผ์ด๋น— VPC"]
        subgraph DockerNetwork["Docker ๋„คํŠธ์›Œํฌ"]
            API_Gateway["API Gateway"]
            Eureka["Eureka Server\n(์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ)"]
            AuthService["AUTH-SERVICE"]
            UserService["USER-SERVICE"]
            ProductService["PRODUCT-SERVICE"]
            
            %% ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ฐœ๋ฐœ ๋„๊ตฌ
            Grafana["Grafana"]
            KafkaUI["Kafka UI"]
        end

        %% ๋‚ด๋ถ€ ์„œ๋น„์Šค ๊ฐ„ ์—ฐ๊ฒฐ
        Eureka --- AuthService
        Eureka --- UserService
        Eureka --- ProductService
    end

    %% ์™ธ๋ถ€ ์š”์ฒญ ํ๋ฆ„
    User -->|"HTTP ์š”์ฒญ"| NGINX

    %% ํ”„๋ก์‹œ ๊ฒฝ๋กœ๋ณ„ ์—ฐ๊ฒฐ
    NGINX -->|"ํ”„๋ก์‹œ: /api"| API_Gateway
    NGINX -->|"ํ”„๋ก์‹œ: /grafana"| Grafana
    NGINX -->|"ํ”„๋ก์‹œ: /kafka-ui"| KafkaUI

    %% API Gateway ๋‚ด ์„œ๋น„์Šค ํ˜ธ์ถœ
    API_Gateway -->|"์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ"| Eureka
    API_Gateway -->|"์„œ๋น„์Šค ํ˜ธ์ถœ"| AuthService

    %% ์Šคํƒ€์ผ ์ •์˜
    classDef publicService fill:#ffcc99,stroke:#ff9933,stroke-width:2px
    classDef privateService fill:#99ccff,stroke:#3366cc,stroke-width:2px
    classDef monitoring fill:#ccffcc,stroke:#33aa33,stroke-width:2px

    class NGINX publicService
    class API_Gateway,Eureka,AuthService,UserService,ProductService privateService
    class Grafana,KafkaUI monitoring

Loading
  • ๋ชจ๋“  ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์™€ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋„ ๋™์ผํ•œ NGINX ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋„๋ก ๊ตฌ์„ฑํ•จ.




๊ฒฐ๋ก 

  • NGINX๋ฅผ ํผ๋ธ”๋ฆญ ์ธ์Šคํ„ด์Šค์— ๋‹จ๋… ๋ฐฐ์น˜ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ํ”„๋ผ์ด๋น— ๋„คํŠธ์›Œํฌ์— ๋ฐฐ์น˜ํ•จ์œผ๋กœ์จ ๋ณด์•ˆ๊ณผ ์ ‘๊ทผ์„ฑ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋ฉฐ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฌธ์ œ ํ•ด๊ฒฐํ•จ.
  • ์ด๋Š” ๋‹จ์ˆœํ•˜๋ฉด์„œ๋„ ํšจ๊ณผ์ ์ธ ์•„ํ‚คํ…์ฒ˜๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์›ํ™œํžˆ ํ•จ.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ