GNU/Linux >> Belajar Linux >  >> Debian

Penyimpanan Ketersediaan Tinggi dengan GlusterFS di Debian 8 - Mencerminkan di dua server penyimpanan

Tutorial ini menunjukkan cara menyiapkan penyimpanan dengan ketersediaan tinggi dengan dua server penyimpanan (Debian Jessie) yang menggunakan GlusterFS. Setiap server penyimpanan akan menjadi cermin dari server penyimpanan lainnya, dan file akan direplikasi secara otomatis di kedua node penyimpanan. Sistem klien (Debian 8 juga) akan dapat mengakses penyimpanan seolah-olah itu adalah sistem file lokal. GlusterFS adalah sistem file berkerumun yang mampu menskalakan hingga beberapa peta-byte. Ini menggabungkan berbagai bata penyimpanan melalui Infiniband RDMA atau TCP/IP interkoneksi ke dalam satu sistem file jaringan paralel yang besar. Bata penyimpanan dapat dibuat dari perangkat keras komoditas apa pun seperti server x86_64 dengan RAID SATA-II dan HBA Infiniband.

1 Catatan Awal

Dalam tutorial ini, saya akan menggunakan tiga sistem, dua server dan satu klien:

  • server1.example.com:alamat IP 192.168.1.100 (server)
  • server2.example.com:alamat IP 192.168.1.101 (server)
  • klien1.contoh.com:Alamat IP 192.168.1.102 (klien)

Ketiga sistem harus dapat menyelesaikan nama host sistem lain. Jika ini tidak dapat dilakukan melalui DNS, Anda harus mengedit file /etc/hosts sehingga terlihat seperti berikut pada ketiga sistem:

nano /etc/hosts
127.0.0.1 localhost
192.168.1.100 server1.example.com server1
192.168.1.101 server2.example.com server2
192.168.1.102 client1.example.com client1


# Baris berikut diperlukan untuk host yang mendukung IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouter

(Dimungkinkan juga untuk menggunakan alamat IP alih-alih nama host dalam pengaturan berikut. Jika Anda lebih suka menggunakan alamat IP, Anda tidak perlu peduli apakah nama host dapat diselesaikan atau tidak.)

2 Menyiapkan Server GlusterFS

server1.example.com/server2.example.com:

Versi GlusterFS terbaru tersedia sebagai paket Debian dari gluster.org. Kita dapat menginstalnya sebagai berikut:

Kami menambahkan kunci publik dari repositori Debian gluster.org di kedua server.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key tambahkan -

Kemudian tambahkan repositori GlusterFS (perintahnya adalah satu baris!)

echo deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main> /etc/apt/sources.list.d/gluster.list 

dan perbarui daftar repositori.

apt-get update

Sekarang kita dapat menginstal perangkat lunak server GlusterFS dengan apt.

apt-get -y install glusterfs-server

Perintah

glusterfsd --version

sekarang harus menunjukkan versi GlusterFS yang baru saja Anda instal (3.7.9 dalam kasus ini):

[dilindungi email]:/# glusterfsd --version
glusterfs 3.7.9 dibuat pada 23 Mar 2016 05:24:49
Revisi repositori:git://git.gluster.com/glusterfs .git
Hak Cipta (c) 2006-2013 Red Hat, Inc.
GlusterFS hadir dengan BENAR-BENAR TANPA JAMINAN.
Ini dilisensikan kepada Anda di bawah pilihan Anda dari GNU Lesser
Lisensi Publik Umum, versi 3 atau versi yang lebih baru (LGPLv3
atau lebih baru), atau Lisensi Publik Umum GNU, versi 2 (GPLv2),
dalam semua kasus seperti yang dipublikasikan oleh Free Software Foundation.
[email protected]:/#

Jika Anda menggunakan firewall, pastikan port TCP 111, 24007, 24008, 24009-(24009 + jumlah brick di semua volume) terbuka di server1.example.com dan server2.example.com.

Glusterfs akan menyimpan datanya di direktori /data di server. Lokasi ini dapat berupa direktori normal jika Anda memiliki instalasi yang lebih kecil atau Anda menggunakan partisi hard disk terpisah dan memasangnya sebagai /data.

Jalankan di kedua server:

mkdir /data

untuk membuat direktori data.

Selanjutnya, kita harus menambahkan server2.example.com ke kumpulan penyimpanan tepercaya (harap dicatat bahwa saya menjalankan semua perintah konfigurasi GlusterFS dari server1.example.com, tetapi Anda juga dapat menjalankannya dari server2.example.com karena konfigurasi direplikasi di antara node GlusterFS - pastikan Anda menggunakan nama host atau alamat IP yang benar):

