GNU/Linux >> Belajar Linux >  >> Linux

Load balancing dengan HAProxy, Nginx dan Keepalive di Linux

Memiliki pengaturan penyeimbang beban yang tepat memungkinkan server web Anda menangani lalu lintas tinggi dengan lancar alih-alih mogok.

Apa itu penyeimbangan beban?

Load balancing adalah proses mendistribusikan beban kerja ke beberapa server. Ini seperti membagi beban kerja antara pekerja shift siang dan shift malam di sebuah perusahaan. Penyeimbangan beban meningkatkan keandalan server karena mengatasi kegagalan titik tunggal.

Contoh tampilan server tanpa load balancing ditunjukkan di bawah ini.

Dalam contoh ini, jika server web mati, permintaan web pengguna tidak dapat diakses secara real time. Juga jika sejumlah pengguna meminta halaman web yang sama secara bersamaan, maka melayani permintaan web pengguna oleh satu server web bisa menjadi proses yang lambat. Oleh karena itu, penyeimbang beban digunakan untuk meningkatkan kinerja server, menyediakan cadangan, dan mencegah kegagalan.

Dalam tutorial ini, kita akan menyiapkan load balancer untuk server web menggunakan Nginx, HAProxy, dan Keepalive.

Contoh tampilan server dengan penyeimbang beban ditunjukkan di bawah ini.

Jadi, apa itu Nginx, Haproxy, dan Keepalive?

Nginx

Nginx, diucapkan sebagai Engine-x adalah server Web sumber terbuka. Lebih dari sekadar server Web, ia dapat beroperasi sebagai server proxy terbalik, server proxy surat, penyeimbang beban, server file ringan, dan cache HTTP. Nginx telah digunakan di banyak situs populer seperti BitBucket, WordPress, Pinterest, Quora, dan GoDaddy.

HAProxy

HAProxy adalah singkatan dari High Availability Proxy. Ini adalah penyeimbang beban sumber terbuka yang menyediakan penyeimbangan beban, ketersediaan tinggi, dan solusi proxy untuk aplikasi berbasis TCP dan HTTP. Ini paling cocok untuk mendistribusikan beban kerja di beberapa server untuk peningkatan kinerja dan keandalan server.

Fungsi Haproxy adalah meneruskan permintaan web dari pengguna akhir ke salah satu server web yang tersedia. Itu dapat menggunakan berbagai algoritme penyeimbangan beban seperti Round Robin, Least Connections, dll.

Teruskan

Bagaimana jika penyeimbang beban HAProxy turun?

Keepalive adalah program sumber terbuka yang mendukung penyeimbangan beban dan ketersediaan tinggi. Ini pada dasarnya adalah perangkat lunak perutean dan menyediakan dua jenis penyeimbangan beban:

  • Lapisan 4 (lapisan transport)
  • Lapisan 7 (lapisan aplikasi)

Keepalived dapat melakukan fungsi berikut:

  • Pemeriksaan kesehatan ( apakah server aktif atau tidak)
  • Mengimplementasikan VRRP (protokol perutean redundansi virtual) untuk menangani kegagalan keseimbangan beban

Keepalive menggunakan VIP (Alamat IP Virtual) sebagai IP mengambang yang mengapung di antara penyeimbang beban Master dan penyeimbang beban Cadangan dan digunakan untuk beralih di antara keduanya. Jika penyeimbang beban Master turun, penyeimbang beban cadangan digunakan untuk meneruskan permintaan web.

Mari beralih ke simulasi tentang bagaimana ketersediaan tinggi dan keseimbangan beban dipertahankan untuk server web.

Menyiapkan penyeimbang beban di Linux dengan Nginx, HAProxy, dan Keepalive

Ini adalah eksperimen lab uji yang berarti ini hanya penyiapan pengujian untuk membantu Anda memulai. Anda mungkin harus melakukan beberapa penyesuaian jika Anda menerapkannya di server nyata. Gunakan tutorial ini sebagai bahan pembelajaran alih-alih mengikutinya secara membabi buta untuk pengaturan Anda sendiri.

Saya telah menggunakan distribusi CentOS Linux dalam tutorial ini. Anda dapat menggunakan distro Linux lain, tetapi saya tidak dapat menjamin apakah semua perintah (terutama yang penginstalan) akan berfungsi di distro lain.

Persyaratan untuk penyiapan penyeimbang beban

Sistem yang diinstal 4 CentOS (instalasi minimal sudah cukup untuk tutorial ini)

  • 2 CentOS akan disiapkan dengan nginx
  • 2 CentOS akan disiapkan dengan HAProxy dan Keepalive

Dalam tutorial ini, kami telah mengerjakan alamat IP berikut sebagai contoh. Ini dapat diubah sesuai sistem Anda. Jangan mengira ini adalah IP statis.

Server web:

  • 10.13.211.169
  • 10.13.211.158

LoadBalancer:

  • 10.13.211.194
  • 10.13.211.120

IP Virtual:

  • 10.13.211.10

Anda dapat dengan mudah mendapatkan alamat IP di baris perintah Linux.

Langkah 1:Siapkan server web dengan Nginx

Di bagian ini, kami akan menggunakan dua sistem CentOS sebagai server web. Kita perlu menginstal Nginx terlebih dahulu.

Untuk itu, tambahkan repositori yang berisi nginx lalu instal dari sana:

yum install epel-release
yum install nginx

Setelah menginstal nginx, mulai layanan Nginx:

systemctl start nginx

Jadikan layanan nginx diaktifkan bahkan setelah setiap boot:

systemctl enable nginx

Periksa status layanan nginx:

systemctl status nginx

Izinkan lalu lintas web di nginx yang secara default diblokir oleh firewall CentOS.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd –reload 

Ulangi langkah di atas pada server web CentOS kedua juga.

Sekarang perhatikan langkah selanjutnya.

File web untuk nginx terletak di /usr/share/nginx/html Ubah konten file index.html hanya untuk mengidentifikasi server web.

Untuk server web pertama:

echo “this is first webserver” > /usr/share/nginx/html/index.html

Untuk server web kedua:

echo “this is second webserver” > /usr/share/nginx/html/index.html

CATATAN:Jika Anda menggunakan mesin virtual, lebih baik menginstal dan mengkonfigurasi Nginx pada satu sistem dan kemudian mengkloning sistem. Setelah itu, Anda dapat mengkonfigurasi ulang pada sistem kedua. Menghemat waktu dan kesalahan.

Sekarang konfirmasikan status server web dengan membuka URL berikut di browser Anda:http://SERVER_DOMAIN_NAME atau Local_IP_Address. Contoh di sini:

http://10.13.211.169

Atau di terminal, curl Local_IP_Address. Contoh di sini:

curl 10.13.211.169

Anda akan mendapatkan output seperti:

Langkah 2:Siapkan penyeimbang beban dengan HAProxy

Di dua sistem lainnya, gunakan perintah berikut untuk menginstal HAProxy:

yum -y update
yum -y install haproxy

File konfigurasi HAProxy terletak di /etc/haproxy. Gunakan perintah cd untuk membuka direktori dan membuat cadangan file sebelum mengedit.

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg_bac

Buat file haproxy.cfg baru dan buka file dengan editor apa pun yang Anda suka.

touch haproxy.cfg
vim haproxy.cfg

Sekarang, rekatkan baris berikut ke dalam file:

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

#frontend
#---------------------------------
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back

#round robin balancing backend http
#-----------------------------------
backend http_back
balance roundrobin
#balance leastconn
mode http
server webserver1 10.13.211.169:80 check    # ip_address_of_1st_centos_webserver
server webserver2 10.13.211.158:80 check    # ip_address_of_2nd_centos_webserver

Sekarang, aktifkan dan mulai layanan HAProxy.

systemctl enable haproxy
systemctl start haproxy

Periksa status HAProxy:

systemctl status haproxy

Buka url di browser Anda untuk mengonfirmasi layanan haproxy:http://load balancer's IP Address/haproxy?stats. Contoh yang digunakan di sini:

http://10.13.211.194/haproxy?stats

