รวมพื้นที่ Storage จาก 4 Server เข้าด้วยกันด้วย GlusterFS

จากคราวที่แล้วไดเขียนถึงเรื่องการสร้าง HA Storage ด้วย GlusterFS ไปแล้ว ในครั้งที่แล้วเรานำเอาพื้นที่จาก 2 Server มาทำ Replication กัน ซึ่งก็จะได้พื้นที่เท่าเดิมเพราะเสียพื้นที่ในการทำ Mirroring และ Replication ครั้งนี้จะมารวมพื้นที่จาก Server 4 เครื่องเพื่อสร้าง Distributed Storage กันในแบบจริงๆ จังๆ ครับ และที่สำคัญใน How-to นี้ไม่ได้ทำ HA หรือ fault tolerance นะครับ หากต้องการทำ HA และ Replication ให้อ่านจากบทความในตอนที่แล้ว ก่อนลงมือทำมาทำความเข้าใจกันก่อน ครั้งนี้จะเป็นการนำเอา พื้นที่ Storage ทั้ง 4 Server มารวมกัน โดยนัยคือการแบ่งไฟล์ออกเป็นส่วนๆ กระจายเก็บลงไปใน Server ในเครือข่าย ซึ่งถ้าเครื่องใดเครื่องหนึ่งตาย ข้อมูลก็จะมีไม่ครบครับ สำหรับงานจริงควรใช้เน็ตเวิร์คขนาด 10 GigE ขึ้นไป ใช้ฮาร์ดแวร์แบบ x86_64 servers พร้อม SATA-II RAID และ Infiniband HBA. จึงจะได้ประสิทธิภาพสูง 🙂
มาดูโครงสร้างกัน เรามีเครื่อง Server ทั้งหมด 4 เครื่อง และเครื่อง Client 1 เครื่องดังนี้
Server 1 IP Address : 172.16.16.10 Domain Name : server1.example.com
Server 2 IP Address : 172.16.16.11 Domain Name : server2.example.com
Server 3 IP Address : 172.16.16.12 Domain Name : server3.example.com
Server 4 IP Address : 172.16.16.13 Domain Name : server4.example.com
Client 1 IP Address : 172.16.16.14 Domain Name : client1.example.com
เครื่องทุกเครื่องเชื่อมต่อกันในเครือข่ายอ้างอิงผ่าน hostname/domain name ได้ถูกต้อง Linux Distribution ที่ใช้เป็น Ubuntu 10.10 ใครใช้ Debian ก็จะสามารถใช้วิธีการเดียวกันได้ครับ 🙂 เมื่อเตรียมทุกอย่างครบแล้วลงมากันได้! Continue reading รวมพื้นที่ Storage จาก 4 Server เข้าด้วยกันด้วย GlusterFS

สร้าง HA Storage พร้อม Automatic File Replication ด้วย GlusterFS

ผมได้มีโอกาสได้ไปเรียน Hadoop กับทีมงาน ThaiGird ที่ SiPA แต่ไม่ได้เรียนจบคอร์สเพราะมีเวลาน้อยมากในการเข้าฟังบรรยายและทำ lab สุดท้ายก็ได้เพียงแนวความคิดของ Hadoop ซึ่งมีบางอย่างที่น่าสนใจ ซึ่งไม่ใช่เครื่อง HPC ซะทีเดียว แต่เป็นเรื่อง Distributed Storage ที่ใช้ HDFS ซึ่งสร้างความประทับใจมากๆ แนวคิดของ HDFS ง่ายๆ คือการสร้าง Storage ขนาดใหญ่โดยใช้ Storage ที่ติดอยู่กับเครื่องโหนดหลายๆ เครื่อง เอามารวมกัน ซึ่งคุณสามารถสร้าง Storage ขนาด PetaByte ได้สบายๆ แต่ HDFS ใช้กับ Hadoop เท่านั้น! เอามาใช้งานแบบปกติๆ ไม่ได้ จากแนวคิดเรื่อง Distributed Storage ที่ได้มาจาก Hadoop File System ทำให้นึกขึ้นได้ว่า เราสามารถสร้าง Distributed Storage แบบ HDFS ได้ง่ายๆ เช่นกัน โดยใช้ GlusterFS เจ้า GlusterFS นี้ช่วยให้เราสร้าง Storage ผ่านจากเครือข่ายเน็ตเวิร์คได้ง่ายๆ และใช้แนวคิดเดียวกันกับ HDFS แต่เราสามารถเรียกใช้งานได้เหมือนกันการใช้งาน Storage ปกติ และนั่นก็หมายความว่าคุณสามารถเอาเครื่องคอมพิวเตอร์มาต่อๆ กันเพื่อสร้าง Stroage ขนาดใหญ่แบบ PetaByte ได้สบายๆ How-To นี้จะพูดถึงวิธีการติดตั้ง GlusterFS บนเครื่อง 2 เครื่องพร้อมทำ HA (High-Availability) โดยใช้คุณสมบัติ Automatic File Replication ของ GlusterFS เอง มาลงมือกันเลย
ก่อนลงมือทำมาทำความเข้าใจกันก่อน เราต้องมีเครื่อง Server อย่างน้อย 2 เครื่องในการทำ Replication หรือที่เรียกกันง่ายๆ ว่า Mirroring และเครื่อง Client อย่างน้อย 1 เครื่องสำหรับเรียกใช้งาน Storage สำหรับงานจริงควรใช้เน็ตเวิร์กขนาด 10 GigE ขึ้นไปจึงจะได้ประสิทธิภาพสูง เข้าใจกันแล้วมาลงมือทำกันเลย Continue reading สร้าง HA Storage พร้อม Automatic File Replication ด้วย GlusterFS

จัดการ Load Balance ให้กับ Apache ด้วย Pound

เมื่อคราวที่แล้วเขียนเรื่อง Load Balance ให้ Apache Web Serverv ง่ายๆ โดยใช้ DNS Round Robin ซึ่งสามารถทำ Load Balance ได้ง่ายๆ แต่มีปัญหาที่มีโอกาสเกิดขึ้นได้ คือ เมื่อ Web Server ตัวใดตัวหนึ่งมีปัญหา ผู้เข้าเว็บที่โชคดีได้ IP Address เครื่องนั้นไปก็จะไม่สามารถเข้าถึงเว็บได้ DNS Round Robin ช่วยเรื่อง Load Balance ได้จริง แต่จัดการเรื่อง fail over ไม่ได้ 🙂 ครั้งนี้จะมาแนะนำการทำ Load Balance ง่ายๆ อีกเช่นเคย โดยใช้ Pound
Pound ทำหน้าที่

  • reverse proxy : ส่ง request จากเว็บเบราเซอร์ไปยัง back-end server ที่มีอยู่
  • load balancer : ส่ง request จากเว็บเบราเซอร์ไปยัง back-end server ที่มีอยู่และจัดการข้อมูล session ด้วย
  • SSL Wrapper : ถอดรหัส HTTPS จากเว็บเบราเซอร์และส่งไปยัง back-end server ที่มีอยู่
  • กลั่นกรอง HTTP/HTTPS : ตรวจสอบ request เพื่อความถูกต้องและรับ reuest ที่มีรูปแบบถูกต้องเท่านั้น
  • fail over-server : หากมี back-end server ตาย Pound จะจำเครื่อง server นั้นและหยุดส่ง request จนกว่าจะมีการแก้ไข
  • request redirector : request จาก Pound สามารถกระจายไปยัง back-end server ทั้งหมดได้ขึ้นอยู่กับ request URL

Continue reading จัดการ Load Balance ให้กับ Apache ด้วย Pound

ติดตั้ง DNS Server พร้อม Master & Slave อย่างรวดเร็ว