server1.example.com:

Di server1.example.com, jalankan

server probe peer gluster2.example.com
[email protected]:/# gluster peer probe server2.example.com
peer probe:sukses.
[email protected]:/#

Status kumpulan penyimpanan tepercaya sekarang harus serupa dengan ini:

status rekan gluster
[email protected]:/# gluster peer status
Jumlah Peer:1
Hostname:server2.example.com
Uuid:0f7ee46c-6a71-4a31-91d9-6076707eff95
State:Peer in Cluster (Connected)
[email protected]:/#

Selanjutnya kita buat share bernama testvol dengan dua replika (harap diperhatikan bahwa jumlah replika sama dengan jumlah server dalam hal ini karena kita ingin mengatur mirroring) pada server1.example.com dan server2.example.com di /data/testvol direktori (ini akan dibuat jika tidak ada):

volume gluster buat replika testvol 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force
[email protected]:/# gluster volume create testvol replica 2 transport tcp server1.example.com:/data/testvol server2.example.com:/data/testvol force
volume create:testvol:success:silakan mulai volume untuk mengakses data
[email protected]:/#

Mulai volume:

volume gluster mulai testvol
[email protected]:/# gluster volume start testvol
volume start:testvol:success
[email protected]:/#

Volume pengujian kami telah dimulai dengan sukses.

Ada kemungkinan bahwa perintah di atas memberitahu Anda bahwa tindakan itu tidak berhasil:

[email protected]:~# gluster volume start testvol
Starting volume testvol tidak berhasil
[email protected]:~#

Dalam hal ini Anda harus memeriksa output dari...

server1.example.com/server2.example.com:

netstat -ketuk | grep glusterfsd

di kedua server.

Jika Anda mendapatkan output seperti ini...

[dilindungi email]:/# netstat -tap | grep glusterfsd
tcp 0 0 *:49152 *:* DENGARKAN 8007/glusterfsd
tcp 0 0 server1.example.c:65533 server1.example.c:24007 DIDIRIKAN 8007/glusterfsd
tcp 0 0 server1.example.c:49152 server2.example.c:65531 DIDIRIKAN 8007/glusterfsd
tcp 0 0 server1.example.c:49152 server1.example.c:65532 DIDIRIKAN 8007/glusterfsd
tcp 0 0 server1.example.c:49152 server1.example.c:65531 DIDIRIKAN 8007/glusterfsd
tcp 0 0 server1.example.c:49152 server2.example.c:65526 ​​DIDIRIKAN 8007/glusterfsd
[email dilindungi]:/#

... semuanya baik-baik saja, tetapi jika Anda tidak mendapatkan hasil apa pun...

[email protected]:~# netstat -tap | grep glusterfsd
[email protected]:~#

... restart daemon GlusterFS di server yang sesuai (server1.example.com dalam kasus ini):

server2.example.com:

layanan glusterfs-server restart

Kemudian periksa output dari...

netstat -ketuk | grep glusterfsd

... lagi di server itu - sekarang akan terlihat seperti ini:

[dilindungi email]:/# netstat -tap | grep glusterfsd
tcp 0 0 *:49152 *:* DENGARKAN 7852/glusterfsd
tcp 0 0 server2.example.c:49152 server2.example.c:65532 DIDIRIKAN 7852/glusterfsd
tcp 0 0 server2.example.c:49152 server1.example.c:65526 ​​DIDIRIKAN 7852/glusterfsd
tcp 0 0 server2.example.c:49152 server2.example.c:65525 DIDIRIKAN 7852/glusterfsd
tcp 0 0 server2.example.c:65533 server2.example.c:24007 DIDIRIKAN 7852/glusterfsd
tcp 0 0 server2.example.c:49152 server1.example.c:65524 DIDIRIKAN 7852/glusterfsd
[email dilindungi]:/#

Sekarang kembali ke server1.example.com:

server1.example.com:

Anda dapat memeriksa status volume dengan perintah

info volume kilau
[email protected]:/# info volume gluster
Nama Volume:testvol
Jenis:Replika
ID Volume:3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Status:Dimulai
Jumlah Batu Bata:1 x 2 =2
Jenis transportasi:tcp
Bata:
Brick1:server1.example.com:/data/testvol
Brick2:server2.example.com:/data/testvol
Opsi Dikonfigurasi Ulang:
performance.readdir-ahead:on
[email protected]:/#

Secara default, semua klien dapat terhubung ke volume. Jika Anda hanya ingin memberikan akses ke client1.example.com (=192.168.1.102), jalankan:

