Lewati ke isi

Pemecahan Masalah / Sistem Tidak Dapat Diakses dari Jaringan Eksternal

Jika sistem itu sendiri sudah berjalan normal, tetapi tidak dapat diakses dari luar, umumnya penyebabnya adalah masalah jaringan.

Gejalanya adalah sebagai berikut:

  1. Di server deployment itu sendiri, perintah curl -i http://127.0.0.1:8088 mengembalikan informasi pengalihan 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. Di server deployment itu sendiri, perintah curl http://127.0.0.1:8088/api/v1/do/ping mengembalikan data normal dengan kode 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. Di perangkat lain, perintah curl -i http://{alamat_server}:8088 tidak merespons, atau langsung menolak koneksi.

Masalah semacam ini sebagian besar merupakan masalah jaringan, dan tidak ada hubungannya dengan DataFlux Func itu sendiri.

Berikut ini hanyalah catatan dari sebagian kemungkinan solusi.

1. Resolusi IP / Nama Domain Tidak Benar

Coba lakukan ping ke server tempat DataFlux Func berada dari perangkat lain untuk memastikan IP dan nama domain sudah benar.

Masalah ini dapat diatasi dengan mengubah DNS atau konfigurasi /etc/hosts; detailnya disesuaikan dengan kondisi jaringan aktual.

2. Firewall dan Konfigurasi Keamanan Tidak Benar

Termasuk namun tidak terbatas pada:

  1. Konfigurasi firewall tidak benar
  2. Konfigurasi Security Group Alibaba Cloud ECS tidak benar
  3. Konfigurasi server reverse proxy dan Alibaba Cloud SLB tidak benar

Pertama-tama, periksa port yang dibuka pada deployment saat ini:

Bash
1
grep '8088' {direktori_instalasi}/docker-stack.yaml

Hasilnya adalah:

Text Only
1
- "{port_terbuka}:8088"

{port_terbuka} secara default adalah 8088

Periksa dan ubah lingkungan jaringan untuk mengizinkan akses eksternal ke port server.

3. Konflik antara Jaringan Lokal dan Subnet ingress yang Dibuat Otomatis

Anda dapat memeriksanya dengan perintah berikut:

Bash
1
sudo docker network inspect ingress

Periksa apakah nilai IPAM.Config.Subnet sama dengan jaringan lokal:

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"
                }
            ]
        }
    }
]

Jika terjadi tumpang tindih, Anda dapat mengubahnya dengan cara berikut:

  1. Hentikan DataFlux Func
  2. Hapus jaringan yang sudah ada sebelumnya: sudo docker network rm ingress
  3. Buat ulang jaringan: docker network create --driver overlay --ingress --subnet 10.255.0.0/16 --gateway 10.255.0.1 ingress
  4. Mulai DataFlux Func

  5. Dokumen referensi: Kumpulan alamat default Docker Swarm

  6. Dokumen referensi: Konfigurasi kustom jaringan Docker ingress

4. Konfigurasi Penerusan Kernel Tidak Ada

Masalah ini pernah ditemukan pada sistem CentOS, tetapi pada sebagian besar kasus belum pernah ditemui.

Anda dapat memverifikasi konfigurasi penerusan dengan cara berikut:

Bash
1
cat /proc/sys/net/ipv4/ip_forward
  1. Jika perintah di atas mengembalikan 1, berarti penerusan sudah diaktifkan.
  2. Jika tidak, Anda dapat mengaktifkan konfigurasi penerusan dengan cara berikut:
Bash
1
echo 1 > /proc/sys/net/ipv4/ip_forward