GNU/Linux >> Linux の 問題 >  >> Debian

Ubuntu 16.04 /Debian8にGlusterFSをインストールして構成する

テクノロジーの世界では、アプリケーション/ユーザーがデータにアクセスできるようにするために、データを高可用性に保つことが常に重要です。ここでは、データを複数のボリューム/ノードに分散することで高可用性を実現しています。

クライアントマシン/ユーザーは、ローカルストレージのようにストレージにアクセスできます。ユーザーがGlusterストレージにデータを作成するたびに、データは他のストレージノードにミラーリング/配布されます。

GlusterFSとは何ですか?

GlusterFSは、メディアストリーミング、クラウドストレージ、CDN(コンテンツ配信ネットワーク)などのデータ集約型のワークロードに適した、オープンソースのスケーラブルなネットワークファイルシステムです。 GlusterFSは、最初はGluster Incによって開発され、その後、買収の結果としてRedhatによって開発されました。

用語:

以下は、この記事全体で使用する重要な用語です。

レンガ –は、信頼できるストレージプール内のサーバー上の基本ストレージ(ディレクトリ)です。

ボリューム –はレンガの論理的なコレクションです。

クラスター –は、リンクされたコンピューターのグループであり、単一のコンピューターとして連携して動作します。

分散ファイルシステム –データが複数のストレージノードに分散され、クライアントがネットワーク経由でデータにアクセスできるようにするファイルシステム。

クライアント –ボリュームをマウントするマシンです。

サーバー –は、データが保存される実際のファイルシステムがホストされているマシンです。

複製 –高い冗長性を実現するために、データの複数のコピーを作成します。

ヒューズ –は、非特権ユーザーがカーネルコードを編集せずに独自のファイルシステムを作成できるようにするロード可能なカーネルモジュールです。

glusterd –は、信頼できるストレージプール内のすべてのサーバーで実行されるデーモンです。

RAID – Redundant Array of Inexpensive Disks(RAID)は、冗長性によってストレージの信頼性を向上させるテクノロジーです。

ボリューム:

前述のように、ボリュームはブリックのコレクションであり、読み取りや書き込みなどのほとんどのgluster操作はボリューム上で行われます。 GlusterFSは、要件に基づいてさまざまなタイプのボリュームをサポートします。ストレージサイズのスケーリング、パフォーマンスの向上、またはその両方に適しています。

この記事では、Ubuntu 16.04 / Debian 8でレプリケートされたGlusterFSボリュームを構成します。このガイドは、Ubuntu 14.04 /Ubuntu12.04などの以前のバージョンのUbuntuでも機能するはずです。

複製されたGlusterfsボリューム RAID 1のようなものです 、およびボリュームは、すべてのブリックのデータの正確なコピーを維持します。ボリュームの作成中にレプリカの数を決定できるため、2つのレプリカでボリュームを作成するには少なくとも2つのブリックが必要であり、3つのレプリカのボリュームを作成するには3つのブリックが必要です。

このボリュームは、より優れたデータの信頼性とデータの冗長性を提供します。

残りの種類のGlusterFSボリュームについて読んでみませんか。

要件:

ここでは、2つのレプリカを使用してGlusterFSボリュームを構成します。 1GBのメモリを搭載した64ビットシステム(仮想または物理)が2つあり、各システムに予備のハードディスクが1つあることを確認してください。

ホスト名 IPアドレス OS メモリ ディスク 目的
gluster1.itzgeek.local 192.168.12.16 Ubuntu 16.04 LTS 1GB / dev / sdb(5GB) ストレージノード1
gluster2.itzgeek.local 192.168.12.17 Debian 8 1GB / dev / sdb(5GB) ストレージノード2
client.itzgeek.local 192.168.12.8 CentOS 7 / Debian NA NA クライアントマシン
デモのために、ここではストレージノードごとに異なるLinuxディストリビューションを使用しています。クラスタ全体で単一のLinuxディストリビューションを使用することをお勧めします。これにより、本番環境で発生する問題のトラブルシューティングが容易になります。

DNSの構成:

GlusterFSコンポーネントは名前の解決にDNSを使用するため、DNSを構成するか、ホストエントリを設定します。ご使用の環境にDNSがない場合は、/ etc / hostsファイルを変更し、それに応じて更新してください。

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

GlusterFSリポジトリの追加:

インストールに進む前に、両方のストレージノードでGlusterFSリポジトリを構成する必要があります。指示に従って、リポジトリをシステムに追加します。

Debian:

httpsトランザクションのサポートパッケージをインストールします。

sudo apt-get install -y lsb-release
sudo apt-get install -y apt-transport-https

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

GlusterFSのインストール:

システムにリポジトリを追加したら、GlusterFSのインストールに取り掛かることができます。

リポジトリキャッシュを更新します。

sudo apt-get update

次のコマンドを使用してGlusterFSパッケージをインストールします。

sudo apt-get install -y glusterfs-server

すべてのglusterノードでglusterfs-serverサービスを開始します。

sudo service glusterfs-server start

glusterfsサービスが正常に実行されていることを確認します。

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.

ファイアウォールの構成:

ファイアウォールを無効にするか、クラスター内のすべての接続を許可するようにファイアウォールを構成する必要があります。

sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT

ストレージの追加:

マシンに予備のハードディスクが1台あるとすると、 / dev / sdb ここでレンガに使用するものです。以下に示すように、スペアハードディスクに単一のパーティションを作成します。

