Dec 03

[Tools] Load Balancing Server dengan Linux Virtual Server

Agar server dapat menangani lebih banyak klien, biasanya kita akan menggunakan banyak server untuk menangani para klien. Ada beberapa metode yang dapat digunakan, seperti Apache mod_proxy_balancer untuk web server atau Nginx Sticky Module. Akan tetapi 2 metode itu memiliki kelemahan, si Load Balancer akan membongkar paket hingga layer aplikasi, kemudian baru meneruskannya ke backend server. Hal ini dilakukan untuk setiap request yang masuk. Selain itu, paket respon dari backend server yang akan menuju ke klien juga masih harus melewati Load Balancer kembali. Sehingga bisa terjadi bottleneck di sisi Load Balancer. Oleh karena itu, di post ini akan dibahas mengenai metode lain untuk load balancing server dengan menggunakan Linux Virtual Server.Pada dasarnya, Linux Virtual Server (LVS) akan membuat sekelompok server bekerja bersama dan hanya memiliki satu IP di sisi klien. Jadi kurang lebih prinsip dasarnya masih sama dengan Apache mod_proxy_balancer dan Nginx Sticky Module, ada load balancer yang bertugas membagi beban, dan backend server yang mengerjakan tugas sesungguhnya. Yang membedakan adalah LVS Load Balancer hanya memroses paket request hingga layer transport dan langsung meneruskannya ke backend server. Paket respon dari backend server ke klien pun tidak selalu melewati kembali LVS Load Balancer, tergantung dari metode pengarahan paket (Redirection method) yang digunakan. Ada 3 metode pengarahan paket pada LVS, yaitu NAT, Tunneling, dan Direct Routing. Selain itu, LVS dapat digunakan tidak hanya untuk web server saja, tapi semua aplikasi server (FTP, Messaging, atau lainnya).

LVS NAT (Network Address Translation)

Metode NAT pada LVS ini kurang lebih yang paling mendekati model dari mod_proxy_balancer dan Sticky module, bedanya hanya pada pembukaan paket pada Load Balancer hanya terjadi hingga layer 4. Load Balancer memiliki sebuah alamat IP yang nanti akan digunakan oleh klien untuk mengakses server-server yang ada. Kemudian jika ada request dari salah seorang klien, maka load balancer akan mengarahkan paket tersebut ke salah satu backend server yang ada, tergantung dari metode load balancing yang digunakan. Lalu ketika backend server ingin mengirimkan balasan, maka balasan itu akan melewati Load Balancer kembali untuk ditranslasi lagi alamat IP pengirim dan penerimanya, baru dilanjutkan ke klien. Gambaran dari metode ini dapat dilihat pada gambar di bawah ini.

Diagram LVS-NAT

Metode ini adalah yang paling mudah diimplementasikan, tetapi berdasarkan riset yang dilakukan oleh seseorang, metode ini hanya sanggup menangani klien dalam jumlah kecil (+/- 20). Sehingga tidak disarankan untuk digunakan pada kepentingan produksi.

LVS Tunneling (LVS TUN)

Metode Tunneling pada LVS sudah berbeda jauh dengan mod_proxy_balancer dan Sticky module. Di metode ini, ketika ada paket request datang, maka Load Balancer akan ‘membungkus’ paket tersebut ke dalam paket yang lain dan meneruskannya ke salah satu backend server. Kemudian backend server yang menerima paket request tadi akan membuka ‘bungkus’nya dan membalasnya. Paket respon dari backend server akan dikirim langsung ke klien tanpa melalui Load Balancer kembali, sehingga beban Load Balancer akan jauh lebih ringan. Gambaran dari metode ini dapat dilihat pada gambar di bawah ini.

Diagram LVS-TUN

Meskipun mampu mengurangi beban Load Balancer, metode ini memiliki kekurangan, yaitu besar paket yang bertambah disebabkan oleh penambahan header untuk ‘pembungkusan’ paket asli. Namun kelebihan lainnya adalah backend server bisa terletak dimanapun, meski di jaringan (subnet) yang berbeda.

LVS Direct Routing (LVS DR)

Untuk mengatasi masalah penambahan ukuran paket, kita dapat menggunakan metode LVS DR ini. LVS DR akan meneruskan paket langsung ke backend server tanpa ada penambahan data apapun pada paket IP. Nantinya, semua backend server dan Load Balancer akan memiliki sebuah alamat IP yang sama, yang digunakan oleh klien untuk mengakses mereka. Mirip seperti LVS TUN, paket request yang datang di Load Balancer akan dikirimkan langsung ke backend server. Backend server pun ketika membalas paket akan mengirimkannya langsung ke klien, tanpa melalui Load Balancer. Gambaran dari metode ini dapat dilihat pada gambar di bawah ini.

Diagram LVS-DR

Metode ini memiliki satu batasan yang harus dipenuhi, Load Balancer dan semua backend server harus berada pada satu subnet yang sama. Selain itu, konfigurasinya agak sedikit rumit, karena harus mematikan ARP Announcement di tiap backend server.

Itulah berbagai metode pengarahan paket pada LVS. LVS sendiri sudah ada pada kernel linux sebagai module sejak versi 2.4. Di website LVS sendiri, software bantuan ipvsadm untuk mengkonfigurasi LVS hanya untuk kernel 2.6 ke bawah. Tetapi program yang sama digunakan pada kernel Linux terbaru (3.9) tetap dapat berjalan dengan baik. Sekian mengenai LVS, bahasan mengenai konfigurasi LVS akan ada di post yang terpisah.

Be Sociable, Share!

0
comments

Reply

[+] kaskus emoticons nartzco