Oct 4, 2010

Zabbix's template to monitor Redis

Today, i'm going to release Zabbix's template & script to monitor Redis.
I copied the perl script from Munin's plugin and modify some parts to make it match with Zabbix. Thank you Munin's plugin developers.

Here are the files


Howto install?

  • If you running your own Redis on port 6379, you don't need to change anything. If you run Redis in another port, just simply use text editor to replace 6379 to your port number.
  • If you running multiple instances of Redis, your could just simply copy the template to your own ports. No need to modify perl script
  • Import template
  • Upload redis.pl to your Redis server at /etc/zabbix/scripts, chmod to 755
  • Make sure that you could run below command and don't get any error.

    sudo su - zabbix --shell=/bin/bash && /etc/zabbib/scripts/redis.pl 127.0.0.1 6379 role
  • Append below line to /etc/zabbix/zabbix_agentd.conf

    UserParameter=redis_stats[*],/etc/zabbix/scripts/redis.pl $1 $2 $3 
  • Restart zabbix-agentd service
  • Check your latest data at Zabbix server via web interface

Good luck.

Oct 1, 2010

Zabbix's template to monitor Memcached

Today's topic is about monitoring Memcached instance. There are several ways/tools to monitor Memcached such as Munin, Nagios and Zabbix. I used to work with several monitoring tools but the most effective & my favorite one is Zabbix. I will discuss my impression about Zabbix later.

How to monitor Memcached's instance by using Zabbix
  1. Import Memcached's template from this link to your Zabbix server
  2. Modify /etc/zabbix/zabbix_agentd.conf and add the following UserParameter (on the Memcached server)
    UserParameter=memcached_stats[*],echo -e "stats\nquit" | nc 127.0.0.1 $1 | grep "STAT $2 " | awk '{print $$3}'
  3. Restart Zabbix agentd service
  4. Link Mecached template to Memcached server
  5. Check the latest data (Application: memcached)
What are inside this template
  • 38 Items (default type is Zabbix Agent Active)
  • 1 trigger
  • 4 graphs
Note
  • This template tries to monitor Memcached instance that running on port 11211
  • If your Memcached instance is running in different port, you could simply replace 11211 with your port number before importing this template
  • If you run more than one Memcached instances, you could simply copy this and modify port number.

Sep 27, 2010

Running multiple instances of Memcached on CentOS

If you install Memcached via Yum or RPM, you will get the following main scripts

  1. memcached binary (may be at /usr/bin/memcached)
  2. /etc/sysconfig/memcached which is the main configuration of memcached
  3. /etc/init.d/memcached which is the startup script of memcached
The above files could run only one instance of memcached, i usually ignore those scripts (no: 2,3) and use direct command line to run multiple instancs of memcached. However this method lacks system administration and is too difficult to maintain. You have to put your multiple command lines into /etc/rc.local. 

Another solution to support this idea is, modify /etc/init.d/memcached to read all configuration of /etc/sysconfig/memcached_* and use those information to start the daemon.

Here is the link to /etc/init.d/memcached

Here is the link to /etc/sysconfig/memcached_11211

After upload the scripts to the server, please
  • Create a folder at /var/run/memcached
  • Change owner of /var/run/memcached to "nobody" and change mode to 755
Usage:
  • Startup command
    # /etc/init.d/memcached start
    # /etc/init.d/memcached start memcached_11211
  • Status command
    # /etc/init.d/memcached status
    # /etc/init.d/memcached status memcached_11211
  • Stop command
    # /etc/init.d/memcached stop
    # /etc/init.d/memcached stop memcached_11211
Note
  • You could create more than one instances of memcached by using 1 startup script by copy & modify /etc/sysconfig/memcached_11211 to memcached_PORT 
  • Don't forget to change the startup parameters inside that file especially the port number
  • Original version of /etc/init.d/memcached is modified from here
  • The block layout of /etc/init.d/memcached is not so good, but it works for me.


Sep 26, 2010

เรื่องเล่าวันนี้เกี่ยวกับ VMware ESX และการ migrate host จาก VMware workstation

