การทำ Distributed Replicated Volume นั้นเหมาะสำหรับการ Scale Storage ที่ง่ายและมีการ Replicate ไว้เผื่อในกรณีที่ไฟล์มีปัญหาเราจะได้มีอีก 1 หรือหลาย copy เก็บไว้ด้วย

ก่อนอื่นให้ติดตั้ง GlusterFS กันก่อนโดยหากใครติดตั้งเรียบร้อยแล้วสามารถข้ามไปในส่วนของการทำ Distributed Replicated ได้เลย GlusterFS เป็น Clustered File System ดังนั้นการติดตั้งเราจะต้องติดตั้ง GlusterFS ลงบน Ubuntu Server ตั้งแต่ 2 เครื่องขึ้นไป ซึ่งในกรณีการทำ Distributed Replicated นั้นจำเป็นที่จะต้องมี Server ตั้งแต่ 4 เครื่องขึ้นไป โดยการติดตั้ง GlusterFS บน Ubuntu 14.04 Server นั้นสามารถทำได้โดยติดตั้งผ่าน package manager ได้ทันที การติดตั้ง GlusterFS นั้นสามารถทำได้ง่ายๆ โดยการติดตั้งผ่าน package manager แต่ก่อนที่จะลงมือติดตั้ง GlusterFS มาดูโครงสร้างพื้นฐานที่ต้องใช้กันก่อน โดยเรามีเครื่อง Ubuntu Server 4 เครื่อง ดังนี้

  • node1 มี IP Address เป็น 192.168.1.100
  • node2 มี IP Address เป็น 192.168.1.101
  • node3 มี IP Address เป็น 192.168.1.102
  • node4 มี IP Address เป็น 192.168.1.103

ให้ติดตั้ง Gluster Server ทั้ง 4 เครื่องด้วยคำสั่งซึ่งสามารถทำได้ดังนี้

sudo apt-get install glusterfs-server

โดยเมื่อติดตั้งเสร็จแล้ว หากเราลองรันคำสั่ง glusterfs –version จะต้องได้ผลลัพธ์ดังนี้ (ต่างกันที่ชื่อ host เท่านั้น)

ถ้าได้ผลลัพธ์ออกมาเหมือนด้านบนแสดงว่าติดตั้ง GlusterFS เสร็จสมบูรณ์แล้ว ต่อไปเราจะมา Add Server แต่ละตัวเข้า Storage Pool กันโดยก่อนอื่น เราต้องทำให้แต่ละเครื่องรู้จักกันเสียก่อนโดยไปจัดการที่ไฟล์ /etc/hosts

ให้แก้ไขไฟล์ที่ /etc/hosts แต่ละเครื่องดังนี้

node1

127.0.0.1 localhost
127.0.0.1 node1
192.168.1.100 node1.example.com gluster1
192.168.1.101 node2.example.com gluster2
192.168.1.102 node3.example.com gluster3
192.168.1.103 node4.example.com gluster4

node2

127.0.0.1 localhost
127.0.0.1 node2
192.168.1.100 node1.example.com gluster1
192.168.1.101 node2.example.com gluster2
192.168.1.102 node3.example.com gluster3
192.168.1.103 node4.example.com gluster4

node3

127.0.0.1 localhost
127.0.0.1 node3
192.168.1.100 node1.example.com gluster1
192.168.1.101 node2.example.com gluster2
192.168.1.102 node3.example.com gluster3
192.168.1.103 node4.example.com gluster4

node4

127.0.0.1 localhost
127.0.0.1 node4
192.168.1.100 node1.example.com gluster1
192.168.1.101 node2.example.com gluster2
192.168.1.102 node3.example.com gluster3
192.168.1.103 node4.example.com gluster4

โดยเมื่อเราแก้ไขไฟล์ /etc/hosts แล้วเราควรจะสามารถ ping แต่ละเครื่องกันเจอ จากนั้นเราจะมา Add แต่ละ Server เข้าไปใน Pool ด้วยคำสั่งดังนี้

node1
admins@node1:~$ sudo gluster peer probe gluster1
peer probe: success: on localhost not needed
admins@node1:~$ sudo gluster peer probe gluster2
peer probe: success
admins@node1:~$ sudo gluster peer probe gluster3
peer probe: success
admins@node1:~$ sudo gluster peer probe gluster4
peer probe: success

