2014년 12월 6일 토요일

7대의 서버로 glusterfs 구성하기

서버 7대로 glusterfs 구축하기

Glusterfs란?

  • Redhat에서 지원하는 오픈소스 파일시스템으로써 수천 Petabyte급의 대용량에 수천개의 클라이언트가 접속하여 사용 가능한 scale-out 방식 분산 파일 시스템
  • 기존의 분산 파일 시스템에 비해 비교적 구성이 간단하며, 대용량 및 대규모의 I/O처리 능력이 뛰어남

Glusterfs 기본 구성도



플랫폼: hyper-v
메모리: 1GB 이상
HDD: 32GB
OS: Centos6.5
volume: distributed volume

설치하기

  1. 필수 유틸과 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
  2. 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
  3. 방화벽 설정 변경하기

    #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
  4. 데몬 시작 및 chkconfig 등록하기

    #/etc/init.d/glusterd start

    #chkconfig --level 345 glusterd on

설정하기

  1. /etc/hosts 편집하기

    - gluster1~7까지 7개 서버에 모두 똑같이 등록해야 합니다.
  2. 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)

  3. 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 대역을 이용하는 사용자에게 허용
  4. Glusterfs client 설정하기

    - Gluster7에서 다음의 과정을 수행합니다.
    #modprobe fuse  // fuse 모듈 로딩
    #dmesg |grepi 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 이름으로 추가 된 디스크 확인
  5. 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
  6. 생성된 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  // 조금 전 마운트 된 디스크 용량 변화 확인
  7. Glusterfs 용량 재분배

    -기존에 저장되어 있던 파일들을 새롭게 추가된 서버들로 재분배하는 방법

    #gluster volume rebalance glus_vol start

    #gluster volume rebalance glus_vol status
  8. Glusterfs Tuning
    - glusterfs는 튜닝의 방법에 따라서 속도 및 활용도의 차이가 많이 난다고 하니 상황에 따라서 알맞게 변경하여 사용하시면 됩니다.

    #gluster volume set glus_vol performance.cache-size 256MB(cache-size 자유롭게 변경 가능)

    여기부터는 brick 및 volume 삭제 방법


  9. 볼륨에 추가된 Brick 제거하는 방법

    #gluster volume remove-brick glus_vol gluster5:/data1/gluster gluster6:/data1/gluster

  10. 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

댓글 1개: