IGOS Nusantara dan proxy server squid kompilasi

Dari IGNwiki
Revisi per 26 Januari 2011 11.00 oleh Ns (bicara | kontrib)

Langsung ke: navigasi, cari

Optimasi squid dapat lebih ditingkatkan dengan melakukan kompilasi dari source squid. Berikut ini kompilasi untuk spesifikasi:

  1. Sistem Operasi memakai IGOS Nusantara 2010
  2. Intel(R) Xeon(TM) CPU 3.00GHz
  3. RAM 1 GB (yup memori masih kecil, harusnya update ke 4 GB)
  4. Harddisk 2 x 80 GB SCSI

Harddisk

  1. Harddisk1: /dev/sda (untuk menyimpan sistem operasi)
  2. Harddisk2: /dev/sdb (untuk menyimpan cache squid)

Instal IGOS Nusantara 2010 untuk Server

Sistem Operasi yang akan dipasang di server sebaiknya TIDAK dipasang dari IGN2010 LiveCD. Versi IGN2010 LiveCD ditujukan untuk penggunaan Desktop. Server sebaiknya dipasang program/aplikasi minimal. Instalasi minimal dapat dilakukan dengan:

  1. Gunakan IGN2010 versi DVD Installer
  2. Booting memakai IGN2010 DVD
  3. Saat awal muncul menu instalasi pilih "Instal IGOS Nusantara Minimal (konsol)" [[1]]

Persiapan

File Descriptors

Saat pengguna mengakses proxy squid, kemudian squid melakukan proses atau penyimpanan cache. Proses memerlukan akses file yang besar. [pf]

Tuning langsung

