본문 바로가기

리눅스

[리눅스] glusterfs 설치 및 설정

728x90

glusterfs 설치 및 설정

테스트 환경

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.1 LTS
Release:	22.04
Codename:	jammy

시스템 역할 및 현황

역할 호스트명 아이피 브릭 비고
서버 노드 kube-node1 192.168.0.61 /gfsvolume/gv0  
서버 노드 kube-node2 192.168.0.62 /gfsvolume/gv0  
서버 노드 kube-node3 192.168.0.63 /gfsvolume/gv0  
클라이언트 kube-control1 192.168.0.51 /mnt/gfsvol  

** 노드를 hosts 파일(/etc/hosts)에 등록 또는 네임서버(DNS)에 등록

구성(Architecture)

출처-https://docs.gluster.org/en/latest/images/GlusterFS_Translator_Stack.png

로컬 패키지 인덱스 업데이트(APT 패키지 인덱스 업데이트)

apt update

glusterfs 서버 설치

glusterfs-server 패키지 설치

apt install -y glusterfs-server

glusterfsd(glusterfs) 버전 정보 확인

glusterfsd --version
$ glusterfsd --version
glusterfs 10.1
Repository revision: git://git.gluster.org/glusterfs.git
Copyright (c) 2006-2016 Red Hat, Inc. <https://www.gluster.org/>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
It is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3
or later), or the GNU General Public License, version 2 (GPLv2),
in all cases as published by the Free Software Foundation.
gluster --version

glusterfs(glusterd) 시작하고 활성화하여 시스템 부팅 시 실행

systemctl --now enable glusterd
$ systemctl --now enable glusterd
Created symlink /etc/systemd/system/multi-user.target.wants/glusterd.service → /lib/systemd/system/glusterd.service.

glusterfs(glusterd) 상태 확인

systemctl status glusterd
$ systemctl status glusterd
● glusterd.service - GlusterFS, a clustered file-system server
     Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-12-01 22:19:01 KST; 15s ago
       Docs: man:glusterd(8)
    Process: 5058 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCCESS)
   Main PID: 5059 (glusterd)
      Tasks: 9 (limit: 4575)
     Memory: 7.0M
        CPU: 1.951s
     CGroup: /system.slice/glusterd.service
             └─5059 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO

Dec 01 22:18:59 kube-node1 systemd[1]: Starting GlusterFS, a clustered file-system server...
Dec 01 22:19:01 kube-node1 systemd[1]: Started GlusterFS, a clustered file-system server.

glusterfs 서버 구성

방화벽 설정

- 방화벽 끄기

systemctl disable ufw
systemctl stop ufw

glusterfs 신뢰할 수 있는 풀 구성(trusted storage pool)

- glusterfs 스토리지 풀(storage pool) 확인

gluster peer status
$ gluster peer status
Number of Peers: 0

node1(kube-node1)에서 스토리지 풀 구성

gluster peer probe kube-node2
$ gluster peer probe kube-node2
peer probe: success
gluster peer probe kube-node3
$ gluster peer probe kube-node3
peer probe: success

스토리지 풀 상태 확인

gluster peer status
$ gluster peer status
Number of Peers: 2

Hostname: kube-node2
Uuid: 4d9df9a9-c67f-4420-a1ac-35c5bd204839
State: Peer in Cluster (Connected)

Hostname: kube-node3
Uuid: 3709e86b-ef0c-4e00-96dd-1e44abbd675c
State: Peer in Cluster (Connected)

스토리지 풀 목록 확인

gluster pool list
$ gluster pool list
UUID					Hostname  	State
4d9df9a9-c67f-4420-a1ac-35c5bd204839	kube-node2	Connected
3709e86b-ef0c-4e00-96dd-1e44abbd675c	kube-node3	Connected
ceaefa19-5c2b-4fc9-9000-add8d8761213	localhost 	Connected

glusterfs 분산 볼륨 설정

브릭 디렉터리(brick directory) 생성

