서버 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
많은 도움이 되었습니다. 감사합니다.
답글삭제