node2
admins@node2:~$ sudo gluster peer probe gluster1
peer probe: success
admins@node2:~$ sudo gluster peer probe gluster2
peer probe: success: on localhost not needed
admins@node1:~$ sudo gluster peer probe gluster3
peer probe: success: host gluster3 port 24007 already in peer list
admins@node1:~$ sudo gluster peer probe gluster4
peer probe: success: host gluster4 port 24007 already in peer list

node3
admins@node3:~$ sudo gluster peer probe gluster1
peer probe: success
admins@node3:~$ sudo gluster peer probe gluster2
peer probe: success: host gluster2 port 24007 already in peer list
admins@node3:~$ sudo gluster peer probe gluster3
peer probe: success: on localhost not needed
admins@node3:~$ sudo gluster peer probe gluster4
peer probe: success: host gluster4 port 24007 already in peer list

node4
admins@node4:~$ sudo gluster peer probe gluster1
peer probe: success: host gluster1 port 24007 already in peer list
admins@node4:~$ sudo gluster peer probe gluster2
peer probe: success: host gluster2 port 24007 already in peer list
admins@node4:~$ sudo gluster peer probe gluster3
peer probe: success: host gluster3 port 24007 already in peer list
admins@node4:~$ sudo gluster peer probe gluster4
peer probe: success: on localhost not needed

จะสังเกตได้ว่าไม่จำเป็นต้องสั่ง peer probe เครื่องตัวเอง และในบางกรณีหากตัว GlusterFS มีการ update ไปยัง node ปลายทางแล้ว การ probe ก็จะฟ้องว่า already in peer list แล้วด้วยโดยเมื่อ Add Server แล้วให้ลองรันคำสั่ง gluster peer status ดูเพื่อตรวจสอบความถูกต้องดังนี้

node1

node2

node3

node4

หากได้ผลลัพธ์ตามด้านบน แสดงว่า Add Server เสร็จสมบูรณ์แล้ว

การสร้าง Distributed Replicated Volume

เราจะ Replicate เป็นจำนวน 2 ชุดด้วยกัน ซึ่งหากต้องการ Replicate มากว่า 2 ชุดก็สามารถทำได้ โดยให้เพิ่ม Server Storage เป็นจำนวนเท่ากับจำนวนที่จะ Replicate นั่นเอง

การสร้าง Volume แบบ Distributed Replicated ทำได้โดยไปที่ node1 แล้วสั่ง Create Volume ดังนี้

admins@node1:~$ sudo gluster volume create volume-distributed-replicated replica 2 transport tcp gluster1:/vdr gluster2:/vdr gluster3:/vdr gluster4:/vdr force
volume create: volume-distributed-replicated: success: please start the volume to access data

เมื่อสร้าง Volume เสร็จแล้วต่อมาก็ให้สั่ง Start Volume

admins@node1:~$ sudo gluster volume start volume-distributed-replicated
volume start: volume-distributed-replicated: success

จากนั้นเราจะมาลองให้ทาง client mount gluster ดูและลองใส่ไฟล์ เพื่อดูผลลัพธ์ดังนี้ ที่เครื่อง client ให้ mount ไปยัง volume-distributed-replicated

admins@client:~$ sudo mount -t glusterfs gluster1:/volume-distributed-replicated /mnt/glusterfs/

ลองสร้างไฟล์ที่ /mnt/glusterfs ดูดังนี้

admins@client:~$ cd /mnt/glusterfs/
admins@client:/mnt/glusterfs$ sudo touch file1.txt
admins@client:/mnt/glusterfs$ sudo touch file2.txt
admins@client:/mnt/glusterfs$ sudo touch file3.txt
admins@client:/mnt/glusterfs$ sudo touch file4.txt

เมื่อลองไปดูที่แต่ละ Server จะได้ผลลัพธ์ดังนี้

node1

node2

node3

node4

จะเห็นได้ว่าจะมี node ที่เป็นคู่กันเช่น node1 กับ node2, node3 กับ node4 ที่ทำหน้าที่ replicate กันอยู่

รูปภาพจาก : https://github.com/gluster/glusterfs

Comments are closed.