ช่วงนี้เขียน How to บ่อยมากเนื่องจากซ้อมมือ Linux Server กลัวว่าสนิมจะขึ้นเพราะไม่ได้จับนานมากแล้ว 4 ปี เห็นจะได้ ตอนนี้มีเวลาว่างเลยได้ทดลองโน่น ทดลองนี่ ในครั้งนี้ก็จะมาว่ากันด้วยเรื่อง DNS Server ครับ DNS Server ถือเป็นแหล่งอ้างอิง Domain Name เพื่อทำหน้าที่แปลง URL ไปเป็น IP Address ซึ่งหน้าที่หลักของ DNS ก็ประมาณนี้ จริงๆ แล้วถ้าคนเราจำ IP Address ได้ทุกเว็บก็คงจะพิลึกไม่น้อย ;P เอ่อ เขาใช้ Domain กันน่ะครับ ทีนี้การประกาศ Domain Name ต้องอาศัย DNS Server เป็นตัวประกาศว่า Domain นี้ใช้ Name Server อะไร มี sub-domain อะไรบ้าง IP Address อะไร เป็นต้น ถ้าอ่านแล้วยังงงๆ ให้ท่านไปหาอ่านเอาเองที่ http://en.wikipedia.org/wiki/Domain_Name_Server ครับ
ในครั้งนี้จะ มาแนะนำการตั้ง DNS Server แบบเร็วๆ โดยมี 2 เครื่อง คือ master และ slave โดยเครื่อง slave จะทำหน้าที่อัพเดทข้อมูลจาก master อัตโนมัติ (replication) มาเริ่มกันเลย ในตัวอย่างนี้เราจะตั้ง DNS Server เพื่อใช้กับ Domain ชื่อ EXAMPLE.COM (จำง่ายดีครับ) โดยจะมีข้อมูลดังนี้ (ของผมเองนะ เปลี่ยน IP ไปตามที่คุณต้องการ)
Server 1 : ns1.example.com
IP Address : 172.16.19.226
Netmask : 255.255.0.0
Gateway : 172.16.16.1
Server 2 : ns2.example.com
IP Address : 172.16.19.73
Netmask : 255.255.0.0
Gateway : 172.16.16.1
ให้ ติดตั้ง Ubuntu Server ทั้ง 2 เครื่อง เลือกติดตั้ง DNS Server ทั้ง 2 เครื่องครับ 😉 เมื่อติดตั้งเสร็จแล้วให้ config IP Address ให้ถูกต้อง
Continue reading ติดตั้ง DNS Server พร้อม Master & Slave อย่างรวดเร็ว

NFS บน Sun Fire V210/V240

ผมได้เครื่อง Sun Fire มาเล่นๆ 2 ตัว ที่มาที่ไปอ่าน Blog เก่าๆ ของผม เครื่อง Sun Fire 2 ตัวนี้มีตัวหนึ่ง คาดว่าจะมี Storage ขนาดใหญ่ ทำ LVM รวมพื้นที่ได้แค่ 100G เอง แต่ก็พอได้ล่ะน่า ด้วยความดันทุรัง แกมความบ้า ก้อเลยจับทำ NFS ซะเลย อ้อผมเอา Debian ที่ใช้กับ CPU Sparc ลงไปนะครับ เพราะฉนั้น NFS Server ว่ากันด้วย Debian ล้วนๆ อ้อลืมไป How-to นี้สามารถประยุกต์ใช้ได้กับ Ubuntu ครับ มาดูสภาพแวดล้อมกันก่อน

ตอนนี้ผมมี Sun Fire 2 เครื่องคือ V210 และ V240 มี IP Address เป็น 192.168.80.95 และ 192.168.80.96 ตามลำดับ เครื่อง V240 ทำ LVM ไว้แล้วโดย mount Logical Volume ไว้ที่ /mnt/extra ส่วนเครื่อง V210 จะ mount ไว้ที่ /mnt/export ผ่าน NFS ไปยัง V240 ครับ 🙂 เมื่อเข้าใจกันแล้วมาเริ่มกันเลย
Continue reading NFS บน Sun Fire V210/V240

ไปเรียน Kdenlive มา

พี่ที่ DMA ไปลองเล่น Kdenlive แล้วติดใจเลยเอามาสอนให้กับเพื่อนๆ น้องๆ พนักงาน ด้วยความสนใจก็เลยไปนั่งเรียนด้วย เรียนสนุกลุกนั่งสบาย มีไฟล์ตัวอย่างทั้งหนัง เพลง ให้ได้ลองเล่น ลองใช้เยอะมากๆ ไฟล์ตัวอย่างนี่มีขนาด 1.3G เลยทีเดียว 😛 แต่สนุกครับ ทำให้เข้าใจได้เลยว่าผมไม่มีหัวด้านนี้เลย เอาเป็นว่าได้เรียนอยู่ไม่กี่ชั่วโมงแต่ทำการบ้านส่งนะครับภูมิใจมาก 😛 ไม่เคยทำพวกวิดีโอหรืองานมัลติมีเดียมาก่อน จับครั้งแรกก็บน Linux เลย จากที่เล่น Kdenlive ไม่กี่ชั่วโมงทำให้รู้ว่าโปรแกรมอย่าง Kdenlive สามารถทำอะไรได้หลายอย่าง มีพร้อมทุกฟังก์ชัน เสียง ภาพ วิดีโอ เอฟเฟกเยอะมากจนไม่รู้จะเลือกยังไง เรียกได้ว่าทำ Video แบบมือสมัครเล่นได้สบายๆ ถ้าอยากได้แบบมืออาชีพคงต้องเพาะความคิดสร้างสรรค์อีกเยอะพอสมควร เอาตัวอย่างที่ได้ทำการบ้านส่งมาให้ดูครับ เป็น Video Tutorial ประกอบเพลง

  • เปลี่ยนเลขอารบิกเป็นเลขไทยบน OpenOffice.org
  • ติดตั้ง extension แม่แบบเอกสารราชการ

ในอนาคตคงได้ทำอีก สนุกดีครับ 🙂 Continue reading ไปเรียน Kdenlive มา

จัดการ Download Speed และ Traffic ของ Apache ด้วย mod_cband

มีปัญหาเรื่อง Apache มาพอสมควรเนื่องจากมีเว็บหนึ่งใน Virtual Host มี traffic เยอะมากจนทำให้เว็บอื่นๆ ที่เป็น Virtual Host เหมือนกันเข้าไม่ได้ ได้ลองพยายามปรับแต่งทั้งโปรแกรมและส่วนอื่นๆ เช่น PHP, MySQL, CMS จนหมดแล้ว สุดท้ายต้องหาวิธีจัดการ bandwidth ของ Apache ให้ได้ ผมมีวิธีการง่ายๆ มานำเสนอ ใช้ mod_cband ครับ 🙂
mod_cband มักถูกใช้ใน hosting เนื่องจากผู้ให้บริการต้องการจำกัด bandwidth ของเว็บนั้นๆ ต่อเดือน และจำกัดความเร็วในการโหลดหน้าเว็บนั้นๆ เพื่อรักษา bandwidth โดยรวมเพื่อให้เว็บอื่นๆ เข้าใช้งานได้ปกติ ซึ่งการจำกัด bandwidth ลักษณะนี้ได้ผลดีมากเพราะสามารถกำหนดได้เป็นรายเว็บไซต์ เพื่อสร้างเงื่อนไขทางด้านราคาและการทำการตลาด น่าจะพอเห็นภาพกันบ้างแล้วทีนี้เรามาจัดการ Apache กัน อ้อเกือบลืมผมอ้างอิงกับ Ubuntu 10.04 LTS ครับ
Continue reading จัดการ Download Speed และ Traffic ของ Apache ด้วย mod_cband

Load Balance ให้ Apache โดยใช้ DNS Round Robin

บังเอิญมีปัญหาเรื่องเซิร์ฟเวอร์ตายบ่อยๆ เพราะคนเข้าเว็บเยอะจนล้น แก้ปัญหาโดยการบีบโดนการใช้ mod_cband ไม่ได้ผลเพราะจะไม่มีใครเข้าเว็บได้เลย ซึ่งอาการหนักพอสมควร กรณีนี้แก้ไขได้โดยใช้ load balancing แต่ขึ้นอยู่ว่าจะ load balance ที่ไหน มาทำความเข้าใจปัญหากันก่อนครับ ตอนนี้ Web Server มีตัวเดียว เครื่องเซิร์ฟเวอร์รองรับ load ไม่ได้มากนัก CPU/RAM เต็มบ่อยๆ จนนิ่ง ปรับแก้ไข Config แล้วก็ตายเช่นเดิม ดังนั้นแก้ไขโดนการเพิ่มเซิร์ฟเวอร์เข้าไปอีก ในกรณีนี้เลือกวิธี load balancing ที่ง่ายสุดคือใช้ DNS load balancing คือ เป็นเว็บเดียวกันแต่มีหลายเครื่องและบอก DNS ว่ามีเซิร์ฟเวอร์หลายเครื่อง หมุน IP Address เอา ลองดูตัวอย่าง Google กัน

host www.google.com

www.google.com is an alias for www.l.google.com.
www.l.google.com has address 64.233.181.105
www.l.google.com has address 64.233.181.106
www.l.google.com has address 64.233.181.147
www.l.google.com has address 64.233.181.99
www.l.google.com has address 64.233.181.103
www.l.google.com has address 64.233.181.104
Continue reading Load Balance ให้ Apache โดยใช้ DNS Round Robin

ประสบการณ์ SUN Fire V210/V240 บน Debian 5.06