วันนี้ทั้่งวันใช้เวลากับการ migrate guest os. ที่แต่เดิมรันอยู่บน VMware workstation version เ่ก่ามากๆ ให้ขึ้นมาอยู่บนตัวใหม่ ซึ่งตอนนี้มี 2 ทางเลือกคือ

  1. VMware ESX4i ตัวนี้รันบน HP Blade BL460c รองรับ Intel VT และ 64 bit guest os.
  2. VMware ESX3.5 รันบน HP Blade BL20p ซึ่ง ณ ขณะนี้ที่ตรวจสอบรัน 64 bit guest os. ไม่ได้ และก็ลง ESX4i ไม่ได้ด้วย
ก่อนอื่นเลย ถ้าจะลง ESX4i ให้ไปตรวจสอบ hardware ก่อนว่า support หรือไม่ นอกจากนี้ยังต้องดูด้วยว่า CPU ที่ใช้อยู่รองรับ VT (virtualization technology) หรือไม่ ถ้าไม่รองรับก็รัน 64 bit guest os. ไม่ได้แน่นอน ผมสรุปให้ง่ายๆ ดังนี้
  • HW AMD Opteron Rev E หรือใหม่กว่า ใช้ได้เลย
  • Intel Xeon-based ตัว processor ต้อง support Intel VT (Virtualization Technology) ซึ่งโดยปกติจะ support อยู่แล้วแต่  disable ไว้ ดังนั้นเราต้องเข้าไปเปิด VT ่กอน ถ้า CPU เรา support VT แต่เข้า bios แล้วมองไม่เห็น ให้ติดต่อ vendor เพื่อ  request ขอ bios version ที่ทำให้เรามองเห็น VT
    • สำหรับวิธี enable ก็เข้าไปใน bios ซึ่งแต่ละยี่ห้อก็ไม่เหมือนกัน 
  • ถ้าต้องการตรวจสอบว่า server เรา support 64 bit VMWare หรือไม่ ให้ไป download tool ที่  http://www.vmware.com/download/shared_utilities.html

การ migrate host จาก vmware workstation ขึ้นมายัง ESX 3.5

  1. backup files ทั้งหมดของ vmware workstation ไว้ที่เครื่อง pc เราก่อน
  2. หลังติดตั้ง ESX เรียบร้อยแล้ว ก็ download infrastructure client มาติดตั้งที่เครื่อง pc เรา เพื่อเอาไว้ตรวจสอบความเรียบร้อยและจัดการในภายหลัง
  3. download vCenter Converter Standalone มาติดตั้งบน pc เวลาติดตั้งให้อย่าลืมเลือกเป็นแบบ standalone
  4. รัน vCenter Converter แล้วเลือก migrate ตามขั้นตอนดังนี้
    • source: vmware workstation แล้ว point ไปยังไฟล์ .vmdk ที่ backup ไว้ในข้อ 1 
    • destination: ก็เลือกเป็น vmware infrastructure server ที่ติดตั้งเรียบร้อยแล้วในข้อ 2
    • ที่จริงแล้วโปรแกรามจะตรวจสอบความเรียบร้อยของ source ว่าปกติหรือไม่ ซึ่งวันนี้เจอ error ไปตัวคือ มันฟ้องว่า


      • Unable to obtain the Lock
      • วิธีแก้คือ ให้ไปลบไฟล์ .lck ใน folder เดียวกันกับ .vmdk ออกให้หมด ซึ่งสาเหตุน่าจะเกิดจากการที่เราไม่ได้ shutdown guest os. ตามปกติ ทำให้ .lck ค้างในระบบ
    • หลังจากนั้นก็เลือก finish เพื่อ convert ได้เลย ซึ่งขั้นตอนนี้จะใช้เวลานานมากน้อยก็ขึ้นกับ size disk ของ guest os. เท่าที่ผมลอง size 7GB ก็ใช้เวลาร่วมๆ ชม. เหมือนกัน นานพอดู
  5. หลังจากนั้นก็ start vm ตามปกติ 

 ปัญหาที่พบในการ migrate host จาก workstation มายัง ESX

  • ถ้า destination เป็น esx4i จะเจอ error "unable to connect to the virtual disk"  กำลังหาวิธีแก้ไข แล้วจะมา update เพิ่มเติมต่อไป (แต่ถ้าปลายทางเป็น esx3.5 จะใช้ได้เลย)
  • ลอง migrate แบบ 2 ต่อ คือ workstation => esx3.5 => esx4i ก็ยังใช้ไม่ได้ error เดิมเลย  (ใครเจอวิธีแก้บอกด้วยคร้าบ)
ถ้าใครติดตั้ง vCenter server ไว้ด้วย ก็จะมีทางเลือกในการใช้งานที่ค่อนข้างหลากหลายกว่า vSphere client นะครับ ซึ่งแนะนำให้หามาใช้งานนะ ค่า license ไม่แพงหรอก แค่ตัวเลขหกหลักเอง 

เผลอ shift+delete mail ก็สามารถ recover ได้

วันนี้มีเหตุการณ์ผู้ใหญ่ในบริษัทเผลอกดปุ่ม shift-delete mail ซึ่งโดยปกติเรามักจะเข้าใจว่ามันจะ recover กลับมาไม่ได้แน่ๆ แต่พอลอง search ดูก็พบว่า มัน recover ได้นี่หว่า

สิ่งที่ต้องมี (เท่าที่ลอง ver อื่นไม่แน่ใจ)

  • Exchange Server 2003
  • OWA
สมมุติว่า user ชื่อ Abc เผลอลบเมล์จาก inbox ด้วย shift-delete ก็ง่ายๆ เลย เข้าไปที่ OWA login ตามปกติ จากนั้นก็ให้ใช้ IE เปิด URL http://OWA-URL/exchange/Abc/Inbox/?cmd=ShowDeleted
เพียงแค่นี้ก็จะสามารถมองเห็นเมล์ที่ถูกลบโดยไม่ได้ตั้งใจได้แล้ว 

บันทึกกันลืม: เปิดไฟล์ .chm ไม่ได้ แก้อย่างไรดี

ปัญหาเปิดไฟล์ .chm ไม่ได้ เกิดขึ้นถ้าจำไม่ผิดน่าจะเป็นกับ WindowsXP Service Pack ใหนก็ไม่ทราบ ขึ้เกียจไปค้น เอาเป็นว่าอาการคือ double click ขึ้นมาจะเจอ action cancelled 

ถ้าเจอแบบนี้ จำไว้เลยว่า ให้ right click ไฟล์ที่เราต้องการจะอ่าน แล้วเลือก property แล้วเลืิอก "UNBLOCK" แค่นี้ก็เปิดอ่านได้แล้ว

ในหลายๆ เว็บจะมีวิธีแก้ถาวร แต่ดูแล้วคุ้นๆ ว่ามันต้องแก้ registry กันวุ่นเหมือนกัน เอาไว้วันหลังค่อยมาดูวิธีแก้แบบถาวรกัน

วันนี้ update กันลืมเอาไว้แค่นี้ก่อนครับ  
  

จะเลือก network setting แบบใหนบน Sun VirtualBox

วันนี้มีเรื่องจะมาแบ่งปันประสบการณ์การใช้งาน Sun VirtualBox ใหักับทุกท่านได้ทราบกัน อาจจะไม่ใช่ best practice หรือวิธีการที่ถูกต้อง แต่เป็นวิธีการ config "Network Setting" สำหรับ GuestOS. เพื่อให้สามารถใช้งานได้ ในแบบที่ผมต้องการ

คงจะไม่เสียเวลาสาธยายว่า Sun VirtualBox คืออะไรนะครับ ผมพุ่งเป้าไปเลยแล้วกันว่า ผมต้องการ install GuestOS บน VirtualBox โดยความต้องการของผม มีง่ายๆ แค่ 3 ข้อ คือ

  1. ผมจะต้องสามารถ access network service เช่น ssh, http ... บน GuestOS จาก HostOS หรือเครื่องอื่นๆ ใน network เดียวกับ Host ได้
  2. GuestOS จะต้องสามารถ access internet ได้ (ผ่านทาง Host) 
  3. ผมจะต้องสามารถใช้งาน GuestOS ในทั้งสองความต้องการข้างบนได้ ไม่ว่าจะเชื่อมต่อ internet แบบใหนก็ตาม เช่น wireless, wire 

ทำความเข้าใจ Network Setting ของ Sun VirtualBox ก่อน

