Rumah >Operasi dan penyelenggaraan >Nginx >Bagaimana untuk mengkonfigurasi had laju kemasukan nginx

Bagaimana untuk mengkonfigurasi had laju kemasukan nginx

PHPz
PHPzke hadapan
2023-05-12 16:52:062074semak imbas

Bermula dari senario perniagaan

Semasa proses pembangunan perniagaan, kami mempunyai keperluan: perkhidmatan muat turun yang disediakan melalui penyemak imbas fail perlu dihadkan kelajuan. Contohnya, apabila pengguna memuat turun fail melalui penyemak imbas fail, mereka perlu mengehadkan kadar muat turun setiap pengguna. Berkembang daripada keperluan ini, kadar muat turun untuk pengguna tertentu juga boleh dihadkan.

Untuk mencapai keperluan perniagaan ini, digabungkan dengan timbunan teknologi semasa kami (k8s + nginx ingress), ia boleh dicapai dengan mengkonfigurasi parameter nginx yang sepadan.

Apakah itu had laju?

Had kelajuan, seperti namanya, ialah had laju.

Kadar di sini boleh:

  • Kekerapan pengguna tunggal mengakses sumber dalam satu unit masa,

  • boleh juga Kekerapan satu IP mengakses sumber dalam satu unit masa.

  • Biasanya, senario perniagaan yang terakhir wujud dalam had kelajuan muat turun

  • Mengapa kita perlu mengehadkan kelajuan?

Intipati had laju adalah untuk memastikan keadilan.

Dalam kes sumber lebar jalur terhad, cuba pastikan setiap pengguna boleh diperuntukkan nilai lebar jalur yang mencukupi secara munasabah. Ia juga boleh memberi perkhidmatan kepada lebih ramai pengguna melalui pengehadan kelajuan apabila sumber jalur lebar terhad.

Selain itu, pengehadan kelajuan juga boleh mengurangkan kesan serangan penafian perkhidmatan teragih (DDOS).

Apakah konfigurasi dalam fail yaml kemasukan nginx?

Konfigurasi had laju kemasukan Nginx pada asasnya boleh didapati dalam anotasi nginx.ingress.kubernetes.io kemasukan.

Di bawah, kami akan menerangkan anotasi yang berkaitan dengan had laju satu demi satu:

: Bilangan sambungan serentak yang boleh dibuat oleh satu IP alamat pada masa yang sama. Jika bilangan sambungan serentak melebihi, ralat 503 dikembalikan.
  • nginx.ingress.kubernetes.io/limit-connections

    : Hadkan bilangan permintaan sesaat untuk satu IP (had permintaan sesaat). Jika melebihi had, ralat 503 dikembalikan. Perlu diingatkan bahawa ralat 503 tidak berlaku serta-merta apabila nilai yang ditetapkan oleh konfigurasi melebihi nginx membenarkan kewujudan bilangan permintaan pecah dalam julat masa tertentu (bilangan permintaan pecah = had-rps * had-burst. -pengganda). Jadi bilakah 503 akan muncul? Ini bermula dengan model mengehadkan semasa nginx. Model mengehadkan semasa nginx ialah baris gilir (rujuk model baris gilir kumpulan benang Bilangan maksimum sambungan untuk pengehadan semasa = keupayaan pemprosesan baris gilir + panjang baris gilir, iaitu sambungan maks-sesaat = had-). rps + had-rps* had-burst-multiplier.
  • nginx.ingress.kubernetes.io/limit-rps

    : Sama seperti limit-rps, tetapi limit-rpm mempunyai keutamaan yang lebih tinggi daripada limit-rps Maksudnya, apabila limit-rpm dan limit-rps ditetapkan pada masa yang sama, had-rpm akan diguna pakai. Walau bagaimanapun, apabila sambungan had juga ditetapkan, maka sambungan had mempunyai keutamaan tertinggi.
  • nginx.ingress.kubernetes.io/limit-rpm

    : pekali saiz permintaan pecah, terutamanya digunakan untuk menentukan panjang baris gilir sambungan, lalainya ialah 5
  • nginx.ingress.kubernetes.io/limit-burst-multiplier

    : Had laju (kadar had) akan dilaksanakan selepas melebihi jumlah trafik, unit ialah KB
  • nginx.ingress.kubernetes.io/limit-rate-after

    : Nilai had laju sambungan tunggal setiap kedua, unitnya ialah KB.
  • nginx.ingress.kubernetes.io/limit-rate

    : Tetapkan senarai putih IP dalam senarai putih tidak terhad kepada CIDR berbilang IP boleh dipisahkan dengan koma.
  • nginx.ingress.kubernetes.io/limit-whitelist

    Nota

Apabila sambungan had, had-rps, had-rpm ditetapkan pada masa yang sama, keutamaan Ya had-sambungan>limit-rpm>limit-rps

  • Prasyarat untuk had-kadar-selepas dan had-kadar berkuat kuasa ialah

  • nginx.ingress.kubernetes.io/proxy-buffering: "on"IP yang dinyatakan di atas perlu dibezakan daripada SLB atau IP pengguna sebenar untuk mendapatkan IP pengguna sebenar

  • 4

  • Selepas memahami perkara pengetahuan ini, mari kita kembali kepada perniagaan kita sendiri. Kita hanya boleh menambah konfigurasi berikut pada fail konfigurasi kemasukan perniagaan:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ...
    nginx.ingress.kubernetes.io/proxy-buffering: on
    nginx.ingress.kubernetes.io/limit-rate: 10 # 单位是KB
  name: xxx
  namespace: yyy
spec:
  ingressClassName: nginx
  rules:
    ...

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi had laju kemasukan nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam