Instalasi & Optimizing Squid di CentOS

Instalasi & Optimizing Squid di CentOS

Mungkin udah banyak tutorial yang membuat dan mengoptimalkan Squid, namun ini saya buat hanya untuk mengingatkan apa yang telah saya lakukan, dan mungkin berguna bagi anda yang kebetulan melihat Blog saya ini.

Squid adalah Proxy Server. Namun dalam prakteknya, disamping berfungsi sebagai Proxy Server, Squid lebih diprioritaskan sebagai WebCache. WebCache ini sangat berguna untuk mempercepat proses loading page.

Squid saya install di PC dengan spesifikasi

Processor AMD Athlon 3200
Memory 1GB
HDD SATA-II 250GB
Operating System “CentOS 5.3″

Pada tulisan ini, saya menggunakan Squid 3.0 Stable 14 yang dapat didownload di Squid Official Website

Tahap penginstallannya adalah sebagai berikut :

  1. Upgrading Kernel menggunakan CentOS-Plus
  2. Install Package ReiserFS
  3. Format Partisi menggunakan ReiserFS
  4. Konfigurasi fstab
  5. Restart OS
  6. Meng Kompile Squid
  7. Meng Konfigurasi squid.conf
  8. Membuat Squid Cache Direktory dan Menjalankannya
  9. Tweaking Squid
  10. Setting Auto Running squid untuk setiap PC booting

Upgrading Kernel dengan CentosPlus

Untuk meng upgrade kernel dengan CentosPlus, dapat melakukan perintah

yum –enablerepo=centosplus install kernel

Instalasi Package ReiserFS

Untuk menginstall package reiserfs, dapat melakukan perintah

yum –enablerepo=centosplus install reiserfs-utils

Format Partisi menggunakan ReiserFS

Diawal instalasi CentOS, kita harus mempersiapkan partisi khusus untuk menyimpan WebCache, ada pun partisi tersebut dapat dilihat dengan melakukan perintah

[root@gateway /]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2             35939796   2851300  31233392   9% /
/dev/sda1               194442     16397    168006   9% /boot
tmpfs                   484544         0    484544   0% /dev/shm
/dev/sda7             51197536    351676  50845860   1% /cache1
/dev/sda6             51197536    352248  50845288   1% /cache2
/dev/sda5             51197536    352100  50845436   1% /cache3
/dev/sda3             51197536    353808  50843728   1% /cache4
[root@gateway /]#

Pada contoh diatas, partisi untuk cache terdiri dari 4 yaitu :

sda7 — Cache1
sda6 — Cache2
sda5 — Cache3
sda3 — Cache4

Langkah berikutnya adalah mem format partisi tersebut menjadi ReiserFS dengan melakukan perintah

mkreiserfs /dev/sdx

*/ dimana sdxx adalah angka pada partition layout


Konfigurasi fstab

Setelah proses formating partisi telah dilakukan, selanjutnya kita memasukkan dalam daftar partition load di fstab dengan melakukan perintah

pico /etc/fstab

/dev/sda7                         /cache1                 reiserfs noatime,notail 1 2
/dev/sda6                         /cache2                 reiserfs noatime,notail 1 2
/dev/sda5                         /cache3                 reiserfs noatime,notail 1 2
/dev/sda3                         /cache4                 reiserfs noatime,notail 1 2

setelah selesai kita lakukan proses rebooting dengan melakukan perintah

shutdown -r now

Meng Kompile Squid

Langkah pertama kita dapat mendownload squid source di Squid Official Website

wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE14.tar.gz

Kemudian kita lakukan proses extracting package dengan melakukan perintah

tar -zxvf squid-3.0.STABLE14.tar.gz

Kemudian masuk ke direktori squid

cd squid-3.0.STABLE14

Untuk melakukan compiling, pastikan gcc atau g++ sudah terinstall.. apabila belum, bisa melakukan instalasi dengan perintah

yum groupinstall “Development Tools”

