[tutorial] BAB 1 Persiapan CRUD pada Framework Laravel dan VueJS

crud laravel vuejs

Persiapan

Setelah kita mulai mempelajari suatu bahasa pemrograman tentang konsep, fundamental dan basic nya maka saatnya kita praktek lebih dalam praktek teknis pembuatan aplikasi yang sederhana. Suatu aplikasi hampir dipastikan ada aksi-aksi seperti

  • Create – menambah data
  • Read – membaca dan menampilkan data
  • Update – meng-edit dan update data
  • Delete – menghapus data

Aksi-aksi tersebut sering dan sudah biasa disebut dengan CRUD. Namun kali ini kita akan belajar praktek dari 0 (from scratch) membuat CRUD plus dengan Search, Pagination dan Report (laporan).

Teknologi yang akan kita pelajari dan praktekan diantaranya adalah

  • Xampp – Bundling Web server (apache2), DB server (Mysql) di local komputer kita
  • Composer – package manager
  • Framework Laravel – easily and quickly PHP framework based on MVC design pattern
  • Blade Template Engine – default bawaan laravel
  • Mysql Database – database sejuta umat
  • Framework VueJS – framework JS
  • Vue Router – agar vueJS lebih mudah
  • Axios – untuk menghadle http request
  • Ajax Request – agar http request lebih nyaman dan cepat
  • Html Form, table dll – view html

Kita asumsikan OS yang dipakai adalah windows. Pada tahap persiapan ini yang perlu kita lakukan diantaranya adalah

  1. Instalasi Xampp
  2. Instalasi Composer
  3. Instalasi Laravel
  4. Integrasi VueJS
  5. Menyusun relasi database

karena kita mau menggunakan laravel maka kita perlu ketahui dulu requirement dari versi laravel yang akan kita install. Kita akan menggunakan laravel versi 5.7.
Update fitur laravel versi 5.7 diantaranya

  • Securing Laravel APIs with Auth0
  • Laravel Dump Server Integration
  • Laravel Nova
  • Guest User Gates / Policies
  • Email Verification
  • Optional Email Verification
  • URL Generator & Callable Syntax
  • Paginator
  • Improved Error Messages
  • Testing Artisan Commands

kemudian requirement untuk laravel 5.7 adalah

  • PHP >= 7.1.3
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension
  • Ctype PHP Extension
  • JSON PHP Extension
  • BCMath PHP Extension

1. Instalasi XAMPP

Setelah kita mengetahui requirement Laravel maka kita perlu memilih versi Xampp yang mendukung requirement tersebut. Kita pilih xampp versi 7.2.17.
untuk detail tahap ini kita lanjutkan di sub bab berikutnya yakni installasi xampp di link ini

[tutorial] Analisa simple Log HaProxy dengan halog

haproxy load balancer server

How To Analyze HaProxy Logs

HALog adalah tool simple namun powerful untuk menganalisa HaProxy log. yuk lets try…

  1. Instalasi

    cd /usr/src
    wget http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev11.tar.gz
    tar xzf haproxy-1.5-dev11.tar.gz
    cd haproxy-1.5-dev11/contrib/halog
    make
    cp halog /usr/bin/
  2. Get number of requests treated by the server (columns “tot_req”)

    cat /var/log/haproxy.log | halog -srv -H -q |awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 9"}' |column -t
  3. List servers by response time in milisecond (columns “avg_rt”)

    cat /var/log/haproxy.log | halog -srv -H -q |awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 12"}' |column -t
    
  4. List servers by application errors: HTTP status code 5xx (column “5xx”)

    cat /var/log/haproxy.log |halog -srv -H -q | awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 6"}' | column -t
    
  5. List servers errors related by application (prefixed by the backend name)

    cat /var/log/haproxy.log |halog -srv -H -q | awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 5"}' | column -t
    
  6. List URLs by server computation time in milliseconds (column “okavg”)

    cat /var/log/haproxy.log | halog -ut -H -q | column -t
    
  7. List URLs by errors (column “err”)

    cat /var/log/haproxy.log | halog -ue -H -q | column -t
    
  8. List URLs by missing files: HTTP status code 404 (column “req”)

    cat /var/log/haproxy.log | halog -u -H -q -hs 404 | column -t
    
  9. List URLs by number of request(column “req”)

    cat /var/log/haproxy.log | halog -u -H -q | awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 1"}' | column -t
    