ผมกับมะระ (gumara) เดินหา storage เพื่อใช้ในงาน backup เซิร์ฟเวอร์ ThaiOpenSource.org, Suriyan, Chantra และ Repository ที่อยู่ในเครื่องเดิม เนื่องจากโดนไล่ที่จาก CAT IDC มาเร่ร่อนอยู่ใน Data Center ของ SIPA เพราะไม่มีที่จะวางเครื่องจริงๆ ครับ ก็เลยทำใจให้ต้องเข้ามาที่สำนักงาน ซึ่งก็ได้โอกาส upgrade จาก Ubuntu 8.10 ไปเป็น 10.10 ไปในตัว ช่วงพักผ่อนระหว่างรอ ทีมงาน MIS ช่วยจัดการเรื่อง DMZ, Firewall, DNS ฯลฯ ก็พยายามหา share storage มาสำรองไฟล์ (เว็บ, ฐานข้อมูล, ไฟล์งาน, คลังซอฟต์แวร์) ซึ่งเสียงตอบกลับจากฝ่าย MIS ส่วนใหญ่คือ “ไม่มี!@#$@$%” แกมบอกว่ามีเครื่อง SUN อยู่ 3 ตัว ถ้าทำให้มันใช้งานได้ก็เอาไปเล้ยยยยย เหมือนหาเรื่องใส่ตัว ที่จริงแล้วไม่คิดจะยุ่งกับเจ้าเครื่อง SUN ซักเท่าไร แต่ด้วยความอยากรู้ ก็เลยจัดการซะ!
เครื่อง SUN ที่เอามาให้ผมกับมะระ คือ SUN Fire V120, V210 และ V240 ผมเคยจับ SUN มาก่อนแต่รุ่นเก่ากว่านี้มาก CPU Sparc เหมือนกับเจ้า 3 เครื่องนี้ นั่นหมายความว่าระบบปฏิบัติการที่ติดตั้งไว้เป็น Solaris 9 ตัวเครื่องยับเยินนิดหน่อย ฝาหน้าเครื่องดูหลวมๆ ปิดไม่ค่อยอยู่ ฮาร์ดิสโดนแงะแล้วใส่ไม่สนิท เลย ECC Error อยู่ตลอด ทำให้เครื่อง boot ไม่ได้ ซึ่งหลังจากพยายามยัดฮาร์ดดิสก์ได้ถูกวิธี และทำให้เครื่อง boot ได้ ก็พบกับ Solaris 9 สมใจ แต่มัน boot ไม่เรียบร้อยเพราะสาย SCSI ที่ต่อหลังเครื่อง V210 ไป V240 ไม่มี และไม่มีรหัสผ่าน Solaris ด้วย ทำให้ต้องติดตั้งกันใหม่หมด เช่นเคย มีกล่อง Solaris 9 มีคู่มือเครื่องอยู่นิดหน่อย แต่คู่มือติดตั้ง Solaris 9 ไม่มี และที่สำคัญแผ่น Solaris 9 ไม่มี! ทำให้ต้องเลือก Linux Distribution สักตัวนึงมาติดตั้งให้ได้ก่อน Linux ที่เลือกคือ Debian เพราะมีอยู่ตัวเดียวที่ใช้เป็นและสามารถติดตั้งบน CPU Sparc ได้ ปัญหาต่อมาคือทำยังไงให้มัน boot cdrom ???
ผมพยายามอยู่นาน อ่านวิธีจากคู่มือซึ่งพูดถึง service console และอื่นๆ แต่ไม่พูดถึง OpenBoot เลยสักกะตัว ได้ความช่วยเหลือจากทีมงาน Sun Microsystem ประเทศไทย ในการ break เข้าโหมด ok PROM ผมใช้คีย์บอร์ดของเครื่อง SUN กดปุ่ม Stop+A (ถ้าใช้ คีย์บอร์ดของเครื่อง PC กดปุ่ม Ctrl+Break) เพื่อ break Solaris เข้าโหมด OpenBoot หรือ ok PROM ทำให้ใช้คำสั่ง boot cdrom ได้ ปัญหาเรื่อง boot cdrom จึงหมดไป ปัญหาถัดมาคือ Software RAID สามารถใช้งานได้ แต่ V210 มีฮาร์ดดิสก์อยู่แค่ 2 ลูก ขนาด 36GB นั่นคือจะทำ RAID ก็ได้แค่ 0 กับ 1 ถ้าไม่ทำเลยก็ต้องแบ่งออกเป็น 2 ลูก กรณีนี้เครื่องไม่ทำ LVM และร้ายกว่านั้น RAID 0 ติดตั้ง SILO ไม่ได้ ทำให้ boot เครื่องไม่ได้ 😛 จึงทำได้แต่ RAID 1 ถึงจะ boot ได้ Continue reading ประสบการณ์ SUN Fire V210/V240 บน Debian 5.06