Author Archive

Check Transparent Proxy

Posted by อัทศักดิ์ วงศ์กิตตะ on Monday, September 1st, 2008

คือมี case ที่ต้องทำ transparent proxy ครับ  แต่ว่าเวลา proxy มีปัญหา ผมอยากให้ทำการ ปลด proxy ออกเอง  ผมเลยเขียน shell script  มาเพื่อทำการ ตรวจสอบว่า proxy ทำได้หรือเปล่า ถ้าทำงานได้ ก็จะเพิ่ม iptables  ทำการสร้าง DNAT  ไปยังเครื่อง Proxy ครับ

คลิกที่นี่เพื่อดูส่วนที่เหลือ »

พรบ. การกระทำความผิดเกี่ยวกับคอมพิวเตอร์ - Revert Proxy Log Rotate

Posted by อัทศักดิ์ วงศ์กิตตะ on Sunday, August 24th, 2008

ตามที่ พรบ  ได้กำหนดให้ “ผู้ให้บริการ” เก็บ log การใช้บริการ   โชคดีที่ผมมี Revert Proxy วางไว้หน้า Web Server  ทำให้สามารถเก็บ Log ได้ง่ายหน่อย   ตัว script ที่ผมเขียนนี้ จะทำการ rotate log และ compress log ไว้    ใน version ต่อไป จะทำการ ftp ไปไว้ยัง Log Server  อื่น แทนครับ :)
คลิกที่นี่เพื่อดูส่วนที่เหลือ »

Apache 2.0 - Name Base VHost

Posted by อัทศักดิ์ วงศ์กิตตะ on Tuesday, July 22nd, 2008

พอไปอ่านกระทู้ใน thaibsd.com เลยกะต่อยอดเล็กน้อย หลังจากที่ติดตั้ง “Apache2.0 + PHP5 on FreeBSD” ก็ถึงครามาทำ Name Base Vhost ในรูปแบบของผม พูดถึงเรื่อง Vhosts มันทำได้หลายแบบ แต่ที่เราทำกันบ่อยๆก็ Name Base Host และ IP Base VHost

อะไรคือ “Name Base Vhost” ขอกล่าวถึง HTTP Protocol ละกันครับ เวลาที่ IE, Firefox ในเครื่องเ้้ราซึ่งเค้าเรียกรวมกันว่า Browser เข้าไปเว็บๆหนึ่ง เช่น เข้าไปที่ http://howtoconfig.com/index.php Browser ของเราก็จะสร้าง tcp connect ไปยัง IP ปลายทาง port 80 และส่ง
คลิกที่นี่เพื่อดูส่วนที่เหลือ »

Split MySQL Query แยก RO/RW

Posted by อัทศักดิ์ วงศ์กิตตะ on Sunday, June 8th, 2008

วันนี้มีปัญหาขึ้นมาครับ เนื่องจาก MySQL Cluster ที่ใช้งบานนั้นลองทดสอบความเร็วแล้วสู้ MySQL แล้วใช้ Local Engine ไม่ได้เลย งานนี้เลยต้องหาทางออกครับ ผมเลยไปมอง เรื่อง MySQL Replication หลังจาก Setup และ Tuning เสร็จ ก็มาลองทดสอบความเร็ว มัน Query เร็วกว่า MySQL Cluster หลายเท่าเลยครับ

ทีนี้ก็มาดูเรื่อง Codeing ปัญหาคือมันเป็นโปรแกรมที่เค้าเขียนมานานละ ผมเข้าไปแก้อะไรไม่ค่อยได้ หรือถ้าแก้จริงๆ อยาจจะเป็น Bug อีกก็ได้ คิดไปๆมาๆ อ่าเจอทางออกแล้ว

ปัญหา
- MySQL Cluster ช้า ต้องไปใช้ MySQL Replication แทน
- ไล่แก้ Code ลำบาก เพระา code ค่อนข้างมาก
- Query ต้องเร็วและเพิ่ม MySQL Server ได้ในอนาคต