network setting ของ VirtualBox ก็จะคล้ายๆ กับของ VMWare แต่อาจจะเรียกชื่อต่างกัน ซึ่งก็สร้างความสับสนได้มากๆ เรามาดูกันเลยว่า มีให้เลือกกี่แบบ แต่ละแบบต่างกันอย่างไร
  1. Not attached: โหมดนี้ ถ้าบูต GuestOS ขึ้นมา ก็จะมองเห็น LAN card ที่ไม่มี connection ประมาณว่ามีการ์ด แต่ไม่ได้เสียบสายแลน ประมาณนั้น 
  2. Nat: อันนี้ก็ง่ายๆ ตรงๆ คือ GuestOS จะส่ง DHCP request ออกมา ซึ่งจะโดน VirtualBox ดัก และส่งค่าไอพีที่เหมาะสมให้ รวมทั้งค่า gateway ip ด้วย การทำงานในโหมดนี้ช่วยให้ GuestOS สามารถเชื่อมต่อและใช้งาน network/internet ได้

    ข้อเสียอย่างเดียวของ NAT Mode คือ Host ไม่สามารถเชื่อมต่อเข้าไปยัง GuestOS ได้ ทำให้เป็นแค่ one way communication เท่านั้น
  3. Bridged Adaptor: โหมดนี้น่าจะเป็นโหมดที่หลายๆ คนชอบ โดย VirtualBox จะ Bridge Interface Network ของเครื่อง Host มาให้กับ GuestOS ใช้งานได้ พูดง่ายๆ ว่า GuestOS จะมองเห็น network เดียวกันกับ Host นั่นเอง แต่มีข้อแม้นิดนึงคือ 
    • สามารถใช้ได้กับ LAN interface เท่านั้น
    • และ LAN Interface นั้น จะต้องมีสถานะการเืชื่อมต่อเป็น Connected (ต้องเสียบสายแลน)
  4. Internal Network: ทำงานได้เหมือน bridged adaptor แต่มีข้อดีเพิ่มเติมมา 2 อย่างคือ
    • security + speed เำพราะ packet จะไม่วิ่งผ่าน network stack ของ Host ทำให้ Host ไม่สามารถ sniff packet ได้ นอกจากนี้ยังทำให้ packet รัีบส่่งได้เร็วขึ้นอีกด้วย
  5. Host-only Adaptor: Host-only Adaptorโหมดนี้ มีไว้เพื่อกำจัดจุดอ่อนของ Bridged adaptor ทำให้ Host สามารถสื่อสารกับ GuestOS (รวมทั้ง GuestOS สื่อสารกับ GuestOS) ได้ โดยที่ LAN Interface ของ HostOS ไม่จำเป็นต้องมีการเชื่อมกับกับ switch/hub แต่อย่างใด

ปัญหาเกิดขึ้น เพราะ
  1. ผมอยากใช้งานแบบ bridged หรือ internal network แต่ผมไม่สามารถเสียบแลนได้ตลอดเวลา
  2. ถ้าจะไปใช้ nat มันก็ออกเน็ตได้อย่างเดียว ไม่สามารถ  access network service บน GuestOS ได้เลย
  3. ถ้าจะไปใช้ Host-Only มันก็ออกเน็ตไม่ได้ แต่จะ access network service บน GuestOS ได้

Solution

  1. วานลูกน้องเก่า @theclodhopper ทำสาย loopback เพื่อเอามาเสียบช่องแลนของ notebook เพื่อหลอกว่า เราต่อสายแลนให้เครื่อง Host นะ เพื่อที่จะได้ใช้งาน Bridged หรือ Internal Network ได้ ประกฏว่า มีปัญหาในทางปฏิบัติ คือ มันจะแสดงสถานะเป็น disconnect ทั้งๆ ที่ทดสอบกับ PC แล้วใช้งานได้ปกติ สรุปว่า วิธีนี้  FAIL 
    แต่ก็ต้องขอบใจ @theclodhopper ที่ช่วยสนับสนุนการทดลองครั้งนี้ (เคยทำแล้วใช้ได้กับ vmware สมัย 4-5 ปีที่แล้ว)
  2. ประยุกต์ สร้าง lan card 2 interface

    โดย interface แรกตั้งค่าให้เป็น Host-Only เพื่อให้สามารถควบคุมจาก Host ได้

    ส่วน interface ที่ 2 ตั้งค่าเป็น NAT mode
เพียงเท่านี้ เราก็สามารถใช้งาน GuestOS ได้จาก Host (via Host-Only interface) และตัว GuestOS เองก็สามารถใช้งาน internet ได้ (via NAT interface) โดยที่ไม่จำเป็นต้องง้อ Bridged adaptor อีกต่อไป
 
