การทำ 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 ดูเพื่อตรวจสอบความถูกต้องดังนี้
หากได้ผลลัพธ์ตามด้านบน แสดงว่า 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