Skip to content

문제 해결 / 외부 네트워크에서 이 시스템에 접속할 수 없음

시스템 자체는 정상적으로 실행 중이지만 외부에서 접속할 수 없는 경우는 대부분 네트워크 원인입니다.

구체적인 증상은 다음과 같습니다.

  1. 배포 서버 로컬에서 curl -i http://127.0.0.1:8088 실행 시 302 리다이렉트 정보가 반환됩니다.
HTTP
1
2
3
4
5
6
7
8
9
HTTP/1.1 302 Found
Location: /client-app
Vary: Accept
Content-Type: text/plain; charset=utf-8
Content-Length: 33
Date: Wed, 25 Aug 2021 14:23:02 GMT
Connection: keep-alive

Found. Redirecting to /client-app
  1. 배포 서버 로컬에서 curl http://127.0.0.1:8088/api/v1/do/ping 실행 시 200 정상 데이터가 반환됩니다.
HTTP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
HTTP/1.1 200 OK
Vary: Origin, Accept-Encoding
Access-Control-Allow-Credentials: true
X-Trace-Id: TRACE-D2B2A855-3C28-4566-8EC5-5A2EDD85856C
X-Request-Time: 2021-08-25T14:24:00.239Z
X-Response-Time: 2021-08-25T14:24:00.241Z
X-Request-Cost: 2
Content-Type: application/json; charset=utf-8
Content-Length: 192
ETag: W/"c0-Wb2YFtp16lA4mB7Xh7SpYumGNog"
Date: Wed, 25 Aug 2021 14:24:00 GMT
Connection: keep-alive

{"ok":true,"error":200,"message":"","data":"pong","traceId":"TRACE-D2B2A855-3C28-4566-8EC5-5A2EDD85856C","reqTime":"2021-08-25T14:24:00.239Z","respTime":"2021-08-25T14:24:00.241Z","reqCost":2}
  1. 다른 장치에서 curl -i http://{서버 주소}:8088 실행 시 응답이 없거나 연결 거부가 바로 반환됩니다.

이런 문제가 발생하는 경우 대부분 네트워크 문제이며 DataFlux Func 자체와는 무관합니다.

다음 내용은 가능한 해결 방법 중 일부를 기록한 것에 불과합니다.

1. IP / 도메인 이름 해석이 올바르지 않음

다른 장치에서 DataFlux Func가 설치된 서버를 ping하여 IP, 도메인 이름이 올바른지 확인하세요.

DNS를 수정하거나 /etc/hosts 설정을 변경하는 방식으로 해결할 수 있으며, 구체적인 내용은 실제 네트워크 상황에 따릅니다.

2. 방화벽, 보안 설정이 올바르지 않음

다음을 포함하되 이에 국한되지 않습니다.

  1. 방화벽 설정이 올바르지 않음
  2. Alibaba Cloud ECS 보안 그룹 설정이 올바르지 않음
  3. 리버스 프록시 서버, Alibaba Cloud SLB 설정이 올바르지 않음

먼저 현재 배포에서 개방된 포트를 확인합니다.

Bash
1
grep '8088' {설치 디렉터리}/docker-stack.yaml

반환 내용은 다음과 같습니다.

Text Only
1
- "{개방 포트}:8088"

{개방 포트}는 기본적으로 8088입니다.

네트워크 환경을 확인하고 수정하여 외부에서 서버 포트에 접근할 수 있도록 허용합니다.

3. 로컬 네트워크와 자동 생성된 ingress 서브넷 간의 충돌

다음 명령으로 확인할 수 있습니다.

Bash
1
sudo docker network inspect ingress

IPAM.Config.Subnet 값이 로컬 네트워크와 동일한지 확인합니다.

JSON
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
[
    {
        "Name": "ingress",
        "Id": "adinmn5ww9q3vqo0wbse2jn1s",
        "Created": "2021-08-21T07:46:47.534343555Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.0.0.0/16",
                    "Gateway": "10.0.0.1"
                }
            ]
        }
    }
]

중복되는 경우 다음 방법으로 수정할 수 있습니다.

  1. DataFlux Func를 중지합니다.
  2. 기존 네트워크를 삭제합니다: sudo docker network rm ingress
  3. 네트워크를 재생성합니다: docker network create --driver overlay --ingress --subnet 10.255.0.0/16 --gateway 10.255.0.1 ingress
  4. DataFlux Func를 시작합니다.

  5. 참고 문서: Docker Swarm 기본 주소 풀

  6. 참고 문서: Docker ingress 네트워크 사용자 지정 구성

4. 커널 포워딩 설정 누락

이 문제는 CentOS 시스템에서 발견된 적이 있지만 대부분의 경우에는 발생하지 않았습니다.

다음 방법으로 포워딩 설정을 확인할 수 있습니다.

Bash
1
cat /proc/sys/net/ipv4/ip_forward
  1. 위 명령이 1을 반환하면 포워딩이 이미 활성화되어 있음을 의미합니다.
  2. 그렇지 않은 경우 다음과 같은 방법으로 포워딩 설정을 활성화할 수 있습니다.
Bash
1
echo 1 > /proc/sys/net/ipv4/ip_forward