ทางแก้
- MyQL-Proxy ส่วนนี้ผมลองเอามาใช้แล้วครับ ลอง Query ดูมันก็ยังช้ากว่า Connect เข้า DB ตรงๆถึง 5 - 10 เท่า
- Edit Query ผมเลือกทางนี้ครับ แต่มันมีวิธีลักไก่หน่อย แนวคิดคือต้องไม่ไปยุ่งกะ Code มาก ผมเลยทำการสร้าง php function ใหม่ขึ้นมาครับ โดยทำหน้าที่ check sql ก่อนที่จะ Query ว่าเป็น SELECT, UPDATE, INSERT, DELETE แล้วให้ function ที่สร้างขึ้นมา เลือกที่จะไป query กะ mysql เครื่องไหน

1. สร้าง function mysql_do_query

function mysql_do_query( $sql, $count_rw=null)
{
	global $conn_ro, $count_rw, $count_ro;
	if ( ! empty( $sql))	
	{
		if ( ereg("^SELECT(.*)", strtoupper( $sql)))
		{
			$count_ro++;
			return mysql_query( $sql, $conn_ro);
		} else {
			$count_rw++;
			return mysql_query( $sql);
		}
	}
}

2. ทำการ edit *.php แล้วทำการ replace mysql_query -> mysql_do_query โดยผมใช้ คำสั่ง sed ใน shell script เพื่อแก้ไขไฟล์

#!/bin/bash
for fl in *.php; do
mv $fl $fl.old
sed 's/mysql_query/mysql_query/g' $fl.old > $fl
rm -f $fl.old
done

เสร็จแล้วก็รันครับ shell script จะทำการ find หา *.php แล้วทำการเปลี่ยน function ให้ ต่อไปเวลา ให้ programmer เขียน codeing ก็ให้ทำการ ใช้ function mysql_do_query() แทนครับ

MySQL Cluster on Debian AMD64

Posted by อัทศักดิ์ วงศ์กิตตะ on Friday, June 6th, 2008

สวัสดีเพื่อนๆรวมโลกทุกท่าน วันนี้ก็ได้โอกาศมาเขียนบทความเรื่อง MySQL Cluster สะที หลังจากที่ได้ทำการติดตั้ง และงมกะ Config มาหลายวันจริงๆผมต้องย้าย Database ให้เสร็จตั้งแต่วันที่ 2/6/2008 แต่จนถึงวันนนี้ก็ยังไม่ได้ย้าย

Database เลย เหตุผลหลักคือ

1. Database ค่อนข้างใหญ่ ประมาณ 7G และมี Redcord อยู่ประมาณ 38 ล้าน Redcord
2. ตอน Import Data ผม Dump database มาผิดแบบ
3. MySQL ตอนที่ผม Lab test + ใช้งานจริงเป็นคนละ Version

ด้วยเหตุผลเหล่านี้ทำให้ผมขึ้น MySQL Cluster ไม่ได้ หลังจากลองหาทางแก้อยู่หลายวัน ก็แก้ได้จนหมด งั้นวันนี้ผมก็ของบอกวิธีติดตั้ง และ Config ให้สามารถใช้งานได้ก่อนละกันนะครับ ส่วนเรื่องการ Tuning เอาไว้เดี๋ยวมาบอกอีกที

อุปกรณ์
- Dell 1950, CPU 4Core 2.66GHz x2, Ram 16G (ndbd+mysqld)
- PC P4, Ram 1G (ndb_memd)

การตั้งค่า
- DBC1 IP: 192.168.1.21
- BDC2 IP: 192.168.1.22
- MGM IP: 192.168.1.11
คลิกที่นี่เพื่อดูส่วนที่เหลือ »

Apache2.0 + PHP5 on FreeBSD

Posted by อัทศักดิ์ วงศ์กิตตะ on Wednesday, June 4th, 2008

ผ่านไปพักใหญ่ MySQL Cluster ก็ยังไม่ Start สะทีเลยถือโอกาศมาเขียน docs เรื่องการติดตั้ง Apache + PHP + Mysql ในรูปแบบของผมกันครับ ก่อนอื่นให้ทำการติดตั้ง MySQL ตามเอกสารนี้ครับ

1. ทำการ Update pors ครับ (แนะนำว่าให้ทำบ่อยๆ ใส่ crontab ไว้เลยก็ได้ครับ)

cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile -h cvsup.th.freebsd.org

2. ทำการติดตั้ง Apache 2.0

cd /usr/ports/www/apache20/
make all install clean WITH_SSL_MODULES=yes