set volume gluster testvol auth.allow 192.168.1.102
[email protected]:/# gluster volume set testvol auth.allow 192.168.1.102
volume set:sukses
[email protected]:/#

Harap perhatikan bahwa Anda dapat menggunakan karakter pengganti untuk alamat IP (seperti 192.168.*) dan Anda dapat menentukan beberapa alamat IP yang dipisahkan dengan koma (mis. 192.168.1.102,192.168.1.103).

Info volume sekarang harus menunjukkan status yang diperbarui:

info volume kilau

[dilindungi email]:/# info volume gluster

Nama Volume:testvol
Jenis:Replika
ID Volume:3fc9af57-ca56-4a72-ad54-3d2ea03e5883
Status:Dimulai
Jumlah Batu Bata:1 x 2 =2
Jenis transportasi:tcp
Bata:
Brick1:server1.example.com:/data/testvol
Brick2:server2.example.com:/data/testvol
Opsi Dikonfigurasi Ulang:
auth.allow:192.168.1.102
performance.readdir-ahead:on
[email protected]:/#

3 Menyiapkan Klien GlusterFS

client1.example.com:

Pada sistem klien kami menambahkan kunci publik dari repositori Debian gluster.org terlebih dahulu.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key tambahkan -

Kemudian tambahkan repositori GlusterFS (perintahnya adalah satu baris!)

echo deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main> /etc/apt/sources.list.d/gluster.list 

dan perbarui daftar repositori.

apt-get update

Sekarang kita dapat menginstal klien GlusterFS sebagai berikut.

apt-get -y install glusterfs-client

Kemudian kita buat direktori berikut:

mkdir /mnt/glusterfs

Itu dia! Sekarang kita dapat me-mount filesystem GlusterFS ke /mnt/glusterfs dengan perintah berikut:

mount.glusterfs server1.example.com:/testvol /mnt/glusterfs

(Alih-alih server1.example.com Anda juga dapat menggunakan server2.example.com dalam perintah di atas!)

Anda sekarang akan melihat bagian baru di output...

pasang
[email protected]:/# mount
sysfs di /sys ketik sysfs (rw,nosuid,nodev,noexec,relatime)
proc di /proc ketik proc (rw,nosuid,nodev,noexec ,relatime)
udev pada /dev ketik devtmpfs (rw,relatime,size=10240k,nr_inodes=125556,mode=755)
devpts pada /dev/pts ketik devpts (rw,nosuid,noexec,relatime ,gid=5,mode=620,ptmxmode=000)
tmpfs on /run ketik tmpfs (rw,nosuid,relatime,size=204220k,mode=755)
/dev/sda1 on / ketik ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs pada /sys/kernel/jenis keamanan securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs di /dev/shm ketik tmpfs (rw,nosuid,nodev)
tmpfs aktif /run/lock ketik tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs di /sys/fs/cgroup ketik tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup pada /sys/fs/cgroup/systemd ketik cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd -cgroups-agent,name=systemd)
pstore di /sys/fs/pstore ketik pstore (rw,nosuid,nodev,noexec,rel atime)
cgroup di /sys/fs/cgroup/cpuset ketik cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup di /sys/fs/cgroup/cpu,cpuacct ketik cgroup ( rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup pada /sys/fs/cgroup/devices ketik cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on / sys/fs/cgroup/freezer jenis cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup pada /sys/fs/cgroup/net_cls,net_prio ketik cgroup (rw,nosuid,nodev,noexec,relatime ,net_cls,net_prio)
cgroup di /sys/fs/cgroup/blkio ketik cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup di /sys/fs/cgroup/perf_event ketik cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 pada /proc/sys/fs/binfmt_misc ketik autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,langsung)
mqueue aktif /dev/mqueue ketik mqueue (rw,relatime)
debug pada /sys/kernel/debug ketik debugfs (rw,relatime)
hugetlbfs aktif /dev/hugepages ketik hugetlbfs (rw,relatime)
rpc_pipefs aktif /run/ rpc_pipefs ketik rpc_pipefs (rw,relatime)
fusectl on /sys/fs/fuse/connections ketik fusectl (rw,relatime)
server1.example.com:/testvol on /mnt/glusterfs ketik fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
[email protected]:/#

... dan...

df -h
[email protected]:/# df -h
Ukuran Sistem File yang Digunakan Tersedia Penggunaan% Dipasang di
/dev/sda1 57G 1.1G 53G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4,6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
server1.example.com:/testvol 57G 21G 34G 39% /mnt/glusterfs
[email protected]:/#

