Glusterfs

Storage

 

먼저 /dev/sdb/ 하드 추가 후 파티션 포멧 작업 실행

 

fdisk -l /dev/sdb

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1        2048          2097151  256000   83  Linux

 

xfs 파일 시스템으로 포멧

mkfs.xfs /dev/sdb1

 

마운트할 새로운 디렉토리 생성

mkdir /gluster1

# 마운트 실행
mount /dev/sdb1 /gluster1

# 자동 마운트 실행
echo '/dev/sdb1 /gluster1 xfs defaults 0 0' >> /etc/fstab

 

GlusterFS 설치

yum -y install centos-release-gluster
yum -y install glusterfs-server

 

firewall 설정

 

firewall-cmd --permanent --add-service=glusterfs
success

firewall-cmd --permanent --add-port=24007/tcp 
success

firewall-cmd --reload
success

 

Peer 생성 작업

gluster peer probe 10.1.3.110

# 확인 작업
gluster peer status
Number of Peers: 1
.
.
State: Peer in Cluster (Connected)

 

Peering 완료 후 glusterfs volume 생성

# 10.1.3.100 에서 설정
mkdir /gluster1/gv0

# 10.1.3.110 에서 설정
mkdir /gluster1/gv0

 

이제 2중 하나 GlusterFS 서버에서

gluster volume create gv0 replica 2 transport tcp 10.1.3.100:/gluster1/gv0 10.1.3.110:/gluster1/gv0
volume create: gv0: success: please start the volume to access data

 

GlusterFS Volume 시작 하기

gluster volume start gv0
volume start: gv0: success

 

GlusterFS Volume 상태를 확인 해보면

 

Volume Name: gv0
Type: Distribute
Volume ID: 42307952-b960-4f9d-85b5-00d8bbed7acf
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: 10.1.3.100:/gluster1/gv0
Brick2: 10.1.3.110:/gluster1/gv0

 

이제 웹서버 쪽에서 glusterfs volume을 마운트 해야 된다

그 작업 전에 glusterfs-client를 설치 해야 된다

 

웹서버 쪽에서

sudo apt-get install glusterfs-client

 

설치 완료 후 마운트할 대상 디렉토리 생성

mkdir /mnt/glusterfs

 

이제 마운트 하면

mount -t glusterfs 10.1.3.100:/gv0 /mnt/glusterfs

 

마운트 확인

df -h
.
.
10.1.3.100:/gv0                            3.0G   196M  2.8G    7%   /mnt/glusterfs

 

웹서버에 자동 마운트 설정

sudo vi /etc/fstab
.
.
10.1.3.100:/gv0      /mnt/glusterfs   glusterfs defaults,_netdev,x-systemd.requires=network-online.target   0 0

 

이제 ‘static’ 과 ‘media’ 디렉토리를 Django directory 안에서 GlusterFS 마운트 되어 있는 디렉토리로 욺기는 작업

sudo mv django/PROmet/media /mnt/glusterfs
sudo mv django/PROmet/static /mnt/glusterfs

 

이제 static 과 media 경로 지정을 수정 하러 settings.py 로 이동

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join('/mnt/glusterfs/static')
STATICFILES = [STATIC_ROOT]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join('/mnt/glusterfs/media')

 

마지막으로 Apache 설정 파일에도 static 과 media 파일 경로 수정

sudo vi /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /mnt/glusterfs/static
<Directory /mnt/glusterfs/static>
Require all granted
</Directory>
<Directory /home/ubuntu/django/PROmet/config>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
        Alias /media /mnt/glusterfs/media
        <Directory "/mnt/glusterfs/:media">
                Options FollowSymLinks
                Order allow,deny
                Allow from all
                Require all granted
        </Directory>
WSGIPassAuthorization On
WSGIDaemonProcess Test python-path=/home/ubuntu/django/PROmet/  python-home=/home/ubuntu/django/myprojectenv
WSGIProcessGroup Test
WSGIScriptAlias / /home/ubuntu/django/PROmet/config/wsgi.py
</VirtualHost>

 

마지막으로 아파치 재시작 및 권한 설정