TCP Tuning—You can increase number of local system ports available by running this command: [

# echo "1024 65000" > /proc/sys/net/ipv4/ip_local_port_range

File Tuning-You can increase the file descriptors by running these commands:

# echo "64000" > /proc/sys/fs/file-max

Modifikasi /etc/sysctl.conf

Tambahkan baris berikut pada akhir file /etc/sysctl.conf

fs.file-max = 64000
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  

Penambahkan entri /etc/security/limits.conf

* - nofile 32768
* soft nofile 32768
* hard nofile 32768
proxy           soft    nofile          32768
proxy           hard    nofile          32768

Modifikasi /etc/profile

# echo "ulimit -n 8192" >> /etc/profile

Tahap kompilasi

Pasang paket untuk kompilasi squid

# yum -y install gcc 
# yum -y install gcc-c++
# yum -y install libxml2-devel libcap-devel

Instal semua dalam satu baris perintah:

# yum -y install gcc gcc-c++ libxml2-devel libcap-devel

Unduh squid-3.1.10.tar.bz2

# mkdir /root/sumber
# cd /root/sumber
# wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.10.tar.bz2

Buat group dan user

Group dan user yang akan dipakai untuk menjalankan squid dibuat dengan cara:

# groupadd _squid
# useradd _squid -c "Squid Proxy" -d /dev/null -s /bin/false -g _squid

Catatan: tanda "_" di depan squid ditambahkan demi alasan keamanan[1].

Opsi Kompilasi

--enable-gnuregex \
--enable-async-io=32 \
--with-aufs-threads=32 \
--with-pthreads \
--with-aio \
--with-dl \
--enable-storeio=aufs \
--enable-removal-policies=heap \
--enable-icmp \
--enable-delay-pools \
--disable-wccp \
--enable-snmp \
--enable-cache-digests \
--enable-default-err-languages=English \
--enable-err-languages=English \
--enable-linux-netfilter \
--disable-ident-lookups \
--disable-hostname-checks \
--enable-underscores

Keterangan parameter

  • --enable-async-io untuk mengaktifkan asynchronous I/O dalam proses baca/tulis ke harddisk. Memakai 16 bila memakai satu harddisk jenis lama (buffer hanya 2 MB). Bila memakai harddisk model baru dengan buffer 8 MB, 16 MB atau 32 MB dapat memakai 32.
  • --enable-useragent-log berguna agar squid mencatat useragent di entri log
  • --enable-snmp aktifkan snmp, misal mencatat statistik squid lalu ditampilkan dalam bentuk grafik.
  • --enable-cache-digests harus diaktifkan jika memakai cache peer.
  • --enable-storeio="aufs" adalah metoda penyimpanan metode I/O. AUFS adalah Asynchronous, memiliki performa yang optimal di Linux.
  • --enable-removal-policies="heap,lru" adalah pilihan opsi untuk removal policies
  • --with-maxfd=8192
  • --enable-poll
  • --disable-ident-lookups menghentikan squid dari melihat ident di setiap koneksi, bisa juga untuk mencegah serangan DDOS (membuka ribuan koneksi) yang dapat mematikan squid server
  • --enable-truncate memerintahkan squid untuk selalu menggunakan truncate() ketimbang unlink() ketika menghapus file cache.
  • --enable-delay-pools

Optimasi Kompilasi

Kompilasi agar optimal perlu memakai opsi atau FLAG yang sesuai dengan prosesor. Informasi tentang prosesor ada di /proc/cpuinfo

# cat /proc/cpuinfo
# cat /proc/cpuinfo | grep family
cpu family	: 15
cpu family	: 15
[root@intra ~]# cat /proc/cpuinfo |grep model
model		: 4
model name	: Intel(R) Xeon(TM) CPU 3.00GHz

Informasi yang diperoleh dari /proc/cpuinfo kemudian disesuaikan dengan Gentoo Wiki[1] tentang flag kompilasi, yaitu diperoleh:

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Memulai Kompilasi

# cd /root/sumber
# tar xjvf squid-3.1.10.tar.bz2
# cd squid-3.1.10
# CHOST="i686-pc-linux-gnu" \
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer" \
CXXFLAGS="${CFLAGS}" \
./configure \
--prefix=/usr \
--includedir=/usr/include \
--datadir=/usr/share \
--bindir=/usr/sbin \
--libexecdir=/usr/lib/squid \
--localstatedir=/var \
--sysconfdir=/etc/squid \
--enable-gnuregex \
--enable-async-io=32 \
--with-maxfd=32768 \
--with-aufs-threads=32 \
--with-pthreads \
--with-aio \
--with-dl \
--enable-storeio=aufs \
--enable-removal-policies=heap \
--enable-icmp \
--enable-delay-pools \
--disable-wccp \
--disable-wccpv2 \
--enable-snmp \
--enable-cache-digests \
--enable-default-err-languages=English \
--enable-err-languages=English \
--enable-linux-netfilter \
--disable-ident-lookups \
--disable-hostname-checks \
--enable-underscores

Selanjutnya ketikkan perintah

# make

Lanjutkan dengan

# make install

Ketik perintah

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

membuat /etc/init.d/squid

Pada bagian awal skrip /etc/init.d/squid harus memakai "ulimit -n 32768"

#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.

set -e
ulimit -n 32768
... lanjutkan ...

cache memakai reiserfs

Pada bagian atas tulisan ini ada informasi tentan harddisk yang dipakai. Harddisk kedua masih kosong dan akan di format memakai reiserfs. Harddisk kedua ada di /dev/sdb1. Hardisk kedua (tempat direktori cache) memakai format ReiserFS.

Pasang reiserfs-utils

# yum -y install reiserfs-utils

Format harddisk kedua

Jika unmount /dev/sdb1 lebih dulu:

# umount /dev/sdb1

Format partisi /dev/sdb1, jika ada data lama isi akan hilang semua. Pastikan TIDAK SALAH ketik

# mkfs.reiserfs /dev/sdb1
mkfs.reiserfs 3.6.21 (2009 www.namesys.com)

A pair of credits:
Jeremy  Fitzhardinge  wrote  the  teahash.c  code  for  V3.  Colin  Plumb  also
contributed to that.

Hans Reiser was the project initiator,  source of all funding for the first 5.5
years. He is the architect and official maintainer.

Guessing about desired format.. Kernel 2.6.35.6-37.ign5.i686.PAE is running.
Format 3.6 with standard journal
Count of blocks on the device: 17921280
Number of blocks consumed by mkreiserfs formatting process: 8758
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: <no libuuid installed>
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
	ALL DATA WILL BE LOST ON '/dev/sdb1'!
Continue (y/n):

Konfirmasi dengan mengetik "y" lalu ENTER

Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
ReiserFS is successfully created on /dev/sdb1.

Konfigurasi squid.conf

max_filedescriptors 32768


Buat swap

Setelah konfigurasi squid.conf dilakukan, kini saatnya menjalankan squid. Ketikkan perintah agar squid membuat swap

# /usr/sbin/squid -z

Jalankan squid

nano /etc/init.d/squid

# tambahkan baris di awal
ulimit -HSn 8192
# /etc/init.d/squid start

atau

# /usr/sbin/squid start

Cek apakah squid sudah berjalan apa belum dengan perintah

# netstat -pln | grep squid

bila muncul tampilan seperti dibawah ini, berarti squid sudah berjalan

tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 4281/(squid)
udp 0 0 0.0.0.0:3130 0.0.0.0:* 4281/(squid)
udp 0 0 0.0.0.0:50113 0.0.0.0:* 4281/(squid)
udp 0 0 0.0.0.0:3401 0.0.0.0:* 4281/(squid)

Modifikasi /etc/fstab

Lakukan modifikasi:

/dev/sdb1    /cache1     reiserfs    defaults,notail,noatime 1 2

Folder /cache1 adalah nama direktori yang akan dipakai untuk menyimpan cache.

Mengatur Log

mkdir /var/log/squid
touch /var/log/squid/access.log
touch /var/run/squid.pid
chown -R _squid:_squid /squid/cache/ 
chown -R _squid:_squid /var/run/pid
chown -R _squid:_squid /var/log/squid/access.log

Boot ulang server

Lakukan reboot, kemudian jalankan squid.

[1] http://forum.linux.or.id/viewtopic.php?f=40&t=20030#p117128 [x] http://www.scribd.com/doc/47172020/Cara-Instal-dan-Optimasi-Squid-Proxy-Server [x] http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel [pf] http://directory.fedoraproject.org/wiki/Performance_Tuning [fd] http://www.cyberciti.biz/faq/squid-proxy-server-running-out-filedescriptors/ http://www.linuxinfo.com.br/squid_tproxy.htm https://wiki.archlinux.org/index.php/Reiser4FShowto