วันอังคารที่ 10 เมษายน พ.ศ. 2555

สร้าง 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) ดูได้จากแผนที่ผู้ใช้งานครับ (http://www.gluster.org/gluster-users/#formHtml)



สำหรับการใช้งาน GlusterFS ก็เหมือนเดิมคือจะต้องมี Node ทำหน้าที่เป็นชุด Storage หากต้องการเพิ่มพื้นที่เก็บข้อมูลก็เพิ่ม Node ให้มากขึ้น และจะต้องมีส่วน Gluster Client เพื่อเป็นจุดเชื่อมต่อกับ Node ต่างๆ ที่มีอยู่ในระบบ ขอไม่เขียนแผนภาพนะครับ :P วิธีการติดตั้งก็ง่ายมาก เราต้องเริ่มต้นที่ 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 เอาไว้ใช้งานแล้วครับ :)


ไม่มีความคิดเห็น:

แสดงความคิดเห็น