ปล. วิธีนี้ อาจจะไม่ใช่วิธีที่ถูกต้องตามหลักการ แต่เป็นวิธีที่ผมพบว่าใช้งานง่าย สะดวก ต่อ environment ของผมเอง ใครจะนำเสนอวิธีใหม่ๆ ก็เชิญได้เลยนะครับ หรือจะนำไปใช้มั่งก็ยินดี 

web performance test by httperf

httperf เป็น tool ที่มีมาค่อนข้างนานแล้ว เท่าที่ลองหามาก็มีตัวนี้แหละที่ค่อนข้างจะมี feature ที่หลากหลาย ที่พอจะเอามาถูไถทำ performance test ได้

อีกตัวที่พอทำได้คือ ab  แต่ผมยังหาวิธีที่จะให้ ab ยิง url ตามที่เราต้องการที่ไม่ใช่ fix 1 url  ไม่ได้ ก็เลยมองมาที่ httperf 

แต่กว่าจะหาทางให้มันทำงานได้ตามที่ต้องการก็ค้นกันนานเหมือนกัน เพราะ input file ที่ httperf ต้องการนำไปใช้เป็น input url นั้น มี format ที่พิศดารไม่เหมือนชาวบ้านเลย
tutorial คงไม่แนะนำ เข้าสู่ command ที่ใช้ยิงกันเลย
httperf --hog --server=test --wlog=n,/root/httperf/uri_80k.txt --num-conns=80000 --ra=1000
 
--hog : ต้องระบุ เพราะถ้าไม่ระบุ httperf จะใช้ port แค่ 1024-5000 เท่านั้น ซึ่งไม่เพียงพอต่อการยิง test  
--server : domain ของ server ที่ต้องการส่ง traffic ไป (มันจะ auto set Host: ด้วยค่า --server=xx นี้ไปใน http request header ให้เลย)
--wlog : [y|n] n คือไม่ต้องวนลูป ยิง url ใน file /root/httperf/uri_80k.txt เลย 
--num-conns : ระบุจำนวน http request ที่จะให้ส่งไป server ปลายทาง (ผมใช้วิธี gen url ที่จะยิง 80000 url, ดังนั้นก็เลยจะส่ง num-conns =80000 ไปเช่นกัน)
--ra : rate ที่ต้องการส่งไปเท่ากับ 1000 conn/second 

วิธีการ gen file 
ลองเอาไปประยุกต์เอาเองนะครับ ผมใช้วิธีเขียน perl script ง่ายๆ ใช้ ASCII NUL เป็นตัวคั่นระหว่าง URL
#!/usr/bin/perl
for ($i=1;$i<=80000;$i++) {
        print '/myurl.php?id=' . $i ." \0";
}

solve ปัญหา connect vpn แล้วเข้าเว็บภายในบางตัวไม่ได้

สองวันก่อนได้รับแจ้งจาก user (vip) ใน office ว่า เวลาที่ใช้งาน internet จากที่บ้านแล้ว connect vpn มาที่ office ไม่สามารถเข้าเว็บภายใน (ย้ำ ภายใน) บางอันได้ พร้อมกับส่ง error มาให้ดูด้วย เป็น screen capture หน้า browser ซึ่งถ้าดูจาก error ก็เข้าใจไปเองในตอนนั้นว่า user (poweruser) ท่านนี้คงไป set proxy ที่ browser มั้ง ก็เลยส่งผลให้เข้า private web ไม่ได้

ก็เลยรบกวนให้ power user ท่านนั้น troubleshoot เบื้องต้น ตาม step  ข้างล่างนี้
  1. ลองใช้ browser อื่นๆ เช่น firefox, chrome ก็เป็นเหมือนกันหมด
  2. ipconfig ดูแล้ว พบว่าได้ไอพีของ vpn network ไปแล้ว ontop ip ของ isp อีกชั้นหนึ่ง
  3. nslookup privateweb ดู ก็พบสิ่งผิดปกติคือ จะได้ไอพีที่เป็น public ip มา 1-2 ไอพีเดิมๆ มาเสมอ ทั้งๆ ที่ควรจะได้เป็น private ip
  4. ISP: True Hispeed Internet
  5. OS: WindowsXP
