Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memahami Statistik HAProxy untuk MySQL &PostgreSQL

Memiliki Load Balancer selalu merupakan pilihan yang baik untuk meningkatkan lingkungan database Anda. Ini dapat membantu Anda dalam mengarahkan ulang aplikasi ke node database yang tersedia, mendistribusikan lalu lintas di beberapa server untuk meningkatkan kinerja, atau bahkan failover bila diperlukan. Untuk mengetahui apa yang terjadi dengan lalu lintas/sistem Anda, Anda perlu memiliki sistem pemantauan yang baik untuk memantau tidak hanya node database Anda tetapi juga Load Balancer Anda, untuk mengambil tindakan proaktif atau reaktif untuk mengurangi masalah saat ini atau di masa mendatang. Untuk dapat menemukan masalah, Anda perlu memahami arti dari setiap nilai yang Anda lihat.

Dalam blog ini, kami akan menjelaskan apa yang dimaksud dengan statistik HAProxy dan cara memantaunya dengan ramah menggunakan grafik dan ClusterControl.

Apa itu HAProxy?

HAProxy adalah proxy open-source yang dapat digunakan untuk mengimplementasikan ketersediaan tinggi, load balancing, dan proxy untuk aplikasi berbasis TCP dan HTTP.

Sebagai penyeimbang beban, HAProxy mendistribusikan lalu lintas dari satu asal ke satu atau beberapa tujuan dan dapat menentukan aturan dan/atau protokol khusus untuk tugas ini. Jika salah satu tujuan berhenti merespons, itu ditandai sebagai offline, dan lalu lintas dikirim ke tujuan lain yang tersedia.

Tipe Node HAProxy

Saat Anda mengonfigurasi HAProxy Load Balancer, ada beberapa jenis simpul yang berbeda untuk dikonfigurasi bergantung pada fungsionalitas yang Anda inginkan. Opsinya adalah Frontend, Backend, dan Listen.

Frontend Node

Bila Anda menempatkan HAProxy sebagai proxy terbalik di depan server backend Anda, bagian frontend dalam file konfigurasi menentukan alamat IP dan port yang dapat dihubungkan oleh klien. Permintaan memasuki penyeimbang beban, dan tanggapan dikembalikan ke klien. Mereka melewati frontend.

frontend site1.com

     bind 10.10.10.150:80

     use_backend api_servers if { path_beg /api/ }

     default_backend web_servers

Node Backend

Ini mendefinisikan sekelompok server yang akan diseimbangkan beban dan ditugaskan untuk menangani permintaan, tergantung pada kebijakan yang dipilih. HAProxy mengirimkan permintaan ke backend dan kemudian menerima respons dari salah satu server aktif.

backend web_servers

     balance roundrobin

     cookie SERVERUSED insert indirect nocache

     option httpchk HEAD /

     default-server check maxconn 20

     server server1 10.10.10.151:80 cookie server1

     server server2 10.10.10.152:80 cookie server2

Dengarkan Node

Ini menggabungkan dua jenis simpul HAProxy yang kami sebutkan di atas. Anda mungkin lebih suka keterbacaan yang diperoleh dengan memiliki bagian frontend dan backend yang terpisah, atau mungkin Anda ingin memiliki konfigurasi yang lebih ringkas, menggunakan pendekatan mendengarkan.

listen  haproxy_10.10.10.143_3307_rw

        bind *:3307

        mode tcp

        tcp-check connect port 9200

        timeout client  10800s

        timeout server  10800s

        balance leastconn

        option httpchk

        default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 64 maxqueue 128 weight 100

        server 10.10.10.139 10.10.10.139:3306 check

        server 10.10.10.140 10.10.10.140:3306 check backup

        server 10.10.10.141 10.10.10.141:3306 check backup

Halaman Statistik HAProxy

HAProxy memungkinkan Anda mengaktifkan halaman statistik dengan informasi waktu nyata untuk melihat apa yang terjadi di Load Balancer Anda. Untuk mengaktifkan halaman statistik, Anda hanya perlu menggunakan perintah “stats enable” di file konfigurasi HAProxy Anda (/etc/haproxy/haproxy.cfg). Mari kita lihat contohnya:

