Glusterfs
먼저 /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