จากนั้นผมก็เลยลอง ด้วยตนเองที่ office แล้วก็พบว่า
  1. สาเหตุเกิดจาก browser ทำ domain resolving โดยวิ่งไปที่ DNS ของ ISP แทนที่จะิวิ่งไปหาคำตอบจาก DNS ของ VPN network  
  2. True มีการเปลี่ยน configuration ของ DNS ใหม่ เฉพาะ hispeed internet (as of now) ว่า ถ้า lookup โดเมนใหนก็แล้วแต่ แล้วไม่ได้คำตอบจากเจ้าของ domain ทาง true จะถือวิสาสะใส่คำตอบที่เป็น ip web server ของ true ให้เอง เพื่อที่จะได้แสดงหน้าของ true เอง
งานเข้าเลยครับ เพราะเราจะไปบังคับให้ true แก้ config dns คงไม่ได้ หลายเจ้าก็ทำแบบนี้เช่นป้านิภามหาภัย ก็เลยลองค้นดู ก็พบว่าอาการตามข้อ 1 เป็น bug ของ WindowsXp  ครับพี่น้อง โชคดีที่เค้ามี workaround ให้ โดยให้แก้ registry (ทำตามใน KB ได้เลยครับ ผมลองแล้ว) แต่โชคร้ายคือเค้าไม่คิดจะแก้ปัญหาถาวร คือใน servicepack 2, 3 ของ XP ก็จะไม่มีการแก้ไขเรื่องนี้
  
อย่างไรก็ตาม ขอประนามเป็นการส่วนตัวกับ ISP ใดก็แล้วแต่ ที่แก้ไข DNS setting แบบนี้ เพราะ
  1. ถ้าผมจะเข้าเว็บแล้วเว็บนั้นไม่มีอยู่จริง ก็ปล่อยให้ browser จัดการไป ไม่ต้องมายุ่งวุ่นวาย ไม่ต้องมา show เว็บ ซึ่งไม่รู้ว่ามีวัตถุประสงค์อย่างอื่น เ่ช่น ขาย ads หรือป่าว
  2. application ใน internet มันไม่ได้มีแค่ web ถ้า nslookup แล้วไม่มี ไม่เจอ ก็ควรปล่อยไปตามกลไกปกติ ไม่งั้นงงกันตาย
  3. ถ้าไอ้เว็บนั้นของ true หรือ isp อื่นใดที่คิดจะทำเช่นนี้ เกิดทะลึ่งมี security vulnerability ขึ้นมา นั่นหมายความว่า single point of infected
พอแค่นี้ก่อนครับ โมโห ทำให้เสียเวลาไปสองสามชม. แถมต้องมาตามแก้ vpn manual อีก ขอย้ำว่า ณ วันนี้ อาการนี้จะเกิดขึ้นกับ WindowsXP + True Hispeed Internet เท่านั้น  แต่ในอนาคตไม่แน่ อาจจะเจออีกหลาย ISP ที่คิดจะเลียนแบบ แน่นอน
 

Sep 13, 2010

ใช้ VMware ESX 4 ฟรี บน server hardware 64 bits และ ESX3.5 บน hardware 32bits

วันนี้ได้มีโอกาสติดตั้ง VMware ESX 3.5 Update 4 ก็เลยอยากทบทวนหน่อยว่า รู้จัก VMware มานานแค่ใหนแล้ว

ผมเคยได้ยินชื่อ VMware ตอนใหนจำไม่ได้แล้วจริงๆ น่าจะช่วงทำงานใหม่ๆ ซึ่งตอนนั้นมีโอกาสได้ลองเล่น version Workstation เท่านั้น เวลาลงก็ลงเป็นแบบ application ตัวหนึ่งอยู่บน windows ซึ่ง performance สมัยนั้น ก็ไม่ได้ประทับใจอะไรมากมาย คงอาจจะเป็นเพราะว่า hardware ยุคนั้นยังไม่ค่อยมีคอ (core) เหมือนสมัยนี้กระมัง ก็เลยทำให้ os, app ทุกอย่างที่รันอยู่บนนั้นค่อนข้างจะช้า ถึงช้ามาก

หลายวันที่ผ่านมา ที่บริษัทฯ มีแนวโน้มที่จะใช้งาน virtual machine เยอะขึ้น ก็เลยได้ฤกษ์เชิญ vendor เข้ามาพูดคุย ขอสรุปให้ฟังสั้นๆ ครบบ้าง ขาดบ้าง หรือถูกบ้างผิดบ้างก็ต้องขออภัย สรุปจากความเข้าใจ(ไปเอง) ของตัวเอง ดังนี้