mkdir -pv /gfsvolume/gv0
$ mkdir -pv /gfsvolume/gv0
mkdir: created directory '/gfsvolume'
mkdir: created directory '/gfsvolume/gv0'
df -h -TP /gfsvolume
$ df -h -TP /gfsvolume
Filesystem            Type  Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv--0 ext4   48G   15G   31G  32% /

스토리지 볼륨 생성

- 분산 볼륨(distributed volume) : gluster volume create gfs_vol transport tcp

gluster volume create gfs_vol transport tcp kube-node1:/gfsvolume/gv0 kube-node2:/gfsvolume/gv0 kube-node3:/gfsvolume/gv0 force
$ gluster volume create gfs_vol transport tcp kube-node1:/gfsvolume/gv0 kube-node2:/gfsvolume/gv0 kube-node3:/gfsvolume/gv0 force
volume create: gfs_vol: success: please start the volume to access data

- 복제 볼륨(replicate volume) : gluster volume create gfs_vol replica 3

gluster volume create gfs_vol replica 3 kube-node1:/gfsvolume/gv0 kube-node2:/gfsvolume/gv0 kube-node3:/gfsvolume/gv0 force

gfs_vol 볼륨 정보 확인

 - Type: Distribute

 - Status: Created

gluster volume info
$ gluster volume info

Volume Name: gfs_vol
Type: Distribute
Volume ID: 66de0bf4-b9c4-4242-b612-33294f56fac2
Status: Created
Snapshot Count: 0
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: kube-node1:/gfsvolume/gv0
Brick2: kube-node2:/gfsvolume/gv0
Brick3: kube-node3:/gfsvolume/gv0
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

gfs_vol 볼륨 상태 확인

gluster volume status
$ gluster volume status
Volume gfs_vol is not started

gfs_vol 시작

gluster volume start gfs_vol
$ gluster volume start gfs_vol
volume start: gfs_vol: success

gfs_vol 볼륨 정보 확인

 - Type: Distribute
 - Status: Started

gluster volume info gfs_vol
$ gluster volume info gfs_vol

Volume Name: gfs_vol
Type: Distribute
Volume ID: 66de0bf4-b9c4-4242-b612-33294f56fac2
Status: Started
Snapshot Count: 0
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: kube-node1:/gfsvolume/gv0
Brick2: kube-node2:/gfsvolume/gv0
Brick3: kube-node3:/gfsvolume/gv0
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

gfs_vol 볼륨 상태 확인

gluster volume status

볼륨 프로파일링

각 노드의 성능에 대한 자세한 정보를 보기 위해 볼륨을 프로파일링한다

gluster volume profile gfs_vol start
$ gluster volume profile gfs_vol start
Starting volume profile on gfs_vol has been successful
gluster volume profile gfs_vol info

gluster 사용법

$ gluster --help
 peer help                - display help for peer commands
 volume help              - display help for volume commands
 volume bitrot help       - display help for volume bitrot commands
 volume quota help        - display help for volume quota commands
 snapshot help            - display help for snapshot commands
 global help              - list global commands

glusterfs 클라이언트 설치

apt update
apt install -y glusterfs-client

마운트 포인트 생성(디렉터리 생성)

mkdir -pv /mnt/gfsvol

분산 볼륨(distributed volume) 마운트

mount -t glusterfs kube-node1:/gfs_vol /mnt/gfsvol/

마운트된 파일시스템(filesystem) 확인

df -h -TP /mnt/gfsvol
$ df -h -TP /mnt/gfsvol
Filesystem          Type            Size  Used Avail Use% Mounted on
kube-node1:/gfs_vol fuse.glusterfs  144G   42G   97G  31% /mnt/gfsvol

시스템 부팅 시 볼륨 자동 마운트(/etc/fstab 등록)

kube-node1:/gfs_vol /mnt/gfsvol glusterfs defaults,_netdev 0 0

fstab(/etc/fstab) 편집

 

참고URL

- GlusterFS 구축하기 https://scbyun.com/482

- Gluster Docs : https://docs.gluster.org/en/main/Install-Guide/Install/

 

728x90