Di dunia teknologi, selalu penting untuk menjaga agar data selalu tersedia untuk memastikannya dapat diakses oleh aplikasi/pengguna. Ketersediaan tinggi dicapai di sini dengan mendistribusikan data ke beberapa volume/node.
Mesin/pengguna klien dapat mengakses penyimpanan seperti penyimpanan lokal. Setiap kali pengguna membuat data di penyimpanan Gluster, data akan dicerminkan/didistribusikan ke node penyimpanan lain.
Apa itu GlusterFS?
GlusterFS adalah sistem file jaringan sumber terbuka dan skalabel yang cocok untuk beban kerja intensif data tinggi seperti streaming media, penyimpanan cloud, dan CDN (Content Delivery Network). GlusterFS awalnya dikembangkan oleh Gluster Inc, dan kemudian oleh Redhat, sebagai hasil akuisisi.
Terminologi:
Berikut adalah terminologi penting yang kami gunakan di seluruh artikel ini.
Bata – adalah penyimpanan dasar (direktori) pada server di kumpulan penyimpanan tepercaya.
Volume – adalah kumpulan batu bata yang logis.
Kelompok – adalah sekelompok komputer yang terhubung, bekerja bersama sebagai satu komputer.
Sistem File Terdistribusi – Sistem file di mana data tersebar di beberapa node penyimpanan dan memungkinkan klien untuk mengaksesnya melalui jaringan.
Klien – adalah mesin yang memasang volume.
Server – adalah mesin tempat sistem file aktual di-host di mana data akan disimpan.
Replikasi – Membuat banyak salinan data untuk mencapai redundansi tinggi.
Sekring – adalah modul kernel yang dapat dimuat yang memungkinkan pengguna yang tidak memiliki hak istimewa membuat sistem file mereka sendiri tanpa mengedit kode kernel.
berkilau – adalah daemon yang berjalan di semua server di kumpulan penyimpanan tepercaya.
RAID – Redundant Array of Inexpensive Disks (RAID) adalah teknologi yang memberikan peningkatan keandalan penyimpanan melalui redundansi.
Volume:
Seperti yang dikatakan sebelumnya, volume adalah kumpulan batu bata, dan sebagian besar operasi kilau seperti membaca dan menulis terjadi pada volume. GlusterFS mendukung berbagai jenis volume berdasarkan persyaratan; cocok untuk menskalakan ukuran penyimpanan atau meningkatkan kinerja atau keduanya.
Pada artikel ini, kami akan mengonfigurasi volume GlusterFS yang direplikasi di Ubuntu 16.04 / Debian 8. Panduan ini juga harus berfungsi pada versi Ubuntu sebelumnya seperti Ubuntu 14.04 / Ubuntu 12.04.
Volume Glusterf yang Direplikasi seperti RAID 1 , dan volume mempertahankan salinan data yang tepat pada semua batu bata. Anda dapat menentukan jumlah replika saat membuat volume, jadi Anda harus memiliki minimal dua batu bata untuk membuat volume dengan dua replika atau tiga batu bata untuk membuat volume 3 replika.
Volume ini memberikan keandalan data dan redundansi data yang lebih baik.Mengapa tidak membaca tentang jenis volume GlusterFS yang tersisa.
Persyaratan:
Di sini, kita akan mengonfigurasi volume GlusterFS dengan dua replika. Pastikan Anda memiliki dua sistem 64bit (virtual atau fisik) dengan memori 1 GB, dan satu hard disk cadangan di setiap sistem.
Nama Inang | Alamat IP | OS | Memori | Disk | Tujuan |
---|---|---|---|---|---|
gluster1.itzgeek.local | 192.168.12.16 | Ubuntu 16.04 LTS | 1GB | /dev/sdb (5GB) | Node Penyimpanan 1 |
gluster2.itzgeek.local | 192.168.12.17 | Debian 8 | 1GB | /dev/sdb (5GB) | Simpul Penyimpanan 2 |
client.itzgeek.local | 192.168.12.8 | CentOS 7 / Debian | TIDAK | TIDAK | Mesin Klien |
Konfigurasikan DNS:
Komponen GlusterFS menggunakan DNS untuk resolusi nama, jadi konfigurasikan DNS atau atur entri host. Jika Anda tidak memiliki DNS di lingkungan Anda, ubah file /etc/hosts dan perbarui sesuai kebutuhan.
sudo vi /etc/hosts 192.168.12.16 gluster1.itzgeek.local gluster1 192.168.12.17 gluster2.itzgeek.local gluster2 192.168.12.20 client.itzgeek.local client
Tambahkan Repositori GlusterFS:
Sebelum melanjutkan ke instalasi, kita perlu mengkonfigurasi repositori GlusterFS di kedua node penyimpanan. Ikuti instruksi untuk menambahkan repositori ke sistem Anda.
Debian:
Instal paket dukungan untuk transaksi https.
sudo apt-get install -y lsb-release sudo apt-get install -y apt-transport-https
Tambahkan kunci publik untuk repositori GlusterFS.
wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | sudo apt-key add - echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/$(lsb_release -sc)/apt $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/gluster.list
Ubuntu 16.04 / 14.04:
sudo apt-get install -y software-properties-common sudo add-apt-repository ppa:gluster/glusterfs-3.8
Instal GlusterFS:
Setelah Anda menambahkan repositori di sistem Anda, kami siap untuk menginstal GlusterFS.
Perbarui cache repositori.
sudo apt-get update
Instal paket GlusterFS menggunakan perintah berikut.
sudo apt-get install -y glusterfs-server
Mulai layanan glusterfs-server di semua node gluster.
sudo service glusterfs-server start
Pastikan layanan glusterfs berjalan dengan baik.
raj@gluster1:~$ sudo service glusterfs-server status ● glusterfs-server.service - LSB: GlusterFS server Loaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled) Active: active (running) since Sat 2016-09-24 21:47:20 IST; 1min 6s ago Docs: man:systemd-sysv-generator(8) Process: 1570 ExecStop=/etc/init.d/glusterfs-server stop (code=exited, status=0/SUCCESS) Process: 1664 ExecStart=/etc/init.d/glusterfs-server start (code=exited, status=0/SUCCESS) Tasks: 7 (limit: 512) Memory: 25.5M CPU: 3.552s CGroup: /system.slice/glusterfs-server.service └─1673 /usr/sbin/glusterd -p /var/run/glusterd.pid Sep 24 21:47:16 gluster1.itzgeek.local systemd[1]: Starting LSB: GlusterFS server... Sep 24 21:47:16 gluster1.itzgeek.local glusterfs-server[1664]: * Starting glusterd service glusterd Sep 24 21:47:20 gluster1.itzgeek.local glusterfs-server[1664]: ...done. Sep 24 21:47:20 gluster1.itzgeek.local systemd[1]: Started LSB: GlusterFS server.
Konfigurasikan Firewall:
Anda perlu menonaktifkan firewall atau mengonfigurasi firewall untuk mengizinkan semua koneksi dalam sebuah cluster.
sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT
Tambahkan Penyimpanan:
Dengan asumsi bahwa Anda memiliki satu hard disk cadangan di mesin Anda, /dev/sdb adalah yang akan saya gunakan di sini untuk batu bata. Buat satu partisi pada hard disk cadangan seperti di bawah ini.
Anda perlu melakukan langkah-langkah di bawah ini pada kedua node.
sudo fdisk /dev/sdb
Format partisi yang dibuat dengan sistem file pilihan Anda.
sudo mkfs.ext4 /dev/sdb1
Pasang disk pada direktori bernama /data/gluster .
sudo mkdir -p /data/gluster sudo mount /dev/sdb1 /data/gluster
Tambahkan entri ke /etc/fstab untuk menjaga mount tetap ada saat reboot.
echo "/dev/sdb1 /data/gluster ext4 defaults 0 0" | sudo tee --append /etc/fstab
Konfigurasi GlusterFS di Ubuntu 16.04:
Sebelum membuat volume, kita perlu membuat kumpulan penyimpanan tepercaya dengan menambahkan gluster2.itzgeek.local . Anda dapat menjalankan perintah konfigurasi GlusterFS di salah satu server di cluster yang akan menjalankan perintah yang sama di semua server lainnya.
Di sini saya akan menjalankan semua perintah GlusterFS di gluster1.itzgeek.local simpul.
raj@gluster1:~$ sudo gluster peer probe gluster2.itzgeek.local peer probe: success.
Verifikasi status kumpulan penyimpanan tepercaya.
raj@gluster1:~$ sudo gluster peer status Number of Peers: 1 Hostname: gluster2.itzgeek.local Uuid: 51470928-dfa8-42e1-a221-d7bbcb8c13bd State: Peer in Cluster (Connected)
Buat daftar kumpulan penyimpanan.
raj@gluster1:~$ sudo gluster pool list UUID Hostname State 51470928-dfa8-42e1-a221-d7bbcb8c13bd gluster2.itzgeek.local Connected dc7c1639-d21c-4adf-b28f-5150229e6980 localhost Connected
Mengatur Volume GlusterFS:
Buat bata (direktori) bernama “gvol0 ” di sistem file yang terpasang di kedua node.
sudo mkdir -p /data/gluster/gvol0
Karena kita akan menggunakan volume yang direplikasi, maka buatlah volume dengan nama “gvol0 ” dengan dua replika.
raj@gluster1:~$ sudo gluster volume create gvol0 replica 2 gluster1.itzgeek.local:/data/gluster/gvol0 gluster2.itzgeek.local:/data/gluster/gvol0 volume create: gvol0: success: please start the volume to access data
Mulai volumenya.
raj@gluster1:~$ sudo gluster volume start gvol0 volume start: gvol0: success
Periksa status volume yang dibuat.
raj@gluster1:~$ sudo gluster volume info gvol0 Volume Name: gvol0 Type: Replicate Volume ID: ca102e4b-6cd1-4d9d-9c5a-03b882c76da0 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: gluster1.itzgeek.local:/data/gluster/gvol0 Brick2: gluster2.itzgeek.local:/data/gluster/gvol0 Options Reconfigured: transport.address-family: inet performance.readdir-ahead: on nfs.disable: on
Siapkan Klien GlusterFS:
Instal glusterfs-client paket untuk mendukung pemasangan sistem file GlusterFS. Jalankan semua perintah sebagai root pengguna.
$ su - ### CentOS / RHEL ### yum install -y glusterfs-client ### Ubuntu / Debian ### apt-get install -y glusterfs-client
Buat direktori untuk memasang sistem file GlusterFS.
mkdir -p /mnt/glusterfs
Sekarang, pasang sistem file GlusterFS ke /mnt/glusterfs menggunakan perintah berikut.
mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt/glusterfs
Anda juga dapat menggunakan gluster2.itzgeek.local bukannya gluster1.itzgeek.com pada perintah di atas.
Verifikasi sistem file GlusterFS yang terpasang.
[root@client ~]# df -hP /mnt/glusterfs Filesystem Size Used Avail Use% Mounted on gluster1.itzgeek.local:/gvol0 4.8G 11M 4.6G 1% /mnt/glusterfs
Anda juga dapat menggunakan perintah di bawah ini untuk memverifikasi sistem file GlusterFS.
[root@client ~]# cat /proc/mounts rootfs / rootfs rw 0 0 sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=490448k,nr_inodes=122612,mode=755 0 0 securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0 tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0 devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0 tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0 cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0 pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0 cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0 cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0 cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0 cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0 cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0 cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0 cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0 cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0 cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0 configfs /sys/kernel/config configfs rw,relatime 0 0 /dev/mapper/centos-root / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0 selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0 systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0 hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0 /dev/mapper/centos-home /home xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0 /dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0 tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=100136k,mode=700 0 0 gluster1.itzgeek.local:/gvol0 /mnt/glusterfs fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0 fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
Tambahkan entri di bawah ini ke /etc/fstab untuk dipasang secara otomatis selama boot sistem.
gluster1.itzgeek.local:/gvol0 /mnt/glusterfs glusterfs defaults,_netdev 0 0
Uji Replikasi GlusterFS dan Ketersediaan Tinggi:
Sisi Server GlusterFS:
Untuk memeriksa replikasi, pasang volume GlusterFS yang dibuat pada node penyimpanan yang sama.
raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt raj@gluster2:~$ sudo mount -t glusterfs gluster2.itzgeek.local:/gvol0 /mnt
Data di dalam /mnt direktori kedua node akan selalu sama (replikasi).
Sisi Klien GlusterFS:
Mari buat beberapa file pada sistem file yang terpasang di client.itzgeek.local.
touch /mnt/glusterfs/file1 touch /mnt/glusterfs/file2
Verifikasi file yang dibuat.
[root@client ~]# ll /mnt/glusterfs/ total 0 -rw-r--r--. 1 root root 0 Sep 26 11:22 file1 -rw-r--r--. 1 root root 0 Sep 26 11:22 file2
Uji kedua node GlusterFS apakah keduanya memiliki data yang sama di dalam /mnt .
raj@gluster1:~$ ll /mnt/ total 12 drwxr-xr-x 4 root root 4096 Sep 26 20:52 ./ drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../ -rw-r--r-- 1 root root 0 Sep 26 20:52 file1 -rw-r--r-- 1 root root 0 Sep 26 20:52 file2 raj@gluster2:~$ ls -al /mnt/ total 12 drwxr-xr-x 4 root root 4096 Sep 26 06:30 . drwxr-xr-x 23 root root 4096 Sep 24 08:39 .. -rw-r--r-- 1 root root 0 Sep 26 2016 file1 -rw-r--r-- 1 root root 0 Sep 26 2016 file2
Seperti yang Anda ketahui, kami telah memasang volume GlusterFS dari gluster1.itzgeek.local di client.itzgeek.local , sekarang saatnya untuk menguji ketersediaan volume yang tinggi dengan mematikan node.
raj@gluster1:~$ sudo poweroff
Sekarang uji ketersediaan file, Anda akan melihat file yang kami buat baru-baru ini meskipun node sedang down.
[root@client ~]# ll /mnt/glusterfs/ total 0 -rw-r--r--. 1 root root 0 Sep 26 11:22 file1 -rw-r--r--. 1 root root 0 Sep 26 11:22 file2Anda mungkin mengalami kelambatan dalam menjalankan perintah pada sistem file GlusterFS yang dipasang karena peralihan GlusterFS ke gluster2.itzgeek.local ketika client.itzgeek.local tidak dapat menjangkau gluster1.itzgeek.local .
Buat beberapa file lagi di sistem file GlusterFS untuk memeriksa replikasi.
touch /mnt/glusterfs/file3 touch /mnt/glusterfs/file4
Verifikasi jumlah file.
[root@client ~]# ll /mnt/glusterfs/ total 0 -rw-r--r--. 1 root root 0 Sep 26 11:22 file1 -rw-r--r--. 1 root root 0 Sep 26 11:22 file2 -rw-r--r--. 1 root root 0 Sep 26 11:26 file3 -rw-r--r--. 1 root root 0 Sep 26 11:26 file4
Sejak gluster1 tidak aktif, semua data Anda sekarang ditulis di gluster2.itzgeek.local karena Ketersediaan Tinggi. Sekarang nyalakan node1 (gluster1.itzgeek.local ).
Periksa /mnt dari gluster1.itzgeekk.local; Anda akan melihat keempat file di direktori, ini mengonfirmasi bahwa replikasi berfungsi seperti yang diharapkan.
raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt [sudo] password for raj: raj@gluster1:~$ ll /mnt/ total 12 drwxr-xr-x 4 root root 4096 Sep 26 20:59 ./ drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../ -rw-r--r-- 1 root root 0 Sep 26 20:52 file1 -rw-r--r-- 1 root root 0 Sep 26 20:52 file2 -rw-r--r-- 1 root root 0 Sep 26 20:56 file3 -rw-r--r-- 1 root root 0 Sep 26 20:56 file4
Itu saja.