両方のノードで以下の手順を実行する必要があります。

sudo fdisk /dev/sdb

作成したパーティションを選択したファイルシステムでフォーマットします。

sudo mkfs.ext4 /dev/sdb1

/ data / glusterというディレクトリにディスクをマウントします 。

sudo mkdir -p /data/gluster
sudo mount /dev/sdb1 /data/gluster

/ etc / fstabにエントリを追加します 再起動後もマウントを永続的に保つため。

echo "/dev/sdb1 /data/gluster ext4 defaults 0 0" | sudo tee --append /etc/fstab

Ubuntu 16.04でGlusterFSを構成する:

ボリュームを作成する前に、 gluster2.itzgeek.local を追加して、信頼できるストレージプールを作成する必要があります。 。 GlusterFS構成コマンドは、クラスター内の任意の1つのサーバーで実行でき、他のすべてのサーバーでも同じコマンドを実行します。

ここでは、 gluster1.itzgeek.localですべてのGlusterFSコマンドを実行します ノード。

raj@gluster1:~$ sudo gluster peer probe gluster2.itzgeek.local
peer probe: success.

信頼できるストレージプールのステータスを確認します。

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)

ストレージプールを一覧表示します。

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

GlusterFSボリュームのセットアップ:

gvol0」という名前のブリック(ディレクトリ)を作成します 」は、両方のノードにマウントされたファイルシステムにあります。

sudo mkdir -p /data/gluster/gvol0

複製されたボリュームを使用するので、「 gvol0」という名前のボリュームを作成します。 」と2つのレプリカ。

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

ボリュームを開始します。

raj@gluster1:~$ sudo gluster volume start gvol0
volume start: gvol0: success

作成したボリュームの状態を確認してください。

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

GlusterFSクライアントのセットアップ:

glusterfs-clientをインストールします GlusterFSファイルシステムのマウントをサポートするパッケージ。すべてのコマンドをrootとして実行します ユーザー。

$ su -

### CentOS / RHEL ###
yum install -y glusterfs-client

### Ubuntu / Debian ###
apt-get install -y glusterfs-client

GlusterFSファイルシステムをマウントするためのディレクトリを作成します。

mkdir -p /mnt/glusterfs

次に、GlusterFSファイルシステムを / mnt / glusterfsにマウントします 次のコマンドを使用します。

mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt/glusterfs

gluster2.itzgeek.localを使用することもできます gluster1.itzgeek.comの代わりに 上記のコマンドで。

マウントされたGlusterFSファイルシステムを確認します。

[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

以下のコマンドを使用して、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

以下のエントリを/etc / fstabに追加します システムの起動時に自動的にマウントします。

gluster1.itzgeek.local:/gvol0 /mnt/glusterfs glusterfs  defaults,_netdev 0 0

GlusterFSレプリケーションと高可用性のテスト:

GlusterFSサーバー側:

レプリケーションを確認するには、作成したGlusterFSボリュームを同じストレージノードにマウントします。

raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt
raj@gluster2:~$ sudo mount -t glusterfs gluster2.itzgeek.local:/gvol0 /mnt

/ mnt内のデータ 両方のノードのディレクトリは常に同じになります(レプリケーション)。

GlusterFSクライアント側:

client.itzgeek.local。のマウントされたファイルシステムにいくつかのファイルを作成しましょう。

touch /mnt/glusterfs/file1
touch /mnt/glusterfs/file2

作成したファイルを確認します。

[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

/ mnt 内に同じデータがあるかどうか、両方のGlusterFSノードをテストします 。

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

ご存知のとおり、 gluster1.itzgeek.localからGlusterFSボリュームをマウントしました client.itzgeek.local 、今度はノードをシャットダウンしてボリュームの高可用性をテストするときです。

raj@gluster1:~$ sudo poweroff

ここで、ファイルの可用性をテストします。ノードがダウンしていても、最近作成したファイルが表示されます。

[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
マウントされたGlusterFSファイルシステムでコマンドの実行が遅くなる場合があります。これは、GlusterFSが gluster2.itzgeek.localに切り替わったためです。 client.itzgeek.local gluster1.itzgeek.localに到達できません 。

GlusterFSファイルシステムにさらにいくつかのファイルを作成して、レプリケーションを確認します。

touch /mnt/glusterfs/file3
touch /mnt/glusterfs/file4

ファイル数を確認します。

[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

gluster1以降 ダウンすると、すべてのデータが gluster2.itzgeek.localに書き込まれるようになります 高可用性のため。次に、node1の電源を入れます( gluster1.itzgeek.local

/ mntを確認してください gluster1.itzgeekk.localの;ディレクトリに4つのファイルがすべて表示されます。これにより、レプリケーションが期待どおりに機能していることが確認されます。

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

以上です。


Debian
  1. Debian11にMariadb10をインストールして設定する方法

  2. Debian11にMongoDB5をインストールして設定する方法

  3. Debian11にRedis6をインストールして設定する方法

  1. Debian10にFail2banをインストールして設定する

  2. Debian11にdockerをインストールして設定する方法

  3. UbuntuまたはDebianにcgiを使用してApacheとPHPをインストールして構成します

  1. Debian9にRedisをインストールして設定する方法

  2. Debian9にRedmineをインストールして設定する方法

  3. Debian/UbuntuにWebminをインストールして設定する方法