Instalasi & Optimizing Squid di CentOS
Posted by syscomp on Apr 14, 2010 in BLOG, SLIDE | 0 comments
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 :
- Upgrading Kernel menggunakan CentOS-Plus
- Install Package ReiserFS
- Format Partisi menggunakan ReiserFS
- Konfigurasi fstab
- Restart OS
- Meng Kompile Squid
- Meng Konfigurasi squid.conf
- Membuat Squid Cache Direktory dan Menjalankannya
- Tweaking Squid
- 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
