สร้าง Distributed Storage + HA ด้วย GlusterFS

อาทิตย์นี้ยังอยู่ในช่วงย้อนอดีตครับ ผมได้เล่น Gluster Platform ตั้งแต่ผลิตภัณฑ์นี้ยังไม่ได้โดนซื้อจาก RedHat ซึ่ง Gluster Platform ทำ Distributed Storage ได้ง่ายมาก และไม่ได้มีความซับซ้อนมากมายนัก เครื่องมือที่ใช้ก็แสนจะธรรมดา แต่ได้ผลลัพท์ที่ดีเยี่ยม ประกอบกับการประยุกต์ใช้งานได้หลากหลาย ทำให้ Gluster Platform เป็นเครื่องมือสร้าง Distributed Storage ที่เพิ่มจำนวนและขนาดได้ตามที่เราต้องการได้ง่ายและผมก็ชอบมากๆ ตอนนี้ Gluster Platform รวมอยู่ในผลิตภัณฑ์ของ RedHat เรียบร้อยแล้วในชื่อ RedHat Storage สำหรับชุมชนโอเพนซอร์สอาจไม่ได้จับ Gluster Platform ตรงๆ นัก เพราะเป็น Commercial แต่จะได้จับ GlusterFS แทน ซึ่งมีความยุ่งยากมากกว่ากันพอสมควร ซึ่งในปัจจุบันก็ไม่ได้ยุ่งยากมากเท่าไรนัก อ้อเกือบลืมไปในประเทศไทยมีคนใช้ GlusterFS เพิ่มขึ้นด้วย (Tarad.com และ AIT) ดูได้จากแผนที่ผู้ใช้งานครับ
สำหรับการใช้งาน GlusterFS ก็เหมือนเดิมคือจะต้องมี Node ทำหน้าที่เป็นชุด Storage หากต้องการเพิ่มพื้นที่เก็บข้อมูลก็เพิ่ม Node ให้มากขึ้น และจะต้องมีส่วน Gluster Client เพื่อเป็นจุดเชื่อมต่อกับ Node ต่างๆ ที่มีอยู่ในระบบ ขอไม่เขียนแผนภาพนะครับ 😛 วิธีการติดตั้งก็ง่ายมาก เราต้องเริ่มต้นที่ Node ก่อน Node จะต้องมีอย่างต่ำ 2 ตัว และ Gluster Client อีก 1 ตัว ดังนั้นเราจะมีเครื่องดังนี้

gluster1.redlinesoft.net มี IP Address เป็น 192.168.10.13
gluster2.redlinesoft.net มี IP Address เป็น 192.168.10.14
client.redlinesoft.net มี IP Address เป็น 192.168.10.15

สำหรับเครื่องทุกเครื่องติดตั้ง Ubuntu Server มีแค่ openssh-server ก็พอครับ อย่าลืมแบ่งพื้นที่ /data ให้มีขนาดเท่าๆ กัน ทั้ง 2 เครื่อง เพื่อเอาไว้เก็บข้อมูล หากในระบบเครือข่ายมี Local DNS อยู่แล้วก็ง่ายครับ แต่ถ้าไม่มีเราก็ไปใส่ไว้ในไฟล์ /etc/hosts ดังนี้

192.168.10.13        gluster1.redlinesoft.net        gluster1
192.168.10.14        gluster2.redlinesoft.net        gluster2
192.168.10.15        client.redlinesoft.net        client

เครื่อง Gluster 1 แลพ Gluster 2 ติดตั้ง glusterfs-server โดยใช้คำสั่ง

sudo apt-get install glusterfs-server

จากนั้นเราต้องบอกให้ Gluster 1 รู้ว่า Gluster 2 เป็น trusted storage ดังนี้

gluster peer probe gluster1.redlinesoft.net

จากนั้นดูสถานะของ trusted storage ด้วยคำสั่ง

gluster peer status

เราจะพบว่ามี trusted storage เพิ่มเข้ามาแล้ว ทีนี้มาสร้าง Volumn กันครับ ใช้คำสั่ง

gluster volume create testvol replica 2 transport tcp gluster1.redlinesoft.net:/data gluster2.redlinesoft.net:/data

คำสั่งข้างต้นจะสร้าง volume ชื่อ testvol เป็นแบบ replicate เลข 2 คือจำนวนเครื่องที่เป็น Node เมื่อสร้าง volume ได้แล้วให้เริ่มการทำงานของ volume นี้โดยใช้คำสั่ง

gluster volume start testvol

ให้ตรวจสอบการทำงาน daemon ของ glusterfs ด้วยคำสั่ง netstat ของทั้ง 2 Node ว่า glusterfsd ทำงานอยู่ หากไม่พบ glusterfsd ทำงานให้ restart glsterfs daemon ใหม่ที่ /etc/init.d/glusterfs-server
กลับมาที่เครื่อง Gluster 1 ให้ดูสถานะของ volume ของเราด้วยคำสั่ง

gluster volume info

จะพบว่าเรามี testvol เป็น volume หลักและมี brick 2 node คือ gluster1.redlinesoft.net:/data และ gluster2.redlinesoft.net:/data ถือว่าเป็นอันเสร็จเรียบร้อย
จากนั้นกำหนดสิทธิ์ให้เครื่อง client (192.168.10.15) เชื่อมต่อกับ volume ของเรากันครับ ใช้คำสั่ง

gluster volume set testvol auth.allow 192.168.10.15

ใช้คำสั่ง gluster volume info อีกรอบเราจะพบว่า เครื่อง client (192.168.10.15) ได้รับอนุญาติให้ใช้ volume ที่ชื่อ testvol นี้ได้แล้ว
กลับไปที่เครื่อง client ติดตั้ง glusterfs-client ดังนี้

sudo apt-get install glusterfs-client

สร้าง directory สำหรับเป็นจุด mount ที่ /mnt/glusterfs ให้ทดสอบ mount ดเวยคำสั่ง

mount -t glusterfs gluster1.redlinesoft.net:/testvol /mnt/glusterfs

ให้ใช้คำสั่ง mount เพื่อตรวจสอบว่าเครื่อง client ได้เชื่อมต่อไปยัง Gluster 1 เรียบร้อยแล้วหรือยัง และใช้คำสั่ง df เพื่อดูพื้นที่ที่สามารถใช้งานได้ สำหรับการ mount ไปที่ distributed storage ทุกครั้งที่ boot เครื่อง ให้แก้ไชไฟล์ /etc/fstab โดยเพิ่มข้อมูลลงไปดังนี้

gluster1.redlinesoft.net:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0

เท่านี้เราก็ได้ Distributed Storage + HA เอาไว้ใช้งานแล้วครับ 🙂

รวมพื้นที่ 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