atau di terminal, gunakan perintah $ curl  LoadBalancer_IP_Address

curl 10.13.211.194
curl 10.13.211.194

curl dua kali dan Anda akan melihat output yang berbeda untuk perintah curl. Ini karena respons datang dari server web yang berbeda (satu per satu), untuk permintaan Anda di penyeimbang beban.

Outputnya akan terlihat seperti ini:

Langkah 3:Siapkan ketersediaan tinggi dengan Keepalive

Keepalive harus diinstal ke kedua sistem CentOS penyeimbang beban HAProxy (yang baru saja kita konfigurasikan di atas). Satu bertindak sebagai master (penyeimbang beban utama) dan yang lain bertindak sebagai penyeimbang beban cadangan.

Pada kedua sistem, jalankan perintah berikut:

yum install -y keepalived

File konfigurasi Keepalive terletak di /etc/keepalived/keepalived.conf . Cadangkan file keepalived.conf asli dan gunakan konfigurasi berikut pada file .conf keepalived baru.

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac
touch /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

Rekatkan baris berikut ke file konfigurasi (jangan lupa untuk mengubah alamat email):

global_defs {
notification_email {
linuxhandbook.com
[email protected]
}
notification_email_from [email protected]
smtp_server 10.13.211.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state MASTER
interface eth0 #put your interface name here. [to see interface name: $ ip a ]
virtual_router_id 51
priority 101 # 101 for master. 100 for backup. [priority of master> priority of backup]
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #password
}
virtual_ipaddress {
10.13.211.10 # use the virtual ip address. 
}
}

Catatan:IP virtual dapat berupa IP langsung apa pun di dalam jaringan Anda. Dekat tentang kisaran Alamat IP Loadbalancer. Di sini, IP penyeimbang beban adalah:10.13.211.194 &10.13.211.120, dan VIP adalah 10.13.211.10

Edit file konfigurasi sesuai asumsi sistem. Berhati-hatilah pada konfigurasi master dan cadangan. Simpan file dan mulai serta aktifkan proses Keepalive:

systemctl start keepalived
systemctl enable keepalived

Untuk melihat status Keepalive:

systemctl status keepalived

Catatan:Jika Anda menggunakan mesin virtual, lebih baik untuk menginstal dan mengkonfigurasi Haproxy dan Keepalive pada satu sistem dan kemudian mengkloning sistem. Setelah itu, Anda dapat mengkonfigurasi ulang pada sistem kedua. Menghemat waktu dan kesalahan.

Sekarang untuk memeriksa status penyeimbang beban ketersediaan tinggi Anda, buka terminal dan tekan:

$ while true; do ; curl 10.13.211.10 ; sleep 1; done;

Tekanctrl+c untuk menghentikan pengoperasian terminal.

Outputnya akan terlihat seperti ini:

Jika Anda merasa tidak nyaman dalam menginstal dan mengonfigurasi file, unduh skrip dari repositori GitHub saya dan jalankan saja.

Saya harap tutorial ini membantu Anda mengatur penyeimbang beban di Linux dengan ketersediaan tinggi. Tentu saja, ini adalah penyiapan yang sederhana tetapi pasti memberikan gambaran tentang penyeimbangan muatan dan penanganan ketersediaan tinggi.

Jika Anda memiliki pertanyaan atau saran, silakan tinggalkan komentar di bawah.

Penulis :Rishi Raj Gautam adalah pecinta Linux dan aktivis open-source.


Linux
  1. Cara Menginstal Server Web Nginx di Linux

  2. Menyeimbangkan keamanan Linux dengan kegunaan

  3. Penyeimbangan beban Nginx

  1. Edit teks di Linux dengan KWrite dan Kate

  2. Menyesuaikan terminal Linux saya dengan tmux dan Git

  3. Mengelola proses di Linux dengan kill dan killall

  1. Menggunakan HAProxy untuk Load Balancing di E2E Cloud:Sesi Kelengketan Dan Keamanan

  2. Cara Memperkuat dan Mengamankan Server Web NGINX di Linux

  3. Cara Mengatur NGINX yang Sangat Tersedia dengan KeepAlived di Linux