userlist STATSUSERS

        group admin users admin

        user admin insecure-password admin

        user stats insecure-password admin



listen admin_page

        bind *:9600

        mode http

        stats enable

        stats refresh 60s

        stats uri /

        acl AuthOkay_ReadOnly http_auth(STATSUSERS)

        acl AuthOkay_Admin http_auth_group(STATSUSERS) admin

        stats http-request auth realm admin_page unless AuthOkay_ReadOnly

Baris pengikat menetapkan alamat IP dan port mana yang akan Anda gunakan untuk mengakses halaman statistik. Anda juga dapat mengonfigurasi otentikasi dan periode penyegaran. Jika Anda mengakses node HAProxy Anda menggunakan port yang ditentukan (9600 dalam contoh), kredensial admin/admin, Anda akan melihat sesuatu seperti ini:

Di sini, Anda akan menemukan berbagai metrik berguna untuk memantau simpul HAProxy Anda.

Statistik HAProxy

Sekarang, mari kita lihat apa metrik ini. Karena maknanya tergantung pada konteksnya, kami akan membaginya menjadi Frontend dan Backend.

Antrian

Latar Belakang

Bagian ini hanya berlaku untuk backend dan menunjukkan berapa lama klien menunggu server tersedia. HAProxy dapat mengantri koneksi saat Anda menggunakan pengaturan maxconn.

Kolom “Sur” menunjukkan jumlah koneksi klien yang sedang dalam antrian dan belum ditetapkan ke server. Kolom "Maks" menunjukkan koneksi terbanyak yang pernah diantrekan sekaligus. Kolom “Batas” menunjukkan jumlah maksimum koneksi yang diizinkan untuk diantrekan, seperti yang ditentukan oleh pengaturan maxqueue pada setiap baris server dalam file konfigurasi.

Rasio Sesi

Depan

Menjelaskan tingkat koneksi klien ke HAProxy.

Kolom "Sur" menunjukkan tingkat saat ini di mana sesi klien, atau koneksi yang dibuat sepenuhnya antara klien dan server, sedang dibuat. Jika Anda mengarahkan mouse ke bidang ini, halaman akan menampilkan metrik berikut:

  • Rasio koneksi saat ini:Kecepatan saat klien terhubung ke HAProxy.
  • Rasio sesi saat ini:  Rasio pembuatan sesi, yang merupakan entitas yang memegang status koneksi ujung ke ujung.
  • Tingkat permintaan saat ini:Tingkat penerimaan permintaan HTTP melalui koneksi yang dibuat.

Kolom “Maks” menunjukkan sesi terbanyak yang pernah digunakan secara bersamaan. Jika Anda mengarahkan mouse ke bidang ini, halaman akan menampilkan metrik berikut:

  • Laju koneksi maksimum:Tingkat tertinggi saat klien terhubung ke HAProxy.
  • Rasio sesi maksimum:Rasio tertinggi saat klien telah menetapkan sesi, yang merupakan entitas yang memegang status koneksi ujung ke ujung.
  • Tingkat permintaan maksimum:Tingkat tertinggi permintaan HTTP yang diterima melalui koneksi yang dibuat.

Kolom “Batas” menunjukkan jumlah sesi maksimum per detik yang akan diterima frontend, seperti yang ditetapkan oleh setelan sesi batas kecepatan. Jika batas ini terlampaui, koneksi tambahan akan tetap tertunda di backlog soket.

Latar Belakang

Statistik ini menunjukkan tingkat koneksi yang dibuat ke server.

Kolom “Cur” menunjukkan kecepatan saat ini, per detik, saat koneksi dibuat ke server. Kolom "Maks" menunjukkan tingkat tertinggi koneksi yang pernah dibuat ke server tertentu. Kolom “Batas” tidak digunakan di sini.

Sesi

Depan