Setelah itu, baru kita bisa melakukan compiling squid dengan perintah

./configure \
-prefix=/usr \
-enable-async-io \
-enable-useragent-log \
-enable-snmp \
-enable-cache-digests \
-enable-follow-x-forwarded-for \
-enable-storeio="aufs" \
-enable-removal-policies="heap,lru" \
-with-maxfd=16384 \
-enable-delay-pools \
-enable-poll \
-disable-ident-lookups \
-enable-truncate \
-exec-prefix=/usr \
-bindir=/usr/sbin \
-libexecdir=/usr/lib/squid

Notes :

-enable-async-io: opsi ini untuk mengaktifkan asynchronous I/O – sangat penting untuk menghentikan squik melakukan blocking pada baca/tulis ke harddisk.

-enable-useragent-log berguna agar squid mencatat useragent di entri log – berguna jika anda menggunakan lynx untuk melakukan debug kecepatan squid.

-enable-snmp aktifkan ini jika anda ingin menampilkan statistik squid dalam bentuk grafik.

-enable-cache-digests harus diaktifkan jika anda menggunakan cache peer.

-enable-storeio=”aufs” adalah alernatif penyimanan metode I/O. AUFS adalah Asynchronous, memiliki performa yang signifikan ketimbang UFS atau diskd.

-enable-removal-policies=”heap,lru” adalah pilihan opsi untuk removal policies, dan saya memilih menggunakan “heap LFUDA”, atau anda juga bisa menggunakan “LRU”.

-with-maxfd=16384 digunakan agar squid tidak terblokir apabila dalam keadaan load tinggi.

-enable-poll untuk meningkatkan performa squid.

-disable-ident-lookups menghentikan squid dari melihat ident di setiap koneksi, bisa juga untuk mencegah serangan DOS yang dapat mematikan squid server, yang biasanya dengan cara membuka ribuan koneksi.

-enable-truncate memerintahkan squid untuk selalu menggunakan truncate() ketimbang unlink() ketika menghapus file cache.

-enable-delay-pools jika anda ingin mengatur bandwidth koneksi, gunakan opsi ini.

Setelah selesai dengan command ./configure diatas, selanjutnya ketikkan perintah

make

make install

Setelah proses Compiling, lakukan perintah ini