Jangan lupa sesuaikan path log haproxy nya.
untuk cara install dan setting haproxy sendiri ada disini

referensi : https://haproxy-log-analyzer.readthedocs.io/

[tutorial] bagaimana melakukan redirect di nginx

redirect di nginx

Kapan kita melakukan redirect?

Ketika anda punya broken link yang ingin supaya link nya dapat dipakai lagi, semisal karena sudah terindex oleh google. Bisa juga karena web anda sedang maintenance sementara sehingga redirect kehalaman maintenance agar pengunjung dapat info.
Okey… disini saya anggap temen2 sudah tau apa itu file htaccess, karena kita akan langsung kepada intinya. Bagi yang belum mengetahui tentang htaccess bisa baca-baca disini.

Bagaimana caranya?

untuk melakukan redirect di nginx bisa kita lakukan dengan meng-edit file konfigurasi di nginx atau di konfigurasi domain nginx.

  1. pake return (example : return 301 https://example.com$request_uri;)
    server {
        listen 80;
        listen [::]:80;
        hostname example.com www.example.com;
        return 301 https://example.com$request_uri;
    }
  2. pake regex (example : rewrite ^/foo/(bar)/(.*)$ https://$server_name/$1/$2 permanent; )
    server {
        listen 80;
        listen [::]:80;
        hostname example.com www.example.com;
        root /var/www/example.com/public;
        rewrite ^/foo/(bar)/(.*)$ $scheme://$server_name/$1/$2 permanent;
    }
  3. pake map
    include redirect-map.conf;
    server {
        […]
        if ( $redirect_uri ) {
            return 301 $redirect_uri;
        }
    }

    redirect-map.conf isinya …

    map $request_uri $redirect_uri {
        /home.html          /beranda;
        /usman.html         /cakep;
        /ribuantoro.html    /ganteng;
    }
  4. HTTP to HTTPS
    return 301 https://$host$request_uri;
  5. non-www to www
    if ( $host !~ ^www\. ) {
        return 301 $scheme://www.$host$request_uri;
    }
  6. www to non-www
    if ( $host ~ ^www\.(?<domain>.+)$ ) {
        return 301 $scheme://$domain$request_uri;
    }

     

Selain redirect di nginx bisa juga redirect dengan file htaccess namun menggunakan webserver apache. berikut caranya disini
Semoga bermanfaat.

referensi :
nginx official

[compare] Perbedaan dan perbandingan WebSocket vs Socket.io

WebSocket vs socket.io

Apa perbedaan websocket dengan socket.io

Oke pertama kita bahas dulu tentang websocket.
Websocket adalah Protokol komunikasi yang menyediakan komunikasi dua arah antara Klien dan Server melalui koneksi TCP, WebSocket selalu open sepanjang waktu sehingga mereka memungkinkan transfer data real-time.
Ketika klien melakukan request ke Server, koneksi tidak tertutup (closed) saat response diterima, koneksi akan tetap open sampai klien atau server mengakhiri request.

Poin penting pada websocket diantaranya

  • WebSocket membantu komunikasi realtime antara client dan web server.
  • WebSocket membantu komunikasi cross-platform antara client dan web server.
  • WebSocket membantu kebutuhan bisnis di seluruh dunia untuk realtime web aplikasi.
  • WebSocket membantu koneksi pada HTTP dalam komunikasi full duplex
  • WebSocket menghilangkan overhead and mengurangi complexity.
  • WebSocket membuat komunikasi real-time lebih mudah dan efisien.

Skema Protokol WebSocket :

WebSocket vs socket.io

Selanjutnya kita lihat tentang Socket.io
Socket.io adalah library yang memungkinkan komunikasi real-time dan full dupleks antara Klien dan server Web. Ia menggunakan protokol WebSocket sebagai interface nya. Secara umum socket.io dibagi menjadi dua bagian yakni sisi client berupa library yang berjalan di browser dan sisi server berjalan di web server.

Poin penting pada socket.io diantaranya

  • Socket.io dapat melakukan broadcast ke beberapa socket sekaligus dan dapat menangani koneksi secara transparan.
  • Socket.io bekerja di semua platform, server atau device dan meningkatkan kualitas, keandalan, dan kecepatan.
  • Secara otomatis meningkatkan requirement ke WebSocket jika diperlukan.
  • Socket.io mengimplementasikan real-time transport protocol real-time secara custom dibanding protokol lainnya.
  • Socket.io membutuhkan dua library untuk digunakan sisi Klien dan library sisi server.
  • Socket.io berjalan dengan work-based event. ada beberapa event khusus yang dapat diakses menggunakan Socket di sisi server seperti Connect, message, Disconnect, Ping dan Reconnect.
  • Ada beberapa event yang dijalankan khusus oleh Klien seperti Connect, connect- error, connect-timeout and Reconnect
  • Secara teknis Socket.io menangani komunikasi full dupleks secara real time.
  • Socket.io juga menangani ketidakkonsistenan dari browser.
  • Socket.io juga memberikan dukungan fitur tambahan untuk infrastruktur publikasi dasar dan melakukan reconnect secara otomatis.
  • Saat ini, AFAIK adalah yang paling sering digunakan dan lebih mudah untuk membantu dalam pengembangan vanilla web soket.

Websocket VS Socket.io

mari kita lihat perbedaan nya dalam table perbandingan

No.WebSocketSocket.io
1protocol yang tebangun pada koneksi TCPlibrary untuk berjalan dengan WebSocket
2full duplex communication pada koneksi TCPkomunikasi event-based antara browser dan server.
3Proxy dan load balancer tidak didukung di WebSocket.koneksi dapat terbangun walaupun lewat proxi and load balancer.
4.tidak support broadcasting.supports broadcasting.
5.tidak punya a fallback option.supports fallback options.

Kesimpulan nya

Untuk kebutuhan realtime communication socket.io melengkapi websocket dalam praktek pengembangan aplikasinya. Untuk lebih jelasnya silahkan praktekan secara teknis penggunaannya.

referensi : https://educba.com

[tutorial] install free cpanel vps dengan centos web panel (CWP)

install cwp centos web panel

Bismillah – Assalamualaikum wa rohmatullohi wabarokatuh

Bagi temen-temen yang baru migrasi dari shared hosting ke vps tentu agak kaget dalam config web ketika sebelumnya tinggal klik klik dengan cpanel yang memanjakan tiba-tiba berubah menjadi layar hitam dengan text putih manual ngetik command2 bak hacker legendaris mau meretas situs pemerintahan … #eh

sebenarnya banyak sesuatu seperti cpanel hosting dalam mengelola vps bahkan cpanel free alias cpanel gratis atau web panel gratis. yang kita perlukan hanya cara install dan cara pakai nya, salah satu nya adalah CWP atau kepanjangan dari centos web panel.

namanya aja centos berarti ini panel yang berjalan di atas OS linux centos, maka wajib bagi anda install vps dengan OS centos dan minimal centos 6 ya… siip asumsi anda sudah bisa atau mahir dan terbukti sudah menginstall centos di vps anda, bisa di digital ocean atau vultr atau yang lain nya… 

 

Berikut Step by step install centos web panel (CWP) 

  1. download dan install (sekitar 30 menitan)

    cd /usr/local/src
    wget http://centos-webpanel.com/cwp-latest
    sh cwp-latest
    
    jika download link gagal ganti dengan :
    CentOS 6: http://dl1.centos-webpanel.com/files/cwp2-latest
    CentOS 7: http://dl1.centos-webpanel.com/files/cwp-el7-latest
  2. reboot server (agar update)

    reboot
  3. Konfigurasi

    Log in to your CWP server CentOS WebPanel Admin GUI lewat browser
    http://SERVER-IP:2030/
    Username: root
    Password: your root password 
    – Setup nameservers 
    – Setup shared ip (harus IP public anda) 
    – Setup paling tidak 1 hosting paket (atau edit default package) 
    – Setup root email 

    konfigurasi lain nya bisa cek di http://wiki.centos-webpanel.com/
  4. Bingung ?

    Kontak WA 08975835238 atau email ke ztoro@qodrbee.com untuk training.

[solved] Bagaimana cek element html visible di screen dengan jQuery

Check Visibility element viewport or Checking if an element is visible on-screen using jQuery

How to Check an Element is Visible or not Using jQuery?

untuk dapat mengecek apakah element terlihat di layar atau tidak bisa menggunakan jQuery library Element Onscreen Visibility dari om Matthew yang dapat anda download di sini.
ingat ini ngecek apakah muncul di layar saat ini, bukan yang tidak muncul di layar… semisal page nya panjang ke bawah dan ada yang tertutupi maka element yg tertutupi di bawah akan bernilai false.

how to use

result akan bernilai true jika element visible (kelihatan) oleh mata user.

$('#element').visible();

result akan bernilai true jika bagian dari element visible (kelihatan) oleh mata user.

$('#element').visible( true );

Secara default plugin ini akan mengabaikan element dengan css seperti , display:none, visibility: hidden, offsetWidth or offsetHeight is 0 . untuk memfilter css visibility, Anda bisa gunakan  jQuery :visible selector

$('#element:visible').visible();

Sebagai tambahan, anda bisa meanmbah parameter ke dua  yang akan memeriksa apakah elemen visible, serta apakah itu ada dalam viewport (pandangan user) juga.

$('#element:visible').visible( false, true );

Tambahan lagi.. Anda bisa menambah parameter ke tiga untuk menentukan arah ketika memeriksa visibilitas. bisa ‘horisontal’, ‘vertikal atau both. Secara default both.

$('#element').visible( false, false, 'horizontal' );

supaya lebih paham silahkan lihat demo ini. check visibility element viewport
lihat juga demo implementasi yang ada di qodrbee pada bagian daftar isi

[solved] bagaimana cara redirect dengan file htaccess ?

kapan perlu redirect ?

Ketika anda punya broken link yang ingin supaya link nya  dapat dipakai lagi, semisal karena sudah terindex oleh google. Bisa juga karena web anda sedang maintenance sementara sehingga redirect kehalaman maintenance agar pengunjung dapat info.
Okey… disini saya anggap temen2 sudah tau apa itu file htaccess, karena kita akan langsung kepada intinya. Bagi yang belum mengetahui tentang htaccess bisa baca-baca disini.

persiapan

pertama kita buat dulu file .htaccess lalu taruh di root directory web kita atau folder yang membutuhkan, misal kalau menggunakan wordpress file .htaccess sejajar dengan folder wp-content wp-include dll. lalu file .htaccess itu akan kita isi dengan script untuk redirect. berikut macam-macam cara redirect dengan file .htaccess

301 (Permanent) Redirect

Redirect seluruh URL website ke URL  yang berbeda secara permanent. Contohnya kita redirect ke domain qodrbee.com

# This allows you to redirect your entire website to any other domain
Redirect 301 / http://qodrbee.com/

 

302 (Temporary) Redirect

Redirect seluruh URL website ke URL  yang berbeda secara sementara. Ini berguna untuk tujuan SEO ketika anda punya landing page sementara dan berencana nanti akan kembali ke landing page utama. Contohnya kita redirect ke domain qodrbee.com

# This allows you to redirect your entire website to any other domain
Redirect 302 / http://qodrbee.com/

 

Redirect index.html ke specific subfolder

# This allows you to redirect index.html to a specific subfolder
Redirect /index.html http://qodrbee.com/newdirectory/

 

Redirect file lama ke file baru

# Redirect old file path to new file path
Redirect /olddirectory/oldfile.html http://qodrbee.com/newdirectory/newfile.html

 

Redirect ke specific index page

# Provide Specific Index Page (Set the default handler)
DirectoryIndex index.html

 

Redirect non-www ke www .htaccess

RewriteCond %{HTTP_HOST} ^qodrbee.com [NC]
RewriteRule ^(.*)$ http://www.qodrbee.com/$1 [L,R=301]

 

Redirect www ke non-www .htaccess

RewriteCond %{HTTP_HOST} ^www.domainanda.com [NC]
RewriteRule ^(.*)$ http://domainanda.com/$1 [L,R=301]

 

Redirect seluruh website ke website lain

RewriteCond %{HTTP_HOST} ^domainlama.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domainlama.com [NC]
RewriteRule ^(.*)$ http://domainbaru.com/$1 [L,R=301,NC]

 

Redirect Url Direktori ke Halaman Utama

RedirectMatch 301 /blog/(.*) https://wwqodrbeew.idsysadmin.com/$1
RedirectMatch ^/$ https://www.qodrbee.com/blog

selain dengan file .htaccess redirect juga bisa dilakukan dengan setting config nginx

[tutorial] Cara Mengirim Isi Form ke Whatsapp

Selama ini kita sudah ketahui bersama bahwa mengirim pesan WA dapat lewat web atau lewat URL. Lebih tepat nya lewat http://api.whatsapp.com/send?phone=628975835238&text=Assalamualaikum%20mas%20usman .
Namun cara ini punya banyak keterbatasan, diantaranya…

  1. hanya bisa jalan jika menggunakan google chrome
  2. bagaimana kalo yang dikirim text nya dari suatu form
  3. loading yang cukup lama ketika mau mengirim pesan di api.whatsapp.com

Nah kali ini saya akan membeberkan rahasia dahsyat cara mengirim pesan whatsapp lewat form secara instan tanpa coding… serius tanpa coding. Saya jamin tanpa coding… kalau sampai coding Anda boleh datengi rumah saya (sambil bawa oleh2) untuk komplain… haha

oke kembali ke laptop… jadi ceritanya kita punya form lalu ingin agar auto sent ke WA isi form tersebut. Caranya cukup mudah… anda hanya perlu :

  1. install plugin wordpress woowa dari http://woo-wa.com
  2. buat form
  3. setting plugin
  4. submit form

oke kita jabarkan

1. Install plugin woowa

pastikan web anda menggunakan wordpress jika bukan maka skip sampe bawah lalu klik share. kemudian kunjungi https://woo-wa.com untuk mendapatkan plugin woowa. Anda juga dapat mencoba berbagai demo disana.

woowa whtasapp gateway notifier api

Setelah mendaftar dan dapat akun sebagai member. Login masuk ke member area dan klik menu DOWNLOAD & UPDATE dan klik download.zip

woowa download page

Setelah di download install plugin tersebut di menu plugins > Add New klik Upload Plugin lalu Browse

Setelah itu active plugin itu di menu installed plugins dengan cara klik active. Oke sekarang plugin sudah berhasil active. selanjutnya kita perlu untuk setting konfigurasi agar dapat kita gunakan.

untuk selanjutnya akan kita setting plugin ini pada step 3. sebelum itu kita bikin dulu form yang akan kita gunakan untuk kirim ke WA.

2. Membuat Form

untuk membuat form dapat dilakukan dengan berbagai macam cara. Diantaranya dengan memakai plugin Contact Form 7 (CF7), elementor atau caldera Form dan lain nya. Kita coba dengan CF7. pertama install lewat plugins > add new . Search plugin Contact Form 7 lalu install dan activate.

contact form 7 install plugin

lalu klik menu Contact > add new dan buat form sesukamu.

PENTING!! jangan lupa tambahkan field no telp atau semisalnya agar di kirim ke nomor tujuan dan tombol submit tentunya. Kalau sudah klik save maka akan muncul shortcode. Contoh nya seperti ini
[contacts-form-7 id="296" title="Test Send WA via Woowa" html_id="contact-form-1234"] lalu copas. o iya saya tambahkan html_id="contact-form-1234" (khusus cf7) agar form nya ada id nya. karena id ini wajib ada untuk deteksi di plugin woowa. Bagi yang memakai selain cf 7 silahkan disesuaikan.

paste shortcode tadi di page. Klik pages > Add New lalu paste di textarea dan kasih judul form. Jika sudah maka save.

Lalu untuk lihat hasil nya klik View Page . Berikut contoh form yang berhasil dibuat dengan url yang terbentuk adalah http://qodrbee.com/online/test-form-send-wa-via-woowa/. Url ini akan kita pakai ketika setting nanti.

Oke form sudah jadi maka kita lanjutkan agar form ini terintegrasi dengan woowa, sehingga ketika di submit pesan akan terkirim ke Whatsapp.

3.Setting Plugin

Setelah mendapat license dari woo-wa.com masuk ke dashboard my.woo-wa.com untuk link WA Anda ke woo-wa sehingga terkoneksi. Setelah berhasil login di dashboard my.woo-wa.com klik add domain untuk menambah domain anda dan kli link WA untuk mengkoneksikan WA anda dengan woowa.

ketika link akan muncul popup untuk scan qr code, tunggu sampai qr code ter-load. setelah itu scan qr code menggunakan hp Anda yg terinstall whatsapp. klik pojok kanan atas pada aplikasi whatsapp pilih web whatsapp. jika masih bingung lihat video yg ada di samping qrcode pada popup.

Jika sudah scan qr code pastikan bahwa status link WA anda authenticated caranya klik more pilih check dan tunggu sampai statusnya keluar.

ada juga fungsi lain di pilihan more yg bisa anda coba-coba. seperti screnshot untuk melihat layar status WA Anda. Oke selanjutnya setting pada plugin woowa pada wordpress.

Pertama pastikan plugin woowa sudah terinstall. Jika belum lihat step 1
lalu klik menu Woowa Premium > woocommerce klik tab license lalu masukan license yang di dapat dari woo-wa.com

setelah activated license maka anda bisa menggunakan plugin ini. Untuk keperluan send form to WA pilih menu Custom Form lalu klik Add Custom Form masukan judul/ title form nya, terserah saja. Lalu klik Add Form, akan muncul accordion template form, pada sebelah kanan switch on untuk mengaktifkan template.

selanjutnya masukan url form yang tadi (step 2) sudah kita bikin. Url tadi misalnya http://qodrbee.com/online/test-form-send-wa-via-woowa/ lalu klik scan

setelah scan form by url akan di dapat data-data field name dan id. Masukkan form id dan phone number field seperti gambar. Anda juga bisa menyusun kalimat yang dirangkai dengan memakai field yang tersedia. Jika sudah klik save.

4. Submit Form

buka form dan isi field nya lalu submit

Setelah di submit cek WA seharusnya ada yang masuk seperti ini

selamat anda telah berhasil mengirim pesan dari form ke Whatsapp secara instan.

5. Ringkasan

untuk mengirim WA ini diperlukan

  • form yang ada id, field no telp dan tombol submit
  • form dapat dibuat dengan apa saja yang penting syarat di atas terpenuhi
  • form tidak di generate oleh ajax/javascript tp murni html css
  • scan url form dengan plugin woowa untuk mendapatkan id dan name field
  • buat template sesuai kebutuhan dan isi form id dan field name no hp
  • pastikan whatsapp Anda sudah terkoneksi dengan woowa.com

 

6. Demo

Demo : http://qodrbee.com/online/test-form-send-wa-via-woowa/

7. Konsultasi

Feel free to ask me at ztoro.code@gmail.com
or WA 08975835238
or Telegram @ztorocode

DevOps Expert | Haproxy – High Performance Load Balancer Server

haproxy load balancer server

Kapan Anda harus menggunakan Haproxy?

Ketika ribuan pengguna mengakses situs atau aplikasi web ataupun sejenisnya pada waktu bersamaan, sehingga trafic yang tinggi yang membuat server anda overload (down) karena tidak dapat menampung request yang diterima, maka haproxy dapat menjadi solusi bagi anda.

Bayangkan kalo anda cuma punya 1 server yang dipakai untuk menangani semua request yg sudah terlanjut buanyaaak bgt… disisi lain spec server sudah mentok g bisa di upgrade lagi. sudah tidak memungkinkan untuk vertical scaling. maka sudah saat nya untuk melakukan horisontal scaling. yap… dengan Haproxy kita dapat membuat horisontal scaling untuk menghajar mengatasi trafic yang tinggi.

Teknik ini dikenal dengan load balancing. Jadi load balancing adalah teknik untuk melakukan distribusi beban trafik pada dua atau lebih jalur koneksi secara seimbang sehingga setiap jalur koneksi akan menerima beban trafik yang sama. yap begitulah cara kerja load balancing.

Apa itu Haproxy?

HAProxy adalah project open source dibawah GPLv2 license. Haproxy atau kepanjangan dari High Availability Proxy adalah loadbalancer TCP/IP dan proxy server yang dapat membagi beban request yang datang kepada multi node server. sehingga beban server akan dibagi kepada node server yang ada.

Pembagian beban nya pun bermacam-macam cara ada yang sama rata, ada yang berdasarkan beban trafic dan lain nya. akan kita pelajari algoritma pembagian beban request  ini selanjutnya. Jadi haproxy ini adalah perantara antara client/user dengan server (web/database/dll) sehingga disebut juga dengan haproxy reverse proxy.

Haproxy tidak hanya bisa untuk web load balancing namun juga yang lain seperti smtp load balancing atau mysql load balancing.

Bagaimana cara kerja Haproxy?

Load balance pada web server dapat dilakukan dengan 2 macam yaitu pada Layer 4 (transport layer) dan Layer 7 (application layer). Layer 4 lebih sederhana karena pembagian hanya berdasarkan range IP dan port. Pada layer 7 pembagian lebih kompleks sampai pembagian trafic berdasarkan url tertentu, dsb.

User akan mengirimkan request kepada load balancer (haproxy) kemudian diteruskan (forward) ke node (web server) lain. Teknik load balancing yang sering digunakan adalah roundrobin dan least connection. RoundRobin adalah cara yang menganggap bahwa semua beban server sama, jadi setiap server yang ada di akses secara bergantian dan berurutan, sedangkan Least Connection hanya mengalihkan beban ke server yang dianggap kosong atau trafficnya rendah.

di dalam haproxy terdapat 2 bagian (side) yakni frontend dan backend. koneksi yang datang dari user akan di terima oleh bagian frontend untuk di olah/filter sesuai rule frontend, jika lolos maka paket di lanjutkan ke backend untuk di oleh/filter sesuai rule backend selanjutnya akan di putuskan untuk kirim ke node tertentu sesuai strategi yang di pakai backend. Jadi frontend hanya mengurusi client/users dan backend mengurusi node server.
haproxy ada 2 mode dalam operasinya yakni HTTP close mode dan HTTP keep-alive mode.

Mengapa harus Haproxy?

Sebenarnya untuk melakukan load balancing trafic pada server ada beberapa alternative lain seperti Nginx, LVS / IPVS, varnish, dll. Namun haproxy memang khusus dibuat untuk keperluan ini, mature, reliable dan high performance. Disamping dia mempunyai fitur-fitur pendukung lain tentunya.

Haproxy hanya menggunakan 15% dari processing time penggunaan CPU dengan HTTP close mode dan sekitar 30% jika menggunakan HTTP keep-alive mode. Itu artinya secara global haproxy mempunyai impact yang besar dalam performa namun kecil dalam penggunaan resource.

Dengan load balancing maka yang akan menerima request tidak hanya 1 server, sehingga mempercepat waktu response sebuah web. 1 web server dapat menerima banyak request, sedangkan 1 server biasanya kita memiliki 1 web server, bayangkan saja jika kita mempunyai 3 dan masing – masing server mempunyai 1 web server maka waktu response sebuah web akan meningkat 3 kali lipat. Kesimpulan nya dengan haproxy dapat mempercepat waktu reponse sebuah web (fast response).

Karena adanya server yang lebih dari 1, hal ini memungkinkan ketika salah 1 server mati request tetap dapat di layani dengan server lain. jadi lebih reliable.

Ada beberapa variasi dalam penggunaannya haproxy diantaranya ada yang berfokus pada bandwidth, atau berdasarkan request rate, atau koneksi yang konkuren, atau pada kinerja SSL. Fitur-fitur yang ada disediakan untuk membantu tugas haproxy dalam mengendalikan trafic. Contohnya nanti akan kita bahas dalam haproxy configuration.

Fitur Basic

Proxying : menjembatani koneksi dari client dan server.
SSL : haproxy ssl support secure sockets layer (https)
Monitoring : termonitor secara terus menerus dan tercatat
High availibility : walaupun 1 atau beberapa web server mati masih tetap terkoneksi
Load balancing : beban trafik yang terbagi sama rata atau sama rasa
Stickiness : aliran data/paket yang melekat pada aturan/rule yang di setting
Sampling and converting information : pengelompokan dan rekap data dari paket yang lewat
Map : membuat simple rule untuk setting frontend dan backend
ACLs dan Conditions : haproxy acl mengatur trafic dengan rule dan condition
Stick-tables
Formatted strings
HTTP rewriting and redirection
Server protection
Logging : terdapat haproxy log file untuk maintenance
Statistics : data statistic untuk monitoring trafic

Fitur Advance

Management
System-specific capabilities
Scripting : HAProxy support Lua embedded language

Persiapan Installasi dan Konfigurasi

Kali ini kita akan gunakan 3 server  VPS dengan OS terinstall ubuntu 18.04
1 server sebagai load balancer dengan haproxy
2 server sebagai web server dengan nginx

server haproxy kita beri nama haproxy.qodrbee.com
web server kita beri nama web1.qodrbee.com dan web2.qodrbee.com
berikut konfigurasinya :

haproxy.qodrbee.com

ip public : 10.20.30.40 open port 80 # terhubung ke internet/user
ip private : 192.168.1.1/24 #terhubung dengan private web server

web1.qodrbee.com

ip private : 192.168.1.2/24 #terhubung dengan haproxy.qodrbee.com

web2.qodrbee.com

ip private : 192.168.1.3/24 #terhubung dengan haproxy.qodrbee.com

persiapan haproxy load balancer server

okey itu tadi adalah persiapan kita (persiapan mental dan kesabaran :v) sebelum memulai instalasi dan konfigurasi haproxy.
Selanjutnya kita coffe break dulu agar kembali fresh dan fokus. 10menit…
10.. 9.. 8.. 7.. 6.. 5.. 4.. 3.. 2.. 1..
oke break habis kita lanjutkan tahap instalasi dan konfigurasi.

kalau sudah sampai sini anda wajib share tulisan ini.
agar (banyak pengunjung di web saya) manfaatnya lebih tersebar ke yang lain.

tanpa basa bali klik disini untuk menuju babak baru dalam haproxy.
HAProxy installation and configuration
jeng jeng jeng…..

Referensi :

[Free Ebook] Artificial Intelligence with Python – Prateek Joshi

 

Artificial Intelligence with Python

Artificial Intelligence with Python

Free ebook Artificial Intelligence with Python ebook
Prateek Joshi – Jan 2017

446 pages

What will you learn

  • Step into the amazing world of intelligent apps using this comprehensive guide
  • Enter the world of Artificial Intelligence, explore it, and create your own applications
  • Work through simple yet insightful examples that will get you up and running with Artificial Intelligence in no time

Read free subscribe trial here

read more article about technology here