sudo chown -R :www-data /mnt/glusterfs/media/
sudo chmod 757 /mnt/glusterfs/media
sudo chown -R :www-data /mnt/glusterfs
sudo chown -R :www-data /mnt/glusterfs/static
sudo chmod 755 /mnt/glusterfs
sudo service apache2 restart

 


 

테스트

 

10.1.3.100 에서

ls /gluster1/gv0
media mysql static

 

10.1.3.110 에서 자동 replica 되고 있는걸 확인 가능

ls /gluster1/gv0
media mysql staticlss

 

사이트도 문제 없이 올라오고

 

GlusterFS Replica 볼륨 생성 후 웹 서버 Static, Media 파일 마운트 작업 과정

# 마운트할 새로운 디렉토리 생성
mkdir /gluster1

# 마운트 실행
mount /dev/sdb1 /gluster1

# 자동 마운트 실행
echo '/dev/sdb1 /gluster1 xfs defaults 0 0' >> /etc/fstab

# GlusterFS 설치
yum -y install centos-release-gluster
yum -y install glusterfs-server

# Firewall 설정
firewall-cmd --permanent --add-service=glusterfs
success
firewall-cmd --permanent --add-port=24007/tcp
success
firewall-cmd --reload
success

# Peer 생성 작업
gluster peer probe 10.1.3.110

# Peer 상태 확인
gluster peer status
Number of Peers: 1
.
.
State: Peer in Cluster (Connected)

# Peering 완료 후 glusterfs volume 생성 작업
mkdir /gluster1/gv0
# 10.1.3.110 에서 설정

mkdir /gluster1/gv0
# 10.1.3.100 에서 설정

# 2중 하나 GlusterFS 서버에서 replica 볼륨 생성 
gluster volume create gv0 replica 2 transport tcp 10.1.3.100:/gluster1/gv0 10.1.3.110:/gluster1/gv0
volume create: gv0: success: please start the volume to access data

# GlusterFS Volume 시작 하기
gluster volume start gv0
volume start: gv0: success
GlusterFS Volume 상태를 확인 해보면
Volume Name: gv0
Type: Distribute
Volume ID: 42307952-b960-4f9d-85b5-00d8bbed7acf
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: 10.1.3.100:/gluster1/gv0
Brick2: 10.1.3.110:/gluster1/gv0

# 웹서버 쪽에서 glusterfs volume 마운트 작업

# glusterfs-client를 웹서버들에 설치
sudo apt-get install glusterfs-client

# 설치 완료 후 마운트할 대상 디렉토리 생성 및 마운트
mkdir /mnt/glusterfs
mount -t glusterfs 10.1.3.100:/gv0 /mnt/glusterfs

# 마운트 확인 작업
df -h
.
.
10.1.3.100:/gv0 3.0G 196M 2.8G 7% /mnt/glusterfs

# 웹서버에 자동 마운트 설정
sudo vi /etc/fstab
.
.
10.1.3.100:/gv0 /mnt/glusterfs glusterfs defaults,_netdev,x-systemd.requires=network-online.target 0 0

# Static과 media 파일들을 Glusterfs 볼륩이 마운트 되어 있는 디렉토리로 욺기는 작업
sudo mv django/PROmet/media /mnt/glusterfs
sudo mv django/PROmet/static /mnt/glusterfs

# static과 media 경로 지정을 settings.py 파일에과 아파치 설정 파일에서 수정
# 장고 settings.py 파일
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join('/mnt/glusterfs/static')
STATICFILES = [STATIC_ROOT]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join('/mnt/glusterfs/media')

# 아파치 설정 파일
.
.
Alias /static /mnt/glusterfs/static
<Directory /mnt/glusterfs/static>
.
.
Alias /media /mnt/glusterfs/media
<Directory "/mnt/glusterfs/:media">
.
.

# 마지막으로 아파치 재시작 및 권한 설정
sudo chown -R :www-data /mnt/glusterfs/media/
sudo chmod 757 /mnt/glusterfs/media
sudo chown -R :www-data /mnt/glusterfs
sudo chown -R :www-data /mnt/glusterfs/static
sudo chmod 755 /mnt/glusterfs
sudo service apache2 restart

← back