Week 15_High Available and Reliable Systems
Reliability
Overview
R(t) adalah probabilitas bahwa sistem berjalan tanpa failure pada interval [0, t]
Reliability diperlukan pada:
Sistem yang tidak mentoleransi kesalahan (pesawat, heart pace maker) Tidak mungkin dilakukan perbaikan (satelit, pesawat luar angkasa)
Contoh High Reliability
Pesawat:
R(beberapa jam) 0.999 999 9 0.97 Pesawat luar angkasa:
R(beberapa tahun) 0.95
Artinya pesawat luar angkasa dapat berjalan tanpa failure dengan tingkat probabilitas 0.95 dalam interval beberapa tahun
Reliability vs Fault Tolerance
Fault Tolerance adalah sebuah teknik untuk meningkatkan reliability, tapi
Sistem fault tolerant tidak harus memiliki keandalan yang tinggi(high reliability). Contoh lihat slide sebelumnya
Sebuah sistem dapat dirancang untuk menoleransi kesalahan tunggal, namun probabilitas kesalahan tersebut dapat sangat tinggi sehingga menyebabkan reliability sistem sangat rendah.
Sistem yang high reliable tidak harus fault tolerant
Contoh, sistem dibuat dengan komponen yang memiliki kemungkinan gagal sangat kecil (durable) Meskipun begitu, jika komponen gagal maka fungsi tidak berjalan
How fault tolerance helps
Fault tolerant meningkatkan keandalan sistem dengan menjaga agar sistem tetap beroperasi saat terjadi kesalahan perangkat keras atau perangkat lunak
Contoh sebuah sistem dengan redundant prosesor tetap dapat bekerja jika salah satu prosesor fail Apakah sistem fault tolerant lebih reliable daripada sebuah komponen tunggal?
Availability
A(t), probabilitas sistem bekerja dengan benar pada waktu t Tergantung pada,
Seberapa sering sistem mati Berapa lama waktu perbaikan
Arsitektur: Tanpa Load Balancing
Tanpa load balancing, Reliability sistem dibawah ini:
Arsitektur: with Load Balancing
Berapakah reliabilitasnya?
Karena di hitung secara parallel maka tingkat reliablity R semakin mendekat 1.
Yang jadi pertanyaan Apakah cukup?
Arsitektur: High Available Server
System with Load Balancer
HAProxy adalah singkatan dari High Availability Proxy, yaitu perangkat lunak yang berfungsi sebagai penyeimbang traffic untuk aplikasi yang berbasis HTTP atau TCP.
Sistem Haproxy bekerja dengan membagi permintaan atau request yang masuk ke beberapa server backend yang tersedia. Dengan demikian, beban server akan didistribusikan secara merata diantara server-server tersebut.
Salah satu interface jaringan dari ketiga VM dikonfigurasikan pada host-only network
sehingga juga dapat terhubung dengan host mesinnya . Host mesin nanti akan bertindak sebagai klien dari server web.
Konfigurasi HAProxy Server
Kemudian tambahkan konfigurasi blok demi blok ke berkas haproxy.cfg. Bagian pertama adalah konfigurasi Global sebagai berikut:
**
Perintah log menyebutkan server syslog yang pesan lognya akan dikirim.
Perintah maxconn menentukan jumlah koneksi pada front-end. Nilai defaultnya adalah 2000 dan harus disetel sesuai konfigurasi sistem Anda.
Arahan user dan grup mengubah proses HAProxy ke pengguna / grup tertentu. Ini tidak boleh diubah.
Bagian selanjutnya, digunakan konfigurasi default yang ada pada file haproxy.cfg seperti pada Gambar:
Berikut ini penjelasan konfigurasi tersebut:
Global
Log /dev/log loca10
log 127.0.0.1 local1 notice chroot /var/lib/haproxy maxconn 2000
user haproxy group haproxy daemon
Opsi “ timeout connect” adalah waktu tunggu maksimum pembentukan koneksi ke server.
Opsi “timeout” klien dan server adalah batas waktu transaksi (mengirim data atau mengirim ack) Opsi “httplog” adalah untuk menyimpan log transaksi HTTP
Opsi “dontlognull” agar tidak menyimpan log untuk kedatangan paket TCP probes/paket pengecekan(seperti paket icmp)
“Errorfile” merujuk suatu file yang akan di load ketika terjadi kesalahan.
Pada bagian akhir berkas haproxy.cfg berisi konfigurasi untuk konfigurasi frontend dan backend.
Server frontend listen pada port:80. Koneksi dari klien diport 80 akan diarahkan ke server backend. Pada konfigurasi tersebut Back_Servers merupakan identitas klaster web server.
mode http menunjukan bahwa sistem bekerja pada transaksi HTTP selain itu akan ditolak. Hal ini sesuai dengan karakter dari L7 Load Balancer yang melakukan inspeksi paket sampai layer 7.
balance roundrobin menunjukan algoritma penjadwalan yang digunakan.
opsi forwardfor, forward header klien ke servers.
Untuk mengaktifkan halaman statistik dari klaster sistem load balancing. Ditambahkan konfigurasi berikut pada akhir baris file /etc/haproxy/haproxy.cfg.
Dari konfigurasi tersebut menunjukan bahwa halaman statistik dapat diakses melalui protokol http pada port 8080. Untuk mengaksesnya dapat menggunakan uri /stats (http://192.168.56.101 8080/stats) dan menggunakan username serta password yang disebutkan pada baris
stats auth. Versi HAProxy tidak ditunjukkan pada halaman statistik. Nilai halaman statistik diupdate setiap 10 detik.
Implementasi
Topology
The Virtual Router Redundancy Protocol VRRP is a computer networking protocol that provides for automatic assignment of available Internet Protocol IP routers to participating hosts.
frontend labkomputer bind *:80 mode http
default_backend Back_Servers backend Back_Servers
mode http
balance roundrobin option forwardfor
server webserv1.labkomputer.com 192.168.56.102:80 check server webserv2.labkomputer.com 192.168.56.103:80 check
listen stats bind :8080 mode http stats enable stats hide-version stats refresh 10s stats show-node stats auth joko:123456 stats uri /stats
Komponen
NGINX
install:
sudo apt-get install nginx
Keepalived
Keepalived provides frameworks for both load balancing and high availability. The load balancing framework relies on the well-known and widely used Linux Virtual Server IPVS kernel module, which provides Layer 4 load balancing.
routing software written in C
simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures install:
sudo apt-get install keepalived
Konfigurasi
Master
IP Virtual
Berfungsi sebagai interface ke user
Tidak mungkin menampilkan ke kompleksan sistem kepada user secara langsung Mempermudah pengelolaan name server
Slave/Backup
vrrp_instance VI_1 Ini adalah bagian dari konfigurasi yang mendefinisikan instance VRRP dengan nama VI_1. Instance ini akan digunakan untuk mengatur ketersediaan tinggi pada jaringan.
state BACKUP Peran atau status dari instance ini adalah BACKUP, artinya instance ini akan bertindak sebagai backup atau slave.
Instance lainnya (mungkin dengan prioritas lebih tinggi) akan bertindak sebagai MASTER.
interface eth0 Interface yang digunakan oleh slave untuk berkomunikasi dengan jaringan, dalam hal ini, eth0.
virtual_router_id 51 ID unik dari router virtual yang digunakan untuk mengidentifikasi grup VRRP. Semua perangkat dalam grup VRRP yang sama harus memiliki ID yang sama.
! Configuration File for keepalived vrrp_instance VI_1 {
state MASTER # Role
interface eth0 #Interface dari master
virtual_router_id 51 #Id router virtual untk redirection priority 150 #Higher priority untuk master
advert_int 1 #adverstisement interval (1 sec) authentication { #Opsi autentikasi antar server auth_type PASS # Opsi dipilih password
auth_pass $ rahasia #Password rahasia }
virtual_ipaddress { 10.32.75.200 # IP Virtual }
! Configuration File for keepalived vrrp_instance VI_1 {
state BACKUP # Role
interface eth0 #Interface dari slave
virtual_router_id 51 #Id router virtual untk redirection priority 100 #Higher priority untuk slave
advert_int 1 #adverstisement interval (1 sec) authentication { #Opsi autentikasi antar server auth_type PASS # Opsi dipilih password
auth_pass $ rahasia #Password rahasia (harus sama dengan Master) }
virtual_ipaddress { 10.32.75.200 # IP Virtual }
priority 100 Prioritas dari instance VRRP ini. Dalam konfigurasi ini, slave memiliki prioritas 100. Jika terdapat multiple instance, instance dengan prioritas tertinggi akan menjadi MASTER.
advert_int 1 Interval untuk melakukan pengiriman pesan iklan VRRP. Nilai 1 menunjukkan bahwa iklan akan dikirim setiap 1 detik.
authentication: Bagian ini digunakan untuk mengatur opsi autentikasi antara server.
auth_type PASS Tipe autentikasi yang dipilih adalah dengan menggunakan password.
auth_pass $ rahasia: Password autentikasi yang digunakan antara slave dan master. Harus sama dengan konfigurasi pada server MASTER.
virtual_ipaddress: Bagian ini mendefinisikan alamat IP virtual yang akan diambil alih oleh slave jika master mengalami kegagalan. Dalam konfigurasi ini, IP virtual yang digunakan adalah 10.32.75.200.
Konfigurasi ini memungkinkan server slave untuk secara otomatis mengambil alih IP virtual jika server master mengalami kegagalan atau mati.
Hal ini memastikan ketersediaan layanan yang tinggi dalam jaringan.
Autentikasi
Buat authkeys:
` Isi:
sudo nano /etc/ha.d/authkeys
auth 1
1 sha1 password