คลิกที่นี่เพื่อดูส่วนที่เหลือ »

Install MySQL Server on FreeBSD

Posted by อัทศักดิ์ วงศ์กิตตะ on Wednesday, June 4th, 2008

     สวัสดีครับตอนนี้ว่างเพราะรอ Restore Databse เข้า MySQL Cluster เลยพอมีเวลามาเขียนวิธีติดตั้ง MySQL บน FreeBSD เ้อาง่ายๆละกันนะครับ

1. ทำการ Update ports ของ FreeBSD

cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile -h cvsup.th.freebsd.org

2. ทำการติดตั้ง MySQL Server ผมเลือก Version 5.0 นะครับ

cd /usr/ports/databases/mysql50-server
make all install clean WITH_CHARSET=tis620 WITH_XCHARSET=all WITH_COLLATION=tis620_thai_ci

คลิกที่นี่เพื่อดูส่วนที่เหลือ »

Shell Script Backup MySQL

Posted by อัทศักดิ์ วงศ์กิตตะ on Saturday, May 31st, 2008

สวัสดีครับผม ว่าแล้ววันนี้ก็เขียน shell script ง่ายๆ เพื่อ backup mysql ลง NFS ที่ผม map ไว้ โดย script ที่เขียนขึ้นมานั้น จะมีข้อดีก็ตรงการตั้งเวลาในการลบ data เก่าทิ้งได้

#!/bin/sh
 
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
 
BACKUP_SRC=/usr/home/mysql”
BACKUP_DST=/data/backup/mysql”
LIMIT=7d
 
########################################
HOSTNAME=`uname -n`
DATE=`date +%Y%m%d`
DATE_DELETE=`date -v-${LIMIT} +%Y%m%d`
BACKUP_LOG=”${BACKUP_DST}/backup.log########################################
 
echo “=============================>> ${BACKUP_LOG}
echo `date` >> ${BACKUP_LOG}
echo -n “delete expire backup data..” >> ${BACKUP_LOG}
rm -rf $BACKUP_DST/mysql-$DATE_DELETE 1> /dev/null 2> /dev/null
echo ” done” >> ${BACKUP_LOG}
 
echo -n “backup database..” >> ${BACKUP_LOG}
cp -Rp $BACKUP_SRC $BACKUP_DST/$DATE
echo ” done” >> ${BACKUP_LOG}

การทำงานของ script คือ ระบบจะทำการหาวันปัจจุบัน และวันที่ expire “DATE_DELETE=`date -v-${LIMIT} +%Y%m%d`” โดยจะลบวันจากปัจจุบันไปอีก 7 วัน แล้วก็ค่อย Delete ทิ้งครับผม ส่วนของวัน สามารถแก้่ไขได้ครับ เป็น 7d, 1m (1เดือน) ประมาณนี้ครับ

FreeBSD Kernel Compile How to

Posted by อัทศักดิ์ วงศ์กิตตะ on Saturday, May 31st, 2008

วันนี้มีเหตุต้องลง FreeBSD + Apache 1.3 + Tomcat5 + mod_jk2 ทั้งหมด 4 เครื่อง เลยมาเขียน docs ให้เพื่อนๆ อ่านเรื่อง Kernel ไปก่อนละกันนะครับ

เริ่มต้น FreeBSD หลังจากลงเสร็จต้องทำการปรับแต่ง Kernel ก่อน และ cvsup ให้เป็น version ล่าสุดก่อน โดยผมเลือกใช้ FreeBSD 6.1 ในส่วนของ Kernel จริงๆ ผมก็ไม่ได้ ปรับแต่งอะไรมากครัีบแค่เพิ่มค่าบางค่าให้มันทำงานเป็น web server ได้ดีขึ้น โดยมีขั้นตอนดั่งนี้ครับ

1. ติดตั้ง cvsup โดยผมจะติดตั้งผ่าน pkg_add เมื่อเราใส่ option -r เข้าไป pkg_add จะทำการ download packet ของเรามา install ให้เองครับ

pkg_add -r cvsup-without-gui

หลังจากรอ down โหลดเสร็จ ให้ใช้คำสั่ง rehash freebsd จะทำการ search โปรแกรมที่อยู่ใน $PATH ใหม่ครับ
คลิกที่นี่เพื่อดูส่วนที่เหลือ »