strip /usr/sbin/squid /usr/lib/squid/*

Notes :

perintah ini untuk menghapus simbol pada binari squid, agar ukurannya menjadi lebih kecil. Perintah ini bersifat opsional.

Meng Konfigurasi squid.conf

Point penting dalam melakukan konfigurasi squid.conf adalah pada

cache_replacement_policy heap LFUDA
cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 50 KB
cache_dir aufs /var/spool/squid 10000 16 256
cache_mem 64 MB
logfile_rotate 10
memory_pools off
maximum_object_size 50 MB
quick_abort_min 0 KB
quick_abort_max 0 KB
log_icp_queries off
client_db off
buffered_logs on
half_closed_clients off

Notes :

cache_replacement_policy heap LFUDA ini adalah pilihan replacement policy, dimana saya menggunakan heal LFUDA. Anda bisa menggunakan pilihan lain, info lengkap perihal cache_replacement_policy, silahkan baca disini.

cache_swap_low 90 adalah prosentase dimana squid akan melakukan pembersihan cache, jadi jika anda memiliki 10 GB , maka squid akan melakukan pembersihan cache lama pada penggunaan 9 GB.

cache_swap_high 95 secara agresif squid akan menghapus file cache lama dengan menggunakan opsi replacement policy yang disebutkan diatas.

maximum_object_size_in_memory 50 KB Ini untuk menentukan besaran file yang akan disimpan di memori. Pada konfigurasi ini saya mengaturnya maksimum hanya 50 KB, ini agar tidak mengganggu memori. Penyimpanan file yang besar di memori akan memberikan beban tinggi sehingga mmeori tidak bisa dikontrol dengan baik.

cache_dir aufs /var/spool/squid 10000 16 256 Dianjurkan untuk tidak mengubah opsi AUFS, karena opis ini memiliki performa yang lebih bagus dari opsi lain. Angka 10000 adalah jumlah besarnya file cache yang digunakan squid dalam MB.

cache_mem 64 MB Jangan mengatur cache_mem terlalu besar. Cache_mem menunjukkan jumlah maksimal RAM yang digunakan oleh squid untuk menyimpan obyek di memori. Ingat, squid membutuhkan RAM sekitar 100 MB per 1 GB file cache. Jadi, jika anda memiliki 10 GB file cache, maka squid membutuhkan RAM minimal 1 GB.

memory_pools off Menghentikan squid menempel di memori ketika tidak ada aktifitas.

maximum_object_size 50 MB ini adalah jumlah maksimum obyek yang akan disimpan oleh squid. Dianjurkan untuk tidak mengaturnya terlalu besar.

quick_abort_min 0 KB opsi ini sangat berguna, tetapi dalam kasus tertentu akan membuat squid tidak optimal. Quick_abort_time akan mengevaluasi berapa banyak sisa data yang akan ditransfer jika klien membatalkannya. Jika nilainya berada dalam range quick_abort, maka quid akan melanjutkan download sampai selesai dan kemudian menyimpannya di cache. Memang terdengar bagus, namun masalah akan muncul jika klien melakukan beberapa koneksi, maka squid akan menyelesaikan proses download untuk semua koneksi, dan akibatnya squid menjadi lambat. Dengan mengaturnya ke angka 0, maka squid akan menonaktifkan opsi ini.

quick_abort_max 0 KB fungsi sama dengan quick_abort_min

log_icp_queries off jika anda menggunakan cache_peer, maka opsi ini akan menghentikan squid untuk selalu melakukan query ke masing-masing cache_peer.

client_db off jika diaktifkan maka squid akan menyimpan statistik semua klien, hal ini bisa membebani mmeori, maka sebaiknya dinonaktifkan.

buffered_logs on melakukan buffering pada penulisan file log, dapat meingkatkan performa squid.

half_closed_clients off mengirimkan connection-close ke klien sehingga membuka setengah koneksi untuk squid.

Membuat Squid Cache Direktory dan Menjalankannya

Setelah selesai dengan konfigurasi squid.conf, langkah selanjutnya adalah membuat squid direktory dengan perintah

squid -z

Pastikan tidak ada ERROR waktu menjalankan proses pembuatan direktory.

Setelah itu kita dapat menjalankan squid dengan perintah

squid start

Untuk mengetahui squid berjalan dengan baik, kita dapat melakukan perintah

netstat -pln | grep squid

dan hasilnya seperti berikut

tcp        0      0 0.0.0.0:12000               0.0.0.0:*                   LISTEN      12627/(squid)
udp        0      0 0.0.0.0:3130                0.0.0.0:*                               12627/(squid)
udp        0      0 0.0.0.0:10313               0.0.0.0:*                               12627/(squid)

Tweaking Squid

Tweaking ini terletak pada TCP. Untuk melakukan tweaking ini, kita dapat melakukan modifikasih pada files /etc/sysctl.conf, dengan menambahkan command berikut

fs.file-max = 65535
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
net.ipv4.tcp_mem = 4096 4096 4096
net.ipv4.tcp_low_latency = 1
net.core.netdev_max_backlog = 4000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 16384

Setelah itu, tambahkan command berikut di /etc/security/limits.conf

* - nofile 65535

Setting Auto Running squid untuk setiap PC booting

Agar Proses Squid berjalan ketika kita melakukan proses Rebooting OS, maka kita dapat menambahkan command berikut di /etc/rc.local dengan perintah berikut

pico /etc/rc.local

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
squid start

Setelah semuanya selesai, kita lakukan rebooting OS sekali lagi, dan squid siap disajikan

Leave a Reply