VMware vSphere 4 
ปัจจุบัน VMware ขึ้นมาที่ version 4 แล้ว ถ้าขายเป็นชุด package software จะเรียกว่า VMware vSphere ซึ่งในชุดนี้มันมีอะไรบ้าง ผมก็ไม่รู้เหมือนกัน จำไม่ได้เยอะมาก  แต่ที่แน่ๆ ที่มีคือ VMware ESX 4.0 และ VMware vCenter โดยตัว ESX 4.0 นั้นขายนะครับ ไม่ฟรี ตัวนี้เป็นตัวหลักต้องมี ส่วนที่เหลือก็เป็นน้ำจิ้ม เวลาขายเค้าจะขายเป็นชุด เช่น standard, enterprise อะไรประมาณนี้ (ถ้าอยากรู้ลึกๆ ก็เรียก sale ดีกว่านะครับ ผมจำบ่ได้ คุณสมบัติเด่นของ VMware version นี้คือ

  • vMotion ทำใ้ห้เราสามารถย้าย Virtual machine ข้าม ESX ใน cluster เดียวกันโดยไม่มี downtime
  • HA ก็เหมือน HA ของ Linux ที่รู้จักกัน คือ ถ้า virtual machine ตัวแรกมีปัญหา ตัว standby ก็จะ active ขึ้นมาทำงานทันที
  • Storage vMotion จำไม่ได้ อิอิ ก็คงย้าย storage ข้ามได้ มั้ง
  • fault tolerant VMSafe เค้าจะติดตั้งพวก antivirus ที่ระดับ ESX server แทนที่จะเป็นระดับ virtual machine
  • DRS อันนี้ก็คุณสมบัติของ Dynamic Resource 
อันที่จริงมันมี feature มากกว่านี้นะครับ แต่ที่จดๆ มามีแค่นี้เอง ถ้าจะซื้ออย่าหวังว่าจะได้ feature ครบ พวก vMotion, clustering ทั้งหลาย ต้องซื้อชุด package แพงกว่าปกติ ถ้าซื้อ standard ก็ทำได้แค่ virtual machine ธรรมดาเอง

ไม่มีตังส์ซื้อ VMware ทำงัยดี
ปัญหาโลกแตกสำหรับ SME ทั้งหลายคือ ไม่มีเงิน แต่อยากใช้ของดี แนะนำได้ง่ายๆ เลยครับ VMware เค้ามี version ที่แจกฟรีเหมือนกัน ตัว software ตัวเดียวกันกับตัวเสียตังส์ เพราะแอบๆ ถามบริษัทที่เค้ามาขายแล้ว version นี้เรียกว่า VMware ESX 4.0i ไปลองโหลดมาเล่นได้เลย เวลาโหลดจะเป็น iso file ต้องเอามา write cd แล้วติดตั้งอีกที ซึ่งวิธีติดตั้งก็ง่ายมาก เท่าที่ทราบ ESX 4.0i ใช้งานได้กับ hardware 64 bits นะครับ 32 bits คาดว่าไม่น่าจะใช้ได้


  • สำหรับ ESX 4.0 ถ้ามีการใช้งานเยอะมากกว่า 10 ESX แนะนำให้ซื้อ VMware vCenter มาเพื่อเป็นตัว remote จัดการ ESX ทั้งหมดนะครับ 
  • ถ้ามี server hardware 32bits ให้ไปโหลด VMWare ESX 3.5 update4 มาใช้ได้เลยนะครับ เพราะหลังจาก VMware ปล่อย 4.0 มา ตัว 3.5 ซึ่งแต่ก่อนเสียตังส์ ก็ปล่อยให้โหลดฟรีได้แล้ว


ขั้นตอนๆ คร่าว ในการทำ VMware ESX 3.5 มาใช้งาน


  • ก็ง่ายๆ ไป download ISO image มาก่อน พร้อมทั้ง register ด้วยเพื่อที่จะได้เอา License key มา register ไม่งั้นมันจะให้ใช้ได้แค่ 60 วัน  ตามลิงค์นี้เลย
  • จากนั้นก็ download iso
  • หาเครื่องมา install  พอ install เสร็จ ให้เปิด web browser ไปที่ http://your_vmware_ip/ เพื่อ download VMware infrastructure client มาติดตั้งบน pc ของเรา
  • จากนั้นก็ connect ใช้งาน
  • อย่าลืม config license ให้เรียบร้อย เพื่อให้สามารถใช้งานได้ตลอดไปนะ 

เพิ่มเติมคร่าวๆ ผมได้ทำการทดสอบ ioperformance โดยใช้ iozone เทียบกันระหว่าง VMware ESX4 และ Xen ที่ติดตั้งอยู่บน CentOS5.2 พบว่า ESX4 ให้ throughput ที่ดีกว่า Xen เล็กน้อย ส่วน graph จะหามาให้ชมอีกที

ส่วนการทดสอบเรื่อง cpu/memory นั้น ก็ให้ผลทำนองเดียวกันคือ VMware ESX4 จะดีกว่าเล็กน้อย

วันนี้พอแค่นี้ก่อน คราวหน้าค่อยมา update เรื่องการนำไปใช้งาน ว่า VMware ในยุคปัจจุบันจะเหมาะกับ application ลักษณะใหน

Share ประสบการณ์การใช้งาน TokyoTyrant

ก่อนอื่นต้องออกตัวว่าไม่ได้เป็น programmer เขียนโปรแกรมเพื่อใช้งาน TokyoTyrant นะครับ แต่ว่าเป็นคนดูแล service TokyoTyrant และให้คำแนะนำในฐานะ infrastructure service owner เท่านั้น  ซึ่งเท่าที่พบเห็นการใช้งานมาก็พอจะบอกได้ว่า อะไรควร อะไรไม่ควร


  • เนื่องจาก TokyoTyrant ไม่ support การกำหนด expire date ให้กับ key ดังนั้น ข้อมูลที่บันทึกเข้ามาจะถูกเก็บสะสมไปเรื่อยถ้า key ไม่ซ้ำกัน 
  • การทำ replication ต้องเปิด ulog ที่เครื่อง master ไม่งั้นจะทำ rep ไม่ได้ ดังนั้นถ้า application ใดที่มีการเปลี่ยนแปลงค่าบ่อยมากๆๆ ก็อาจจะทำให้ ulog โตขึ้นเรื่อยๆ ได้ ใน app ที่เคยเห็นพบว่า พอใช้งานไปได้แค่ 2 อาทิตย์ ulog โตขึ้นมากถึง 17GB ซึ่งถ้าปล่อยไปเรื่อย disk ก็คงเต็มภายในไม่กี่เดือน ก็ต้องยกเลิกการใช้งานในท้ายที่สุด

คำถามคือ แล้วข้อมูลแบบใหนที่ควรเก็บไว้ใน TokyoTyrant ผมมองว่า ควรเป็นข้อมูลที่เป็นเสมือน lookup table เช่น เก็บ status ของ online user, เก็บ property ง่ายๆ ของ user แทนการเก็บไว้ใน RDBMS และไม่ต้องการเก็บไว้ใน Memcached เพราะข้อมูลค่อนข้างมีความสำคัญ ไม่อยากเสี่ยงที่จะให้สูญหายหรือ get ข้อมูลไม่ได้ ดังนั้น TokyoTyrant (หรือ TokyoCabinet) ก็น่าจะเป็นทางเลือกที่ดีอีกตัว

อีกคำถามคือ ถ้าใช้ memcached อยู่แล้ว พบปัญหา timeout หรือข้อมูลหายบ่อย ควรจะแก้ไขอย่างไร ถ้าเรากำหนด expire ของข้อมูลได้ แนะนำให้ใช้ Redis เพราะทดสอบแล้ว เร็ว set expire ได้ ดังนั้นข้อมูลใน memory หรือ disk จะไม่บวมมาก แถมเป็น persistent คือ reboot server แล้วข้อมูลไม่หาย มีการบันทึกไว้บน disk ด้วย

ถ้าข้อมูลมีปริมาณที่แน่นอน ต้องการความน่าเชื่อถือมากขึ้น ต้องการทำ search ที่เร็ว ก็แนะนำ TokyoTyrant เลย ความสามารถก็น้องๆ RDBMS โดยเฉพาะส่วน search ใช้ software ชื่อ TokyoDystopia รับรองได้เรื่องความเร็ว ดีกว่า RDBMS แน่ๆ

งงแน่ๆ ถ้างง แนะนำง่ายๆ ลองดูด้วยตนเองทั้งหมดครับ ถ้ามีเวลาเพียงพอ เพราะการ set up ค่อนข้างง่าย แต่การ maintain ให้ทำงานได้ตลอดโดยไม่มีปัญหานั้นก็เป็นเรื่องท้าทายเช่นกัน