서버 7대로 glusterfs 구축하기
Glusterfs란?
- Redhat에서 지원하는 오픈소스 파일시스템으로써 수천 Petabyte급의 대용량에 수천개의 클라이언트가 접속하여 사용 가능한 scale-out 방식 분산 파일 시스템
- 기존의 분산 파일 시스템에 비해 비교적 구성이 간단하며, 대용량 및 대규모의 I/O처리 능력이 뛰어남
Glusterfs 기본 구성도
플랫폼: hyper-v
메모리: 1GB 이상
HDD: 32GB
OS: Centos6.5
volume: distributed volume
설치하기
- 필수 유틸과 glusterfs 다운 받기
#yum install -y wget fuse fuse-libs fuse-devel
#cd /usr/local/src
#wget http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.3/CentOS/epel-6Server/x86_64/glusterfs-libs-3.5.3-1.el6.x86_64.rpm
#wget http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.3/CentOS/epel-6Server/x86_64/glusterfs-3.5.3-1.el6.x86_64.rpm
#wget http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.3/CentOS/epel-6Server/x86_64/glusterfs-fuse-3.5.3-1.el6.x86_64.rpm
#wget http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.3/CentOS/epel-6Server/x86_64/glusterfs-cli-3.5.3-1.el6.x86_64.rpm
#wget http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.3/CentOS/epel-6Server/x86_64/glusterfs-api-3.5.3-1.el6.x86_64.rpm
#wget http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.3/CentOS/epel-6Server/x86_64/glusterfs-server-3.5.3-1.el6.x86_64.rpm
#wget http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.3/CentOS/epel-6Server/x86_64/glusterfs-geo-replication-3.5.3-1.el6.x86_64.rpm
- glusterfs 설치하기
#rpm -Uvh glusterfs-libs-3.5.3-1.el6.x86_64.rpm
#rpm -Uvh glusterfs-3.5.3-1.el6.x86_64.rpm
#rpm -Uvh glusterfs-fuse-3.5.3-1.el6.x86_64.rpm
#rpm -Uvh glusterfs-cli-3.5.3-1.el6.x86_64.rpm
#rpm -Uvh glusterfs-api-3.5.3-1.el6.x86_64.rpm
#rpm -Uvh glusterfs-server-3.5.3-1.el6.x86_64.rpm
#rpm -Uvh glusterfs-geo-replication-3.5.3-1.el6.x86_64.rpm
- 방화벽 설정 변경하기
#vi /etc/sysconfig/iptables
gluster는 111, 24007, 24008, 24009~(glusterfs 전체 볼륨수), nfs를 이용해서 마운트 할 경우에는 38465~(gluster 서버 수)로 해주시면 됩니다.
여기서는 volume 32개를 기준으로 하였고 nfs 마운트를 사용하지 않으나 기본적으로 38465 포트를 추가시켰습니다.-A INPUT -m state –state NEW -m tcp -p tcp –dport 111 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 24007 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 24008 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 24009:24041 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 38465 -j ACCEPT - 데몬 시작 및 chkconfig 등록하기
#/etc/init.d/glusterd start
#chkconfig –level 345 glusterd on
설정하기

- /etc/hosts 편집하기
– gluster1~7까지 7개 서버에 모두 똑같이 등록해야 합니다.
- Peer 등록하기
– Gluster1에만 등록하면 자동으로 해당 서버들에 등록이 됩니다.
#gluster peer probe gluster2
#gluster peer probe gluster3
#gluster peer probe gluster4
#gluster peer status //peer 상태 확인
잘 등록이 되었다면 다음과 같은 메시지 확인 가능
Number of Peers: 3
Hostname: gluster4
Uuid: a661b6d6-395b-422a-a401-96cf8da6b7c3
State: Peer in Cluster (Connected)Hostname: gluster3
Uuid: 0a927512-0913-4cd3-bfd5-5d509250f6c4
State: Peer in Cluster (Connected)Hostname: gluster2
Uuid: 6a6cf4df-f690-4d29-bd1e-5baa0c11b2ec
State: Peer in Cluster (Connected)
- Volume 만들기
-Gluster volume의 종류a.Distributed volume
-> 파일을 gluster 서버 노드의 각 Brick으로 분산해서 저장(기본)b.Replicated volume
-> 파일을 gluster 서버 노드의 각 Brick으로 분산해서 저장함. 지정된 replication 수 만큼의 복제 파일을 생성c.Stripe volume
-> 여러 서버의 여러 Brick에 파일을 stripe 수로 만큼 나누어 저장함. 단 volume 생성 시 정의한 brick의 수와 Stripe 수가 일치해야함d.Distributed stripe volume
-> 여러 gluster 서버 노드의 각 Brick 으로 파일을 stripe 수만큼 나누어 저장함e.Distributed replicated volume
-> multiple한 replicated volume 구성을 형성할 때 사용할 수 있음-Distributed volume 생성하기#mkdir /data1/gluster // brick으로 사용할 디렉토리#gluster volume create glus_vol gluster1:/data1/gluster gluster2:/data1/gluster gluster3:/data1/gluster gluster4:/data1/gluster#gluster volume info all // 생성된 volume 확인하기#gluster volume start glus_vol // gluster volume 적용-접근 권한 설정하기#gluster volume set glus_vol auth.allow 192.168.137.* // 192.168.137.0/24 대역을 이용하는 사용자에게 허용 -
Glusterfs client 설정하기
– Gluster7에서 다음의 과정을 수행합니다.
#modprobe fuse // fuse 모듈 로딩#dmesg |grep –i fuse // fuse 모듈 로딩 상태 확인#mkdir /gluster // mount 위치#mount –f glusterfs –o log-devel=WARNING, log-file=/var/log/gluster.log gluster1:/glus_vol /gluster#mount#df –h // 목록 중 volume 이름으로 추가 된 디스크 확인 -
Client에서 파일 생성 테스트#for i in `seq -w 1 100`; do cp -rp /var/log/messages* /gluster/copy-test-$i; done#ls –lA /gluster | wc –l-gluster1~4에서 파일 업로드 상태 확인#ls /data1/gluster
-
생성된 volume에 추가로 peer 등록하기-Gluster1에서 명령 실행#gluster peer probe gluster5 gluster6#gluster volume add-brick glus_vol gluster5:/data1/gluster gluster6:/data1/gluster#gluster volume info all // 새로 등록된 peer 확인-Client에서 mount 상태 확인#df –h // 조금 전 마운트 된 디스크 용량 변화 확인
-
Glusterfs 용량 재분배-기존에 저장되어 있던 파일들을 새롭게 추가된 서버들로 재분배하는 방법#gluster volume rebalance glus_vol start#gluster volume rebalance glus_vol status
-
Glusterfs Tuning
– glusterfs는 튜닝의 방법에 따라서 속도 및 활용도의 차이가 많이 난다고 하니 상황에 따라서 알맞게 변경하여 사용하시면 됩니다.#gluster volume set glus_vol performance.cache-size 256MB(cache-size 자유롭게 변경 가능)
여기부터는 brick 및 volume 삭제 방법
-
볼륨에 추가된 Brick 제거하는 방법
#gluster volume remove-brick glus_vol gluster5:/data1/gluster gluster6:/data1/gluster
-
Volume 삭제하는 방법-기존에 만들었던 volume을 완벽히 지우기 위해서는 속성값을 변경해줘야 합니다.#gluster volume stop glus_vol#gluster volume delete glus_vol#setattr –x trusted.glusterfs.volume-id /data1/gluster#setattr –x trusted.gfid /data1/gluster#rm –rf /data1/gluster/.glusterfs