Daripada memasang bagian GlusterFS secara manual pada klien, Anda dapat memodifikasi /etc/fstab sehingga bagian tersebut dipasang secara otomatis saat klien melakukan booting.

Buka /etc/fstab dan tambahkan baris berikut:

nano /etc/fstab
[...]server1.example.com:/testvol /mnt/glusterfs default glusterfs,_netdev 0 0

(Sekali lagi, alih-alih server1.example.com Anda juga dapat menggunakan server2.example.com!)

Untuk menguji apakah /etc/fstab Anda yang dimodifikasi berfungsi, reboot klien:

boot ulang

Setelah reboot, Anda akan menemukan share di output...

df -h

... dan...

pasang

4 Menguji Replikasi GlusterFS

Sekarang mari kita buat beberapa file uji pada share GlusterFS:

client1.example.com:

sentuh /mnt/glusterfs/test1
sentuh /mnt/glusterfs/test2

Sekarang mari kita periksa direktori /data di server1.example.com dan server2.example.com. File test1 dan test2 harus ada di setiap node:

server1.example.com/server2.example.com:

ls -l /data/testvol
[email protected]:/# ls -l /data/testvol/
total 0
-rw-r--r-- 2 root root 0 Mar 23 2016 test1
- rw-r--r-- 2 root root 0 Mar 23 2016 test2

Sekarang kita mematikan server1.example.com dan menambahkan/menghapus beberapa file pada share GlusterFS di client1.example.com.

server1.example.com:

shutdown -h sekarang

client1.example.com:

touch /mnt/glusterfs/test3
touch /mnt/glusterfs/test4
rm -f /mnt/glusterfs/test2

Perubahan harus terlihat di direktori /data/testvol di server2.example.com:

server2.example.com:

ls -l /data/testvol
[email protected]:/# ls -l /data/testvol
total 8
-rw-r--r-- 2 root root 0 Mar 23 08:06 test1
-rw-r--r-- 2 root root 0 23 Mar 08:09 test3
-rw-r--r-- 2 root root 0 23 Mar 08:09 test4
[email protected] :/#

Mari kita boot server1.example.com lagi dan lihat direktori /data:

server1.example.com:

ls -l /data/testvol
[email protected]:/# ls -l /data/testvol
total 0
-rw-r--r-- 2 root root 0 23 Mar 08:06 test1
-rw-r--r-- 2 root root 0 23 Mar 08:09 test3
-rw-r--r-- 2 root root 0 23 Mar 08:09 test4
[email protected] :/#

Seperti yang Anda lihat, server1.example.com secara otomatis menyinkronkan yang diubah. Jika perubahan belum disinkronkan, maka ini mudah diperbaiki, yang perlu kita lakukan hanyalah menjalankan perintah baca pada bagian GlusterFS di client1.example.com, mis.:

client1.example.com:

ls -l /mnt/glusterfs/
[email protected]:/# ls -l /mnt/glusterfs/
total 0
-rw-r--r-- 1 root root 0 Mar 23 08:06 test1
-rw-r--r-- 1 root root 0 23 Mar 08:09 test3
-rw-r--r-- 1 root root 0 23 Mar 08:09 test4
[email protected ]:/#

  • GlusterFS:http://www.gluster.org/
  • Dokumentasi GlusterFS: http://gluster.readthedocs.org/en/latest/
  • Debian:http://www.debian.org/

Debian
  1. Penyimpanan Terdistribusi Di Empat Node Penyimpanan Dengan GlusterFS 3.2.x Di Ubuntu 12.10

  2. Penyimpanan Replika Terdistribusi Di Empat Node Penyimpanan Dengan GlusterFS 3.2.x Di Ubuntu 12.10

  3. Striping Di Empat Node Penyimpanan Dengan GlusterFS 3.2.x Di Ubuntu 12.10

  1. Replikasi File Otomatis (Cermin) Di Dua Server Penyimpanan Dengan GlusterFS 3.2.x Di Ubuntu 12.10

  2. Penyimpanan Ketersediaan Tinggi Dengan GlusterFS Di Debian Lenny - Replikasi File Otomatis Di Dua Server Penyimpanan

  3. Penyimpanan Terdistribusi Di Empat Node Penyimpanan Dengan GlusterFS Di Debian Lenny

  1. Penyimpanan Replika Terdistribusi Di Empat Node Penyimpanan Dengan GlusterFS Di Debian Lenny

  2. Striping Di Empat Node Penyimpanan Dengan GlusterFS Di Debian Lenny

  3. Penyimpanan Ketersediaan Tinggi Dengan GlusterFS 3.0.x Pada Debian Squeeze - Replikasi File Otomatis Di Dua Server Penyimpanan