Bagian ini menghitung jumlah sesi, atau koneksi klien-ke-server penuh, yang digunakan pada penyeimbang beban.

Kolom “Sur” menunjukkan jumlah sesi yang ditetapkan saat ini. Kolom “Maks” menunjukkan sesi terbanyak yang pernah dibuat secara bersamaan. Kolom "Batas" menunjukkan sesi simultan paling banyak yang diizinkan, seperti yang ditentukan oleh pengaturan maxconn di frontend. Frontend tertentu itu akan berhenti menerima koneksi baru ketika batas ini tercapai. Jika maxconn tidak disetel, maka "Batas" sama dengan nilai maxconn di bagian global konfigurasi Anda. Jika itu tidak disetel, nilainya didasarkan pada sistem Anda. Saat Anda mengarahkan kursor ke kolom “Total”, halaman akan menampilkan metrik berikut:

  • Cum. koneksi:Jumlah koneksi kumulatif yang dibuat sejak HAProxy terakhir dimuat ulang.
  • Cum. sesi:Jumlah sesi kumulatif (koneksi ujung ke ujung) yang dibuat sejak pemuatan ulang terakhir.
  • Cum. Permintaan HTTP:Jumlah kumulatif permintaan HTTP sejak pemuatan ulang terakhir.
  • Respons HTTP xxx:Jumlah total permintaan HTTP yang menerima respons xxx.
  • Compressed 2xx:Jumlah total respons 2xx yang dikompresi, jika kompresi telah diaktifkan. Ini juga menunjukkan persentase permintaan yang dikompresi.
  • Respons lainnya:Jumlah total permintaan HTTP yang menerima respons yang tidak tercakup oleh metrik lainnya.
  • Permintaan yang dicegat:Jumlah total permintaan yang dicegat dan dialihkan ke halaman HAProxy Stats.

Kolom “LbTot” dan “Terakhir” tidak digunakan di bagian ini.

Latar Belakang

Bagian ini menunjukkan jumlah koneksi saat ini ke salah satu server aktif.

Kolom “Cur” mencantumkan jumlah koneksi aktif ke server. Kolom "Maks" menunjukkan koneksi terbanyak yang pernah dibuat secara bersamaan ke server yang diberikan. Kolom “Batas” menunjukkan jumlah maksimum koneksi yang diizinkan untuk server, seperti yang ditetapkan oleh parameter maxconn pada baris server.

Baris backend menunjukkan nilai fullconn untuk "Batas" atau, jika tidak disetel, menggunakan rumus berikut:Jumlah nilai Batas Sesi untuk frontend yang merutekan ke backend ini, dibagi 10. Kolom “Total” menunjukkan jumlah kumulatif koneksi yang telah menggunakan server yang diberikan. Saat Anda mengarahkan kursor ke bidang ini, laman menampilkan metrik berikut:

  • Cum. sesi:Jumlah kumulatif koneksi yang dibuat ke server ini.
  • Cum. Respons HTTP:Jumlah kumulatif respons HTTP yang diterima dari server ini.
  • Respons HTTP xxx:Jumlah total respons HTTP xxx dari server ini.
  • Respons lainnya:Jumlah total respons HTTP yang tidak tercakup oleh metrik lainnya.
  • Waktu antrean:Jumlah waktu dalam milidetik saat koneksi tetap mengantre sambil menunggu slot koneksi ke server, rata-rata selama 1024 koneksi terakhir yang berhasil.
  • Waktu koneksi:Jumlah waktu dalam milidetik yang diperlukan untuk berhasil terhubung ke server, rata-rata selama 1024 koneksi terakhir yang berhasil.
  • Waktu respons:Waktu respons server dalam milidetik, rata-rata selama 1024 koneksi terakhir yang berhasil.
  • Total waktu:Total waktu sesi dalam milidetik, rata-rata selama 1024 sambungan terakhir yang berhasil.

Kolom “LbTot” menunjukkan total berapa kali server tertentu dipilih untuk melayani permintaan. Ini dapat disebabkan oleh penyeimbangan beban normal atau karena pengiriman ulang dari server yang gagal. Kolom “Terakhir” menunjukkan waktu sejak sambungan terakhir diterima.

Byte

Depan

Bagian ini menampilkan jumlah kumulatif data yang dikirim dan diterima antara HAProxy dan klien. Kolom “Masuk” menunjukkan jumlah total byte yang diterima dan kolom “Keluar” menunjukkan jumlah total byte yang dikirim.

Latar Belakang

Bagian ini menampilkan jumlah data yang dikirim dan diterima antara HAProxy dan server. Kolom “In” menunjukkan jumlah byte yang dikirim ke server. Kolom “Keluar” menunjukkan jumlah byte yang diterima kembali.

Ditolak

Ini menunjukkan jumlah permintaan dan tanggapan yang ditolak karena masalah keamanan di bagian Frontend dan Backend.

Depan

Kolom “Req” menunjukkan jumlah permintaan yang ditolak karena arahan konfigurasi (http-request deny, http-request reject, dll) yang ditempatkan di bagian Frontend atau Listen.

Kolom “Resp” menunjukkan jumlah tanggapan yang ditolak oleh perintah http-response deny yang ditempatkan di frontend atau mendengarkan.

Latar Belakang

Kolom “Req” hanya berlaku untuk backend secara keseluruhan. Ini menunjukkan jumlah permintaan yang ditolak oleh arahan konfigurasi (http-request deny, http-request reject, dll) di backend.

Kolom “Resp” menunjukkan jumlah respons yang ditolak untuk server tertentu karena perintah konfigurasi http-response deny atau tcp-response content reject di backend.

Kesalahan

Depan

Hanya kolom “Req” yang digunakan di sini. Ini menunjukkan jumlah permintaan yang mengalami kesalahan.

Kemungkinan penyebabnya meliputi:

  • Penghentian dini dari klien
  • Kesalahan membaca dari klien
  • Waktu klien habis
  • Klien menutup koneksi
  • Klien mengirim permintaan yang salah
  • Permintaan telah di-tarpit

Latar Belakang

Ini menunjukkan jumlah kesalahan yang terkait dengan komunikasi dengan server backend.

Kolom "Req" tidak digunakan. Kolom "Sambungan" menunjukkan jumlah permintaan yang mengalami kesalahan saat mencoba menyambung ke server. Kolom “Resp” menunjukkan kesalahan yang ditemukan saat mendapatkan respons.

Peringatan

Latar Belakang

Hanya untuk backend. Bagian ini menampilkan jumlah percobaan ulang dan pengiriman ulang. Jika Anda telah menambahkan direktif percobaan ulang ke backend Anda, kolom “Retr” menunjukkan total berapa kali koneksi dicoba ulang. Kolom “Redis” menunjukkan berapa kali HAProxy gagal membuat koneksi ke server dan mengirimkannya kembali ke server lain. Ini mengharuskan Anda menambahkan opsi pengiriman ulang arahan.

Server

Depan

Satu-satunya bidang dari bagian ini yang berlaku untuk frontend adalah bidang Status. Ketika Status BUKA, frontend beroperasi secara normal dan siap menerima lalu lintas.

Latar Belakang

Bagian ini menampilkan detail tentang status, kesehatan, dan bobot setiap server. Kolom "Status" ditampilkan jika server saat ini aktif dan untuk berapa lama. Itu dapat menampilkan salah satu status berikut:

  • UP:Server melaporkan sebagai sehat.
  • BAWAH:Server melaporkan sebagai tidak sehat dan tidak dapat menerima permintaan.
  • NOLB:Anda telah menambahkan http-check disable-on-404 ke backend dan URL health check telah mengembalikan respons HTTP 404.
  • MAINT:Server telah dinonaktifkan atau dimasukkan ke mode pemeliharaan.
  • DRAIN:Server telah dimasukkan ke mode pengurasan.
  • tidak ada pemeriksaan:Pemeriksaan kesehatan tidak diaktifkan untuk server ini.

Kolom “LastChk” menunjukkan nilai seperti L7OK/200 dalam Xms. Nilai itu berarti bahwa pemeriksaan kesehatan Layer 7 telah dilakukan; itu mengembalikan respons HTTP 200 OK dan melakukannya dalam X milidetik.

Kolom “Wght” menunjukkan proporsi lalu lintas yang akan diterima, seperti yang ditetapkan oleh parameter bobot pada baris server. Kolom “Act” menunjukkan apakah server aktif (ditandai dengan Y) atau cadangan (ditandai dengan -). Kolom “Bck” menunjukkan apakah server adalah cadangan (ditandai dengan Y) atau aktif (ditandai dengan -).

Kolom “Chk” menunjukkan jumlah health check yang gagal. Kolom “Turun” menunjukkan jumlah transisi dari ATAS ke BAWAH. Kolom “Dwntme” menunjukkan berapa lama server mati.

Jika Anda telah menambahkan parameter slowstart ke baris server, kemudian saat Anda menonaktifkan dan kemudian mengaktifkan server tersebut, kolom “Thrtle” menunjukkan persentase lalu lintas yang akan diterima server. Persentasenya akan meningkat secara bertahap hingga 100% selama periode yang Anda tetapkan.

Informasi ini didasarkan pada entri blog HAProxy yang dapat Anda rujuk untuk informasi lebih detail.

HAProxy di ClusterControl

Selain penerapan dan manajemen, ClusterControl juga memberikan wawasan tentang statistik HAProxy dan Dasbor Real-Time dari UI. Dari ClusterControl, Anda dapat mengakses halaman statistik di ClusterControl -> Pilih Cluster -> Nodes -> pilih node HAProxy yang mirip dengan tangkapan layar di bawah ini:

Anda dapat mengaktifkan/menonaktifkan server dari penyeimbangan beban dengan mencentang/menghapus centang tombol kotak centang di bawah kolom "Diaktifkan". Ini sangat berguna ketika Anda ingin aplikasi Anda dengan sengaja melewatkan koneksi ke server misalnya, untuk pemeliharaan atau untuk menguji dan memvalidasi parameter konfigurasi baru atau kueri yang dioptimalkan.

Anda juga dapat memantau server HAProxy Anda dari ClusterControl dengan memeriksa bagian Dasbor.

Untuk mengaktifkannya, Anda hanya perlu masuk ke ClusterControl -> Pilih Cluster -> Dasbor -> Aktifkan Pemantauan Berbasis Agen. Ini akan menyebarkan agen pada setiap node untuk mendapatkan semua informasi untuk menghasilkan grafik yang sesuai.

Di sini, Anda tidak hanya akan melihat semua metrik yang diperlukan untuk memantau node HAProxy, tetapi juga untuk memantau semua lingkungan menggunakan Dasbor yang berbeda.

Kesimpulan

HAProxy adalah alat yang bagus dan kuat untuk meningkatkan database dan kinerja aplikasi Anda. Hal ini juga berguna untuk menambahkan Ketersediaan Tinggi dan Failover ke lingkungan Anda. Untuk mengetahui apa yang terjadi di node HAProxy Anda, Anda perlu memahami metrik yang dipantau di halaman statistik, atau bahkan meningkatkan pemantauan ini dengan menambahkan dasbor agar lebih ramah.

Di blog ini, kami telah menjelaskan setiap metrik yang disebutkan di halaman statistik HAProxy, dan kami juga menunjukkan tampilannya di ClusterControl, tempat Anda dapat mengakses bagian statistik dan dasbor HAProxy dari sistem yang sama.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 Cara untuk Mendeteksi jika String Cocok dengan Ekspresi Reguler di MySQL

  2. Normalisasi di MYSQL

  3. Cara Mengaktifkan SSL/TLS untuk MySQL di Ubuntu

  4. Menulis ulang mysql pilih untuk mengurangi waktu dan menulis tmp ke disk

  5. Apakah mungkin untuk